diff options
author | Florent Xicluna <florent.xicluna@gmail.com> | 2010-03-30 16:31:14 (GMT) |
---|---|---|
committer | Florent Xicluna <florent.xicluna@gmail.com> | 2010-03-30 16:31:14 (GMT) |
commit | 75c6676916398a61201cddcf323529cca2eb0e49 (patch) | |
tree | e66dcb78dcd923e68bad6412f7db541d4d5be7fb /Lib | |
parent | 58b6566b0afe561249d4ae910936b14483e81338 (diff) | |
download | cpython-75c6676916398a61201cddcf323529cca2eb0e49.zip cpython-75c6676916398a61201cddcf323529cca2eb0e49.tar.gz cpython-75c6676916398a61201cddcf323529cca2eb0e49.tar.bz2 |
#8263: Now regrtest.py will report a failure if it receives a KeyboardInterrupt (SIGINT).
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/test/regrtest.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index daabc04..75716dc 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -373,6 +373,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, skipped = [] resource_denieds = [] environment_changed = [] + interrupted = False if findleaks: try: @@ -428,17 +429,17 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, print "== ", os.getcwd() alltests = findtests(testdir, stdtests, nottests) - tests = tests or args or alltests + selected = tests or args or alltests if single: - tests = tests[:1] + selected = selected[:1] try: - next_single_test = alltests[alltests.index(tests[0])+1] + next_single_test = alltests[alltests.index(selected[0])+1] except IndexError: next_single_test = None if randomize: random.seed(random_seed) print "Using random seed", random_seed - random.shuffle(tests) + random.shuffle(selected) if trace: import trace tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix], @@ -465,7 +466,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, resource_denieds.append(test) if forever: - def test_forever(tests=list(tests)): + def test_forever(tests=list(selected)): while True: for test in tests: yield test @@ -473,15 +474,13 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, return tests = test_forever() else: - tests = iter(tests) + tests = iter(selected) if use_mp: from threading import Thread from Queue import Queue from subprocess import Popen, PIPE - from collections import deque debug_output_pat = re.compile(r"\[\d+ refs\]$") - pending = deque() output = Queue() def tests_and_args(): for test in tests: @@ -539,6 +538,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, raise KeyboardInterrupt # What else? accumulate_result(test, result) except KeyboardInterrupt: + interrupted = True pending.close() for worker in workers: worker.join() @@ -561,8 +561,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, print "Re-running test %r in verbose mode" % test runtest(test, True, quiet, testdir, huntrleaks) except KeyboardInterrupt: - # print a newline separate from the ^C - print + interrupted = True break except: raise @@ -580,8 +579,15 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, if module not in save_modules and module.startswith("test."): test_support.unload(module) + if interrupted: + # print a newline after ^C + print + print "Test suite interrupted by signal SIGINT." + omitted = set(selected) - set(good) - set(bad) - set(skipped) + print count(len(omitted), "test"), "omitted:" + printlist(omitted) if good and not quiet: - if not bad and not skipped and len(good) > 1: + if not bad and not skipped and not interrupted and len(good) > 1: print "All", print count(len(good), "test"), "OK." if print_slow: @@ -646,7 +652,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, if runleaks: os.system("leaks %d" % os.getpid()) - sys.exit(len(bad) > 0) + sys.exit(len(bad) > 0 or interrupted) STDTESTS = [ |