Summary:
Automatically upgrade debugging experience (single process, no thread
pool) when:
1) we only run a single test
2) user specifies `-j1`
Details:
Fix `--max-failures` in single process mode. Option did not have an
effect in single process mode.
Add display feedback for single process mode. Adapted test.
Improve argument checking (require positive integers).
`--single-process` is now essentially an alias for `-j1`. Should we
remove it?
Reviewers: rnk
Differential Revision: https://reviews.llvm.org/D58249
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@354068
91177308-0d34-0410-b5e6-
96231b3b80d8
def __init__(self, progname, path, quiet,
useValgrind, valgrindLeakCheck, valgrindArgs,
- noExecute, debug, isWindows, singleProcess,
+ noExecute, debug, isWindows,
params, config_prefix = None,
maxIndividualTestTime = 0,
maxFailures = None,
self.valgrindUserArgs = list(valgrindArgs)
self.noExecute = noExecute
self.debug = debug
- self.singleProcess = singleProcess
self.isWindows = bool(isWindows)
self.params = dict(params)
self.bashPath = None
useValgrind = False,
valgrindLeakCheck = False,
valgrindArgs = [],
- singleProcess=False,
noExecute = False,
debug = False,
isWindows = (platform.system()=='Windows'),
if not args:
parser.error('No inputs specified')
- if opts.numThreads is None:
- opts.numThreads = lit.util.detectCPUs()
+ if opts.numThreads is not None and opts.numThreads <= 0:
+ parser.error("Option '--threads' or '-j' requires positive integer")
- if opts.maxFailures == 0:
- parser.error("Setting --max-failures to 0 does not have any effect.")
+ if opts.maxFailures is not None and opts.maxFailures <= 0:
+ parser.error("Option '--max-failures' requires positive integer")
if opts.echoAllCommands:
opts.showOutput = True
valgrindLeakCheck = opts.valgrindLeakCheck,
valgrindArgs = opts.valgrindArgs,
noExecute = opts.noExecute,
- singleProcess = opts.singleProcess,
debug = opts.debug,
isWindows = isWindows,
params = userParams,
if opts.maxTests is not None:
run.tests = run.tests[:opts.maxTests]
+ # Determine number of workers to use.
+ if opts.singleProcess:
+ opts.numThreads = 1
+ elif opts.numThreads is None:
+ opts.numThreads = lit.util.detectCPUs()
+
# Don't create more threads than tests.
opts.numThreads = min(len(run.tests), opts.numThreads)
except:
pass
- extra = ''
- if len(run.tests) != numTotalTests:
- extra = ' of %d' % numTotalTests
- header = '-- Testing: %d%s tests, %d threads --'%(len(run.tests), extra,
- opts.numThreads)
+ extra = (' of %d' % numTotalTests) if (len(run.tests) != numTotalTests) else ''
+ threads = 'single process' if (opts.numThreads == 1) else ('%d threads' % opts.numThreads)
+ header = '-- Testing: %d%s tests, %s --' % (len(run.tests), extra, threads)
progressBar = None
if not opts.quiet:
if opts.succinct and opts.useProgressBar:
be given an UNRESOLVED result.
"""
# Don't do anything if we aren't going to run any tests.
- if not self.tests or jobs == 0:
+ if not self.tests:
return
# Save the display object on the runner so that we can update it from
self.failure_count = 0
self.hit_max_failures = False
- if self.lit_config.singleProcess:
+ if jobs == 1:
global child_lit_config
child_lit_config = self.lit_config
for test_index, test in enumerate(self.tests):
result = worker_run_one_test(test_index, test)
self.consume_test_result(result)
+ if self.hit_max_failures:
+ break
else:
self.execute_tests_in_pool(jobs, max_time)
# CHECK: Failing Tests (27)
# CHECK: Failing Tests (1)
# CHECK: Failing Tests (2)
-# CHECK: error: Setting --max-failures to 0 does not have any effect.
+# CHECK: error: Option '--max-failures' requires positive integer
quiet=False,
useValgrind=False,
valgrindLeakCheck=False,
- singleProcess=False,
valgrindArgs=[],
noExecute=False,
debug=False,