[Lldb-commits] [PATCH] D42763: Build each testcase variant in its own subdirectory and remove the srcdir lock file
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Feb 2 02:39:42 PST 2018
labath added inline comments.
================
Comment at: packages/Python/lldbsuite/test/api/listeners/TestListener.py:26
TestBase.setUp(self)
- self.build()
----------------
aprantl wrote:
> labath wrote:
> > I'm confused by these changes. I was under the impression that setUp() runs before each test method (and hence this should be NFC). Can you explain the reasoning behind this?
> (see also my previous comment)
> `setUp` runs before everything else, but it runs once per testcase and `self.testMethodName` is not initialized yet. Therefore we can only run `self.build()` in `self.setUp()` in NO_DEBUG_INFO_TESTCASEs.
I'm not sure where you got the idea that testMethodName is not initialized. It's initialized as one of the first things in Base.setUp (lldbtest.py:776). This also demonstrates that the setUp method is run once *per test function* (as otherwise testMethodName would make no sense; also check out third_party/Python/module/unittest2/unittest2/case.py:379 to see how tests are run).
The problem I think you are having is that self.**debug_info** is not initialized. I was curious at hard it would be to make this work, so I played around with it a bit and the result was D42836.
It's not that I think this change is that bad (although I would prefer if we could keep doing these things in setUp), but I think this could also help make happen the ideas about building binaries once per test case (class) -- the way I'd do that is that I would enumerate all variants that are needed to build in setUpClass (and build them); then the actual test could fetch the corresponding binary according to the variant.
================
Comment at: packages/Python/lldbsuite/test/lldbtest.py:721-728
+ try:
+ os.makedirs(path)
+ except OSError as e:
+ import errno
+ if e.errno != errno.EEXIST:
+ raise
+ if not os.path.isdir(path):
----------------
Can we use the (new) lldbutil.mkdir_p here? If there's some circular dependency, maybe we could move the function somewhere else?
================
Comment at: packages/Python/lldbsuite/test/lldbtest.py:1517-1518
testdir = self.mydir
+ if not testname:
+ testname = self.testMethodName
if self.debug_info:
----------------
Why was this necessary? Could we either always pass the name by argument, or always fetch it from `self`? Maybe it will be possible after `D42836`?
https://reviews.llvm.org/D42763
More information about the lldb-commits
mailing list