[Lldb-commits] [PATCH] D19215: normalize test file extension for test filenames

Todd Fiala via lldb-commits lldb-commits at lists.llvm.org
Mon Apr 18 12:31:42 PDT 2016


tfiala added a comment.

In http://reviews.llvm.org/D19215#404143, @zturner wrote:

> It seems very strange to me to be changing a .pyc filename to a .py
>  filename.  I think we should try to understand where the .pyc filename is
>  coming from to begin with, and this is just masking the real error.


Testing: 38 test suites, 12 threads
 7 out of 38 test suites processed - TestChar1632T.py

  Traceback (most recent call last):
    File "test/dotest.py", line 7, in <module>
      lldbsuite.test.run_suite()
    File "/Volumes/Data/src/lldb-llvm.org/lldb/packages/Python/lldbsuite/test/dotest.py", line 952, in run_suite
      visit('Test', dirpath, filenames)
    File "/Volumes/Data/src/lldb-llvm.org/lldb/packages/Python/lldbsuite/test/dotest.py", line 747, in visit
      configuration.suite.addTests(unittest2.defaultTestLoader.loadTestsFromName(base))
    File "/Volumes/Data/src/lldb-llvm.org/lldb/third_party/Python/module/unittest2/unittest2/loader.py", line 103, in loadTestsFromName
      module = __import__('.'.join(parts_copy))
    File "/Volumes/Data/src/lldb-llvm.org/lldb/packages/Python/lldbsuite/test/lang/cpp/lambdas/TestLambdas.py", line 4, in <module>
      lldbinline.MakeInlineTest(__file__, globals(), [])
    File "/Volumes/Data/src/lldb-llvm.org/lldb/packages/Python/lldbsuite/test/lldbinline.py", line 210, in MakeInlineTest
      raise Exception("lldbinline file ends with .pyc: {}".format(__file))
  Exception: lldbinline file ends with .pyc: /Volumes/Data/src/lldb-llvm.org/lldb/packages/Python/lldbsuite/test/lang/cpp/lambdas/TestLambdas.pyc

The __file__ for lldbinline.py-based tests is getting set to .pyc via the unittest2 loader.  This callstack comes from inserting this code into lldbinline.py:

  diff --git a/packages/Python/lldbsuite/test/lldbinline.py b/packages/Python/lldbsuite/test/lldbinline.py
  index 4eaa2a7..3eef4ee 100644
  --- a/packages/Python/lldbsuite/test/lldbinline.py
  +++ b/packages/Python/lldbsuite/test/lldbinline.py
  @@ -206,6 +206,10 @@ def MakeInlineTest(__file, __globals, decorators=None):
       __globals.update({test_name : test})
  
       # Store the name of the originating file.o
  -    test.test_filename = __file
  +    if __file is not None and __file.endswith(".pyc"):
  +        raise Exception("lldbinline file ends with .pyc: {}".format(__file))
  +        test.test_filename = __file[0:-1]
  +    else:
  +        test.test_filename = __file
       return test

So - I can either intercept it right there and convert to .py, or I can protect it at the API ingestion level.  If we go with the former, then I want to add an assert to the latter to make sure any cases of this sneaking in are caught.

Since this case was only happening for lldbinline tests, I suspect it was always happening and just wasn't caught.

I'll adjust the patch shortly to have the API ingestion of the test_filename assert on .pyc (and I'll ensure it ends in .py, not just that it *isn't* .pyc).  I'll also fix up the lldbinline case at the point where we grab it from the unittest2 loader code.


http://reviews.llvm.org/D19215





More information about the lldb-commits mailing list