summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2013-08-29 00:48:45 +0000
committerDaniel Dunbar <daniel@zuster.org>2013-08-29 00:48:45 +0000
commit5b2efc28fd193701d2d05780c7b8d8ee5bf75c31 (patch)
tree0b301f105410bf5e040ee21559936662ae9373e4 /utils
parent8253cc047de523fd2097e4d85417316ff9a37ad5 (diff)
downloadllvm-5b2efc28fd193701d2d05780c7b8d8ee5bf75c31.tar.gz
llvm-5b2efc28fd193701d2d05780c7b8d8ee5bf75c31.tar.bz2
llvm-5b2efc28fd193701d2d05780c7b8d8ee5bf75c31.tar.xz
[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
Diffstat (limited to 'utils')
-rwxr-xr-xutils/lit/lit/main.py39
-rw-r--r--utils/lit/lit/run.py8
2 files changed, 29 insertions, 18 deletions
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