regrtest: give more information when a child process fails with an error

different than KeyboardInterrupt
This commit is contained in:
Victor Stinner 2012-08-08 22:37:26 +02:00
parent bded28c081
commit 2965011668
1 changed files with 5 additions and 3 deletions

View File

@ -440,8 +440,11 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
args, kwargs = json.loads(a)
try:
result = runtest(*args, **kwargs)
except KeyboardInterrupt:
result = INTERRUPTED, ''
except BaseException as e:
result = INTERRUPTED, e.__class__.__name__
traceback.print_exc()
result = CHILD_ERROR, str(e)
sys.stdout.flush()
print() # Force a newline (just in case)
print(json.dumps(result))
@ -684,8 +687,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
sys.stdout.flush()
sys.stderr.flush()
if result[0] == INTERRUPTED:
assert result[1] == 'KeyboardInterrupt'
raise KeyboardInterrupt # What else?
raise KeyboardInterrupt
if result[0] == CHILD_ERROR:
raise Exception("Child error on {}: {}".format(test, result[1]))
test_index += 1