From 53323113700d26ccea4573d22de31e5ff619bb8f Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 1 Aug 2009 03:35:40 +0000 Subject: [PATCH] lit: Don't use threads when only running one test, or with -j 1. llvm-svn: 77766 --- clang/utils/test/MultiTestRunner.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/clang/utils/test/MultiTestRunner.py b/clang/utils/test/MultiTestRunner.py index cccc6e2..93532eb 100755 --- a/clang/utils/test/MultiTestRunner.py +++ b/clang/utils/test/MultiTestRunner.py @@ -190,6 +190,24 @@ def findConfigPath(root): raise ValueError,"Unable to find config file %r" % kConfigName +def runTests(opts, provider): + # If only using one testing thread, don't use threads at all; this lets us + # profile, among other things. + if opts.numThreads == 1: + t = Tester(provider) + t.run() + return + + # Otherwise spin up the testing threads and wait for them to finish. + testers = [Tester(provider) for i in range(opts.numThreads)] + for t in testers: + t.start() + try: + for t in testers: + t.join() + except KeyboardInterrupt: + sys.exit(1) + def main(): global options from optparse import OptionParser, OptionGroup @@ -323,19 +341,13 @@ def main(): if not progressBar: print header - display = TestingProgressDisplay(opts, len(tests), progressBar) - provider = TestProvider(cfg, opts, tests, display) + # Don't create more threads than tests. + opts.numThreads = min(len(tests), opts.numThreads) - testers = [Tester(provider) for i in range(opts.numThreads)] startTime = time.time() - for t in testers: - t.start() - try: - for t in testers: - t.join() - except KeyboardInterrupt: - sys.exit(1) - + display = TestingProgressDisplay(opts, len(tests), progressBar) + provider = TestProvider(cfg, opts, tests, display) + runTests(opts, provider) display.finish() if not opts.quiet: -- 2.7.4