![](https://secure.gravatar.com/avatar/8ac615df352a970211b0e3d94a307c6d.jpg?s=120&d=mm&r=g)
Author: florent.xicluna Date: Tue Mar 30 21:43:09 2010 New Revision: 79508 Log: Merged revisions 79497 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r79497 | florent.xicluna | 2010-03-30 18:31:14 +0200 (mar, 30 mar 2010) | 2 lines #8263: Now regrtest.py will report a failure if it receives a KeyboardInterrupt (SIGINT). ........ Modified: python/branches/py3k/ (props changed) python/branches/py3k/Lib/test/regrtest.py python/branches/py3k/Misc/NEWS Modified: python/branches/py3k/Lib/test/regrtest.py ============================================================================== --- python/branches/py3k/Lib/test/regrtest.py (original) +++ python/branches/py3k/Lib/test/regrtest.py Tue Mar 30 21:43:09 2010 @@ -397,6 +397,7 @@ skipped = [] resource_denieds = [] environment_changed = [] + interrupted = False if findleaks: try: @@ -451,11 +452,11 @@ 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 # Remove all the tests that precede start if it's set. @@ -467,7 +468,7 @@ if randomize: random.seed(random_seed) print("Using random seed", random_seed) - random.shuffle(tests) + random.shuffle(selected) if trace: import trace, tempfile tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix, @@ -496,7 +497,7 @@ 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 @@ -504,15 +505,13 @@ 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: @@ -571,6 +570,7 @@ raise KeyboardInterrupt # What else? accumulate_result(test, result) except KeyboardInterrupt: + interrupted = True pending.close() for worker in workers: worker.join() @@ -593,8 +593,7 @@ print("Re-running test {} in verbose mode".format(test)) runtest(test, True, quiet, testdir, huntrleaks, debug) except KeyboardInterrupt: - # print a newline separate from the ^C - print() + interrupted = True break except: raise @@ -612,8 +611,15 @@ if module not in save_modules and module.startswith("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", end=' ') print(count(len(good), "test"), "OK.") if print_slow: @@ -678,7 +684,7 @@ if runleaks: os.system("leaks %d" % os.getpid()) - sys.exit(len(bad) > 0) + sys.exit(len(bad) > 0 or interrupted) STDTESTS = [ Modified: python/branches/py3k/Misc/NEWS ============================================================================== --- python/branches/py3k/Misc/NEWS (original) +++ python/branches/py3k/Misc/NEWS Tue Mar 30 21:43:09 2010 @@ -963,6 +963,9 @@ - Issue #8248: Add some tests for the bool type. Patch by Gregory Nofi. +- Issue #8263: Now regrtest.py will report a failure if it receives a + KeyboardInterrupt (SIGINT). + - Issue #8180 and #8207: Fix test_pep277 on OS X and add more tests for special Unicode normalization cases.