mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-29 06:30:39 +00:00
lit: Fix infinite recursion when an out-of-tree test root is located inside the source test root.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179402 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f2c2b20090
commit
406ef44707
@ -147,20 +147,31 @@ def getTestsInSuite(ts, path_in_suite, litConfig,
|
||||
|
||||
# Check for nested test suites, first in the execpath in case there is a
|
||||
# site configuration and then in the source path.
|
||||
file_execpath = ts.getExecPath(path_in_suite + (filename,))
|
||||
subpath = path_in_suite + (filename,)
|
||||
file_execpath = ts.getExecPath(subpath)
|
||||
if dirContainsTestSuite(file_execpath, litConfig):
|
||||
sub_ts, subiter = getTests(file_execpath, litConfig,
|
||||
testSuiteCache, localConfigCache)
|
||||
sub_ts, subpath_in_suite = getTestSuite(file_execpath, litConfig,
|
||||
testSuiteCache)
|
||||
elif dirContainsTestSuite(file_sourcepath, litConfig):
|
||||
sub_ts, subiter = getTests(file_sourcepath, litConfig,
|
||||
testSuiteCache, localConfigCache)
|
||||
sub_ts, subpath_in_suite = getTestSuite(file_sourcepath, litConfig,
|
||||
testSuiteCache)
|
||||
else:
|
||||
# Otherwise, continue loading from inside this test suite.
|
||||
subiter = getTestsInSuite(ts, path_in_suite + (filename,),
|
||||
litConfig, testSuiteCache,
|
||||
localConfigCache)
|
||||
sub_ts = None
|
||||
|
||||
# If the this directory recursively maps back to the current test suite,
|
||||
# disregard it (this can happen if the exec root is located inside the
|
||||
# current test suite, for example).
|
||||
if sub_ts is ts:
|
||||
continue
|
||||
|
||||
# Otherwise, load from the nested test suite, if present.
|
||||
if sub_ts is not None:
|
||||
subiter = getTestsInSuite(sub_ts, subpath_in_suite, litConfig,
|
||||
testSuiteCache, localConfigCache)
|
||||
else:
|
||||
subiter = getTestsInSuite(ts, subpath, litConfig, testSuiteCache,
|
||||
localConfigCache)
|
||||
|
||||
N = 0
|
||||
for res in subiter:
|
||||
N += 1
|
||||
|
7
utils/lit/tests/Inputs/exec-discovery-in-tree/lit.cfg
Normal file
7
utils/lit/tests/Inputs/exec-discovery-in-tree/lit.cfg
Normal file
@ -0,0 +1,7 @@
|
||||
# Verify that the site configuration was loaded.
|
||||
if config.test_source_root is None or config.test_exec_root is None:
|
||||
lit.fatal("No site specific configuration")
|
||||
|
||||
config.name = 'exec-discovery-in-tree-suite'
|
||||
config.suffixes = ['.txt']
|
||||
config.test_format = lit.formats.ShTest()
|
@ -0,0 +1,4 @@
|
||||
import os
|
||||
config.test_exec_root = os.path.dirname(__file__)
|
||||
config.test_source_root = os.path.dirname(config.test_exec_root)
|
||||
lit.load_config(config, os.path.join(config.test_source_root, "lit.cfg"))
|
@ -0,0 +1 @@
|
||||
# RUN: true
|
@ -79,3 +79,18 @@
|
||||
#
|
||||
# CHECK-ASEXEC-EXACT-TEST: -- Testing: 1 tests, 1 threads --
|
||||
# CHECK-ASEXEC-EXACT-TEST: PASS: top-level-suite :: subdir/test-three
|
||||
|
||||
|
||||
# Check that we don't recurse infinitely when loading an site specific test
|
||||
# suite located inside the test source root.
|
||||
#
|
||||
# RUN: %{lit} \
|
||||
# RUN: %{inputs}/exec-discovery-in-tree/obj/ \
|
||||
# RUN: -j 1 --no-execute --show-suites -v > %t.out
|
||||
# RUN: FileCheck --check-prefix=CHECK-ASEXEC-INTREE < %t.out %s
|
||||
#
|
||||
# CHECK-ASEXEC-INTREE: exec-discovery-in-tree-suite - 1 tests
|
||||
# CHECK-ASEXEC-INTREE-NEXT: Source Root: {{.*/exec-discovery-in-tree$}}
|
||||
# CHECK-ASEXEC-INTREE-NEXT: Exec Root : {{.*/exec-discovery-in-tree/obj$}}
|
||||
# CHECK-ASEXEC-INTREE-NEXT: -- Testing: 1 tests, 1 threads --
|
||||
# CHECK-ASEXEC-INTREE-NEXT: PASS: exec-discovery-in-tree-suite :: test-one
|
||||
|
Loading…
Reference in New Issue
Block a user