> 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 <mailto: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 
> <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
>  
> <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 <mailto:lldb-commits@lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits 
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits>


Thanks,
- Enrico
📩 egranata@.com ☎️ 27683

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to