From 5b2efc28fd193701d2d05780c7b8d8ee5bf75c31 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Thu, 29 Aug 2013 00:48:45 +0000 Subject: [lit] Factor out Run class to capture configuration + discovered tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189550 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/lit/lit/main.py | 39 +++++++++++++++++++++------------------ utils/lit/lit/run.py | 8 ++++++++ 2 files changed, 29 insertions(+), 18 deletions(-) create mode 100644 utils/lit/lit/run.py (limited to 'utils') diff --git a/utils/lit/lit/main.py b/utils/lit/lit/main.py index b84140f90f..76259599ac 100755 --- a/utils/lit/lit/main.py +++ b/utils/lit/lit/main.py @@ -12,6 +12,7 @@ import math, os, platform, random, re, sys, time, threading, traceback import lit.ProgressBar import lit.LitConfig import lit.Test +import lit.run import lit.util import lit.discovery @@ -291,12 +292,14 @@ def main(builtinParameters = {}): params = userParams, config_prefix = opts.configPrefix) - tests = lit.discovery.find_tests_for_inputs(litConfig, inputs) + # Perform test discovery. + run = lit.run.Run(litConfig, + lit.discovery.find_tests_for_inputs(litConfig, inputs)) if opts.showSuites or opts.showTests: # Aggregate the tests by suite. suitesAndTests = {} - for t in tests: + for t in run.tests: if t.suite not in suitesAndTests: suitesAndTests[t.suite] = [] suitesAndTests[t.suite].append(t) @@ -323,7 +326,7 @@ def main(builtinParameters = {}): sys.exit(0) # Select and order the tests. - numTotalTests = len(tests) + numTotalTests = len(run.tests) # First, select based on the filter expression if given. if opts.filter: @@ -332,26 +335,26 @@ def main(builtinParameters = {}): except: parser.error("invalid regular expression for --filter: %r" % ( opts.filter)) - tests = [t for t in tests - if rex.search(t.getFullName())] + run.tests = [t for t in run.tests + if rex.search(t.getFullName())] # Then select the order. if opts.shuffle: - random.shuffle(tests) + random.shuffle(run.tests) else: - tests.sort(key = lambda t: t.getFullName()) + run.tests.sort(key = lambda t: t.getFullName()) # Finally limit the number of tests, if desired. if opts.maxTests is not None: - tests = tests[:opts.maxTests] + run.tests = run.tests[:opts.maxTests] # Don't create more threads than tests. - opts.numThreads = min(len(tests), opts.numThreads) + opts.numThreads = min(len(run.tests), opts.numThreads) extra = '' - if len(tests) != numTotalTests: + if len(run.tests) != numTotalTests: extra = ' of %d' % numTotalTests - header = '-- Testing: %d%s tests, %d threads --'%(len(tests),extra, + header = '-- Testing: %d%s tests, %d threads --'%(len(run.tests), extra, opts.numThreads) progressBar = None @@ -367,8 +370,8 @@ def main(builtinParameters = {}): print(header) startTime = time.time() - display = TestingProgressDisplay(opts, len(tests), progressBar) - provider = TestProvider(tests, opts.maxTime) + display = TestingProgressDisplay(opts, len(run.tests), progressBar) + provider = TestProvider(run.tests, opts.maxTime) try: import win32api @@ -387,14 +390,14 @@ def main(builtinParameters = {}): print('Testing Time: %.2fs'%(time.time() - startTime)) # Update results for any tests which weren't run. - for test in tests: + for test in run.tests: if test.result is None: test.setResult(lit.Test.Result(lit.Test.UNRESOLVED, '', 0.0)) # List test results organized by kind. hasFailures = False byCode = {} - for test in tests: + for test in run.tests: if test.result.code not in byCode: byCode[test.result.code] = [] byCode[test.result.code].append(test) @@ -414,12 +417,12 @@ def main(builtinParameters = {}): print(' %s' % test.getFullName()) sys.stdout.write('\n') - if opts.timeTests and tests: + if opts.timeTests and run.tests: # Order by time. test_times = [(test.getFullName(), test.result.elapsed) - for test in tests] + for test in run.tests] lit.util.printHistogram(test_times, title='Tests') - + for name,code in (('Expected Passes ', lit.Test.PASS), ('Expected Failures ', lit.Test.XFAIL), ('Unsupported Tests ', lit.Test.UNSUPPORTED), diff --git a/utils/lit/lit/run.py b/utils/lit/lit/run.py new file mode 100644 index 0000000000..8a9f87b201 --- /dev/null +++ b/utils/lit/lit/run.py @@ -0,0 +1,8 @@ +class Run(object): + """ + This class represents a concrete, configured testing run. + """ + + def __init__(self, lit_config, tests): + self.lit_config = lit_config + self.tests = tests -- cgit v1.2.3