Sorry for the email spam. I still think the buildbot should run the version in lldb/test though. `test` should be a top-level folder, it makes it easy for people who clone the repo to instantly look and figure out how our test suite works. So I think that's the flow that the buildbot should test. Developer convenience should come second.
On Mon, Nov 2, 2015 at 11:28 AM Zachary Turner <ztur...@google.com> wrote: > If you want to have a way to run the test suite without typing a long > relative path to go into the packages tree, then one thing that might work > is to make a new file packages/Python/dotest.py. > > Then make it a copy of test/dotest.py. Not real crazy about copying code, > but let me know what you think about that. > > On Mon, Nov 2, 2015 at 11:24 AM Zachary Turner <ztur...@google.com> wrote: > >> Don't change your buildbot to not use it. That's an error. >> packages/Python/lldbsuite/test/dotest *must* be imported, as it depends on >> its __init__.py being run. If your buildbot doesn't use it anymore, then I >> think the patch I just submitted (r251819) will break your buildbot, >> because I added this code: >> >> >> if __name__ == "__main__": >> print(__file__ + " is for use as a module only. It should not be run >> as a standalone script.") >> sys.exit(-1) >> >> to packages/Python/lldbsuite/test/dotest/dotest.py >> >> On Mon, Nov 2, 2015 at 11:22 AM Pavel Labath <lab...@google.com> wrote: >> >>> BTW, is lldb/test/dotest.py here to stay? I thought it was there just to >>> avoid breaking anybody who runs dotest directly (instead of ninja >>> check-lldb), and therefore we will remove it once everybody gets a chance >>> to migrate (I have already changed our buildbots to not use it). >>> >>> Is that correct or I am misunderstanding something? >>> >>> pl >>> >>> >>> On 2 November 2015 at 11:11, Zachary Turner via lldb-commits < >>> lldb-commits@lists.llvm.org> wrote: >>> >>>> I looked into this some more, and unfortunately I can't reproduce it. >>>> That being said, I'm not convinced this patch fixes anything. The reason >>>> is that when you import something, whether it be through the `__import__` >>>> function or the `import` statement, the module itself is cached in >>>> `sys.modules`. Whether the *name* for that module is introduced globally >>>> (as is done in this patch) or locally (as is done when you use an `import` >>>> statement) is irrelevant. Because the next time someone else imports it, >>>> it will still find the same instance of the module in `sys.modules` and >>>> just create a new name. It won't import it anew. >>>> >>>> If this patch does actually fix something, I think it must be a >>>> coincidence. That said, I do have an idea as to what the problem might >>>> be. Or at the very least, I know of a problem that would definitely lead >>>> to strange behavior. >>>> >>>> `lldbsuite` is now a package, and it relies on the code in its >>>> `__init__.py` being run. If you run >>>> `packages/python/lldbsuite/test/dotest.py` manually, then `__init__.py` >>>> doesn't get run, and `lldbExec` doesn't get initialized properly. >>>> >>>> Of course, this isn't what you're doing, but it *is* what `dosep` does >>>> internally. `dosep` manually constructs a path to >>>> `packages/python/lldbsuite/test/dotest.py` >>>> and execs it. I have a patch that fixes this and makes `dosep` exec >>>> `lldb/test/dotest.py` instead, which will then lead to the package being >>>> imported, and `__init__.py` being run, and everything being initialized >>>> properly. >>>> >>>> I'm going to commit that patch by itself, and then I will submit a >>>> followup patch that reverts the change from this patch (since I can't >>>> reproduce this problem, I can't check whether or not my patch fixes it). >>>> So if my revert breaks you again, feel free to revert the revert. Although >>>> if there's any way you can investigate a bit to understand what's going on >>>> a little bit more, but I would be very grateful. In particular, I wonder >>>> about the following things: >>>> >>>> 1) When lldbExec is not initialized properly, is this in the same >>>> process instance that you ran from the command line, or is it in the >>>> multiprocessing fork? >>>> 2) If you add code to `lldbsuite/__init__.py` to print the process id >>>> and the value of `lldb_root`, and then add code in `dotest.py` to print the >>>> process id and the value of lldbExec, what does the output look like? >>>> (Each line should be printed up to twice, due to the multiprocessing >>>> fork). >>>> >>>> Anyway, I'll get those 2 patches submitted to fix the dosep issue and >>>> revert this change, and see what happens. >>>> >>>> On Fri, Oct 30, 2015 at 1:53 PM Jim Ingham <jing...@apple.com> wrote: >>>> >>>>> Note, the other important step was that you had to have an lldb >>>>> installed in /usr/bin/lldb that FAILED this test. If you have a more >>>>> recent lldb there, the test will succeed, and you won't notice you aren't >>>>> testing your newly built sources. >>>>> >>>>> Jim >>>>> >>>>> > On Oct 30, 2015, at 1:25 PM, Enrico Granata via lldb-commits < >>>>> lldb-commits@lists.llvm.org> wrote: >>>>> > >>>>> > I think what I was doing is be in lldb/test and do >>>>> > >>>>> > $ ./dotest.py ../packages/python/lldbsuite/functionalities/completion >>>>> > >>>>> >> On Oct 30, 2015, at 12:22 PM, Zachary Turner <ztur...@google.com> >>>>> wrote: >>>>> >> >>>>> >> Can you give me a command line which will reproduce the original >>>>> problem? Because I ran through the entire test suite and nothing failed, >>>>> so I want to make sure we're doing the same thing. I'm still a little >>>>> confused about how this happens, but I plan to look into it when I'm back >>>>> on Monday and see if I can understand it better to identify a better fix. >>>>> >> >>>>> >> On Fri, Oct 30, 2015 at 11:58 AM Enrico Granata <egran...@apple.com> >>>>> wrote: >>>>> >>> On Oct 29, 2015, at 11:31 PM, Zachary Turner <ztur...@google.com> >>>>> wrote: >>>>> >>> >>>>> >>> Wow. That's a weird problem. Thanks for finding it! >>>>> >>> >>>>> >>> Would it work if we move the definition of the `lldbtest_config` >>>>> class into lldbsuite/test/__init__.py? This way the configuration should >>>>> be part of the global package state of the lldbsuite.test package, which >>>>> all the tests are already members of the same package, so they wouldn't >>>>> even need to import anything (I think). >>>>> >>> >>>>> >> >>>>> >> I think the problem is exactly that we want lldbtest_config to be >>>>> *global* state and not package local state. >>>>> >> Honestly, I think if we are not content with the fix as it stands, >>>>> the right way would be to change the way unittest2 imports test cases as >>>>> to >>>>> use the package-level global scope instead of the global global state as >>>>> it >>>>> is now. >>>>> >> >>>>> >>> On Oct 30, 2015, at 8:32 AM, Zachary Turner <ztur...@google.com> >>>>> wrote: >>>>> >>> >>>>> >>> I'm also still a little confused why this worked before my patch. >>>>> How is unittest2 importing the individual tests in a way that behaves >>>>> differently when dotest is a package (now) versus a standalone script >>>>> (before)? >>>>> >>> >>>>> >> >>>>> >> That is a good question. One to which “because Python” is the only >>>>> answer I can think of. I suspect scripts live at the global scope anyway, >>>>> so we were just getting lucky with those imports making it through >>>>> correctly. >>>>> >> >>>>> >>> On Thu, Oct 29, 2015 at 6:12 PM Enrico Granata via lldb-commits < >>>>> lldb-commits@lists.llvm.org> wrote: >>>>> >>> Author: enrico >>>>> >>> Date: Thu Oct 29 20:09:54 2015 >>>>> >>> New Revision: 251678 >>>>> >>> >>>>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=251678&view=rev >>>>> >>> Log: >>>>> >>> Some test cases that need the lldbExec path were failing because >>>>> lldbExec was turning out to be None even though it was being validly set >>>>> by >>>>> dotest.py >>>>> >>> >>>>> >>> It turns out that lldbtest_config was being imported locally to >>>>> "lldbsuite.test" instead of globally, so when the test cases got >>>>> individually brought by a global import via __import__ by unittest2, they >>>>> did not see the lldbtest_config import, and ended up importing a new >>>>> separate copy of it, with lldbExec unset >>>>> >>> >>>>> >>> This is a simple hackaround that brings lldbtest_config to global >>>>> visibility and makes sure the configuration data is correctly shared >>>>> >>> >>>>> >>> >>>>> >>> Modified: >>>>> >>> lldb/trunk/packages/Python/lldbsuite/test/dotest.py >>>>> >>> >>>>> >>> Modified: lldb/trunk/packages/Python/lldbsuite/test/dotest.py >>>>> >>> URL: >>>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/dotest.py?rev=251678&r1=251677&r2=251678&view=diff >>>>> >>> >>>>> ============================================================================== >>>>> >>> --- lldb/trunk/packages/Python/lldbsuite/test/dotest.py (original) >>>>> >>> +++ lldb/trunk/packages/Python/lldbsuite/test/dotest.py Thu Oct 29 >>>>> 20:09:54 2015 >>>>> >>> @@ -21,6 +21,10 @@ for available options. >>>>> >>> """ >>>>> >>> >>>>> >>> from __future__ import print_function >>>>> >>> +# this module needs to have global visibility, otherwise test >>>>> cases >>>>> >>> +# will import it anew in their local namespace, essentially >>>>> losing access >>>>> >>> +# to all the configuration data >>>>> >>> +globals()['lldbtest_config'] = __import__('lldbtest_config') >>>>> >>> >>>>> >>> import use_lldb_suite >>>>> >>> >>>>> >>> @@ -42,7 +46,6 @@ import test_results >>>>> >>> from test_results import EventBuilder >>>>> >>> import inspect >>>>> >>> import unittest2 >>>>> >>> -import lldbtest_config >>>>> >>> import test_categories >>>>> >>> >>>>> >>> import six >>>>> >>> >>>>> >>> >>>>> >>> _______________________________________________ >>>>> >>> lldb-commits mailing list >>>>> >>> lldb-commits@lists.llvm.org >>>>> >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >>>>> >> >>>>> >> >>>>> >> Thanks, >>>>> >> - Enrico >>>>> >> 📩 egranata@.com ☎️ 27683 >>>>> >> >>>>> > >>>>> > >>>>> > Thanks, >>>>> > - Enrico >>>>> > 📩 egranata@.com ☎️ 27683 >>>>> > >>>>> > _______________________________________________ >>>>> > lldb-commits mailing list >>>>> > lldb-commits@lists.llvm.org >>>>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >>>>> >>>>> >>>> _______________________________________________ >>>> lldb-commits mailing list >>>> lldb-commits@lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >>>> >>>> >>>
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits