[Python-checkins] r79508 - in python/branches/py3k: Lib/test/regrtest.py Misc/NEWS

florent.xicluna python-checkins at python.org
Tue Mar 30 21:43:09 CEST 2010


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.
 


More information about the Python-checkins mailing list