summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-08-02 18:59:52 (GMT)
committerGeorg Brandl <georg@python.org>2010-08-02 18:59:52 (GMT)
commitdee7b8503da8ef8aaa10df54e465911fe163c917 (patch)
treed78695a65aa5ac9471a91590c5b7b2e51f4267e2
parent6fcac0d6f6d513b2cd9bc8df4e42fbf6d46521bd (diff)
downloadcpython-dee7b8503da8ef8aaa10df54e465911fe163c917.zip
cpython-dee7b8503da8ef8aaa10df54e465911fe163c917.tar.gz
cpython-dee7b8503da8ef8aaa10df54e465911fe163c917.tar.bz2
#8560: add progress indicator to regrtest.
-rwxr-xr-xLib/test/regrtest.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index b5a91ef..f648d95 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