From dee7b8503da8ef8aaa10df54e465911fe163c917 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 2 Aug 2010 18:59:52 +0000 Subject: [PATCH] #8560: add progress indicator to regrtest. --- Lib/test/regrtest.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index b5a91efb92a..f648d959686 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -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