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

Reply via email to