lit: When finding nested test suites, check first in the execpath in case there
authorDaniel Dunbar <daniel@zuster.org>
Tue, 15 Sep 2009 20:09:17 +0000 (20:09 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 15 Sep 2009 20:09:17 +0000 (20:09 +0000)
is a site configuration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81902 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit.py

index bc43c505740f8329ad38e2188ffb0777e47a4e4b..f9e75cd03fb797716c8228cf416ff0f578cf6264 100755 (executable)
@@ -264,19 +264,28 @@ def getTestsInSuite(ts, path_in_suite, litConfig,
         if filename == 'Output' or filename in lc.excludes:
             continue
 
-        filepath = os.path.join(source_path, filename)
-        if os.path.isdir(filepath):
-            # If this directory contains a test suite, reload it.
-            if dirContainsTestSuite(filepath):
-                for res in getTests(filepath, litConfig,
-                                    testSuiteCache, localConfigCache):
-                    yield res
-            else:
-                # Otherwise, continue loading from inside this test suite.
-                for res in getTestsInSuite(ts, path_in_suite + (filename,),
-                                           litConfig, testSuiteCache,
-                                           localConfigCache):
-                    yield res
+        # Ignore non-directories.
+        file_sourcepath = os.path.join(source_path, filename)
+        if not os.path.isdir(file_sourcepath):
+            continue
+        
+        # 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,))
+        if dirContainsTestSuite(file_execpath):
+            subiter = getTests(file_execpath, litConfig,
+                               testSuiteCache, localConfigCache)
+        elif dirContainsTestSuite(file_sourcepath):
+            subiter = getTests(file_sourcepath, litConfig,
+                               testSuiteCache, localConfigCache)
+        else:
+            # Otherwise, continue loading from inside this test suite.
+            subiter = getTestsInSuite(ts, path_in_suite + (filename,),
+                                      litConfig, testSuiteCache,
+                                      localConfigCache)
+        
+        for res in subiter:
+            yield res
 
 def runTests(numThreads, litConfig, provider, display):
     # If only using one testing thread, don't use threads at all; this lets us