| #!/usr/bin/env python |
| |
| """ |
| Run the test suite using a separate process for each test file. |
| """ |
| |
| import os, sys, platform |
| from optparse import OptionParser |
| |
| # Command template of the invocation of the test driver. |
| template = '%s/dotest.py %s -p %s %s' |
| |
| def walk_and_invoke(test_root, dotest_options): |
| """Look for matched file and invoke test driver on it.""" |
| failed = [] |
| passed = [] |
| for root, dirs, files in os.walk(test_root, topdown=False): |
| for name in files: |
| path = os.path.join(root, name) |
| |
| # We're only interested in the test file with the "Test*.py" naming pattern. |
| if not name.startswith("Test") or not name.endswith(".py"): |
| continue |
| |
| # Neither a symbolically linked file. |
| if os.path.islink(path): |
| continue |
| |
| command = template % (test_root, dotest_options if dotest_options else "", name, root) |
| print "Running %s" % (command) |
| if 0 != os.system(command): |
| failed.append(name) |
| else: |
| passed.append(name) |
| return (failed, passed) |
| |
| def main(): |
| test_root = sys.path[0] |
| |
| parser = OptionParser(usage="""\ |
| Run lldb test suite using a separate process for each test file. |
| """) |
| parser.add_option('-o', '--options', |
| type='string', action='store', |
| dest='dotest_options', |
| help="""The options passed to 'dotest.py' if specified.""") |
| |
| opts, args = parser.parse_args() |
| dotest_options = opts.dotest_options |
| |
| system_info = " ".join(platform.uname()) |
| (failed, passed) = walk_and_invoke(test_root, dotest_options) |
| num_tests = len(failed) + len(passed) |
| |
| print "Ran %d tests." % num_tests |
| if len(failed) > 0: |
| print "Failing Tests (%d)" % len(failed) |
| for f in failed: |
| print "FAIL: LLDB (suite) :: %s (%s)" % (f, system_info) |
| sys.exit(1) |
| sys.exit(0) |
| |
| if __name__ == '__main__': |
| main() |