]> granicus.if.org Git - python/commitdiff
#8560: add progress indicator to regrtest.
authorGeorg Brandl <georg@python.org>
Mon, 2 Aug 2010 18:59:52 +0000 (18:59 +0000)
committerGeorg Brandl <georg@python.org>
Mon, 2 Aug 2010 18:59:52 +0000 (18:59 +0000)
Lib/test/regrtest.py

index b5a91efb92aa31c6d171cba6e7d52cba157221b1..f648d959686e2414bb98c620f87aa85ce4026e6a 100755 (executable)
@@ -390,7 +390,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
             sys.exit(0)
         else:
             print(("No handler for option {}.  Please report this as a bug "
-                  "at http://bugs.python.org.").format(o), file=sys.stderr)
+                   "at http://bugs.python.org.").format(o), file=sys.stderr)
             sys.exit(1)
     if single and fromfile:
         usage("-s and -f don't go together!")
@@ -517,6 +517,9 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
     else:
         tests = iter(selected)
 
+    tests = list(tests)
+    test_count = len(tests)
+    test_count_width = len(str(test_count))
     if use_mp:
         try:
             from threading import Thread
@@ -559,8 +562,6 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
                         output.put((None, None, None, None))
                         return
                     result = json.loads(result)
-                    if not quiet:
-                        stdout = test+'\n'+stdout
                     output.put((test, stdout.rstrip(), stderr.rstrip(), result))
             except BaseException:
                 output.put((None, None, None, None))
@@ -569,12 +570,16 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
         for worker in workers:
             worker.start()
         finished = 0
+        test_index = 1
         try:
             while finished < use_mp:
                 test, stdout, stderr, result = output.get()
                 if test is None:
                     finished += 1
                     continue
+                if not quiet:
+                    print("[{1:{0}}/{2:{0}}] {3}".format(
+                        test_count_width, test_index, test_count, test))
                 if stdout:
                     print(stdout)
                 if stderr:
@@ -583,15 +588,17 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
                     assert result[1] == 'KeyboardInterrupt'
                     raise KeyboardInterrupt   # What else?
                 accumulate_result(test, result)
+                test_index += 1
         except KeyboardInterrupt:
             interrupted = True
             pending.close()
         for worker in workers:
             worker.join()
     else:
-        for test in tests:
+        for test_index, test in enumerate(tests, 1):
             if not quiet:
-                print(test)
+                print("[{1:{0}}/{2:{0}}] {3}".format(
+                    test_count_width, test_index, test_count, test))
                 sys.stdout.flush()
             if trace:
                 # If we're tracing code coverage, then we don't exit with status