Testsuite: never pick up .T files in .run directories
authorThomas Miedema <thomasmiedema@gmail.com>
Tue, 21 Jun 2016 07:52:36 +0000 (09:52 +0200)
committerThomas Miedema <thomasmiedema@gmail.com>
Mon, 27 Jun 2016 16:45:15 +0000 (18:45 +0200)
And use os.walk instead of calling os.listdir many times. The testsuite
driver should be able to handle backward slashes on Windows now.

testsuite/driver/runtests.py
testsuite/driver/testlib.py

index 917003b..b2054fe 100644 (file)
@@ -257,7 +257,7 @@ print('Timeout is ' + str(config.timeout))
 if config.rootdirs == []:
     config.rootdirs = ['.']
 
-t_files = findTFiles(config.rootdirs)
+t_files = list(findTFiles(config.rootdirs))
 
 print('Found', len(t_files), '.T files...')
 
index 41e0fce..d4fcf13 100644 (file)
@@ -1933,19 +1933,14 @@ def cleanup():
 # Return a list of all the files ending in '.T' below directories roots.
 
 def findTFiles(roots):
-    # It would be better to use os.walk, but that
-    # gives backslashes on Windows, which trip the
-    # testsuite later :-(
-    return [filename for root in roots for filename in findTFiles_(root)]
-
-def findTFiles_(path):
-    if os.path.isdir(path):
-        paths = [os.path.join(path, x) for x in os.listdir(path)]
-        return findTFiles(paths)
-    elif path[-2:] == '.T':
-        return [path]
-    else:
-        return []
+    for root in roots:
+        for path, dirs, files in os.walk(root, topdown=True):
+            # Never pick up .T files in uncleaned .run directories.
+            dirs[:] = [dir for dir in sorted(dirs)  
+                           if not dir.endswith(testdir_suffix)]
+            for filename in files:
+                if filename.endswith('.T'):
+                    yield os.path.join(path, filename)
 
 # -----------------------------------------------------------------------------
 # Output a test summary to the specified file object