bpo-30258: Fix handling of child error in regrtest (#1477)
Don't stop the worker thread if a child failed.
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 413d7f9..9874dde 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -555,16 +555,16 @@
# comes from the shutdown of the interpreter in the subcommand.
stderr = debug_output_pat.sub("", stderr)
- if retcode != 0:
- result = (CHILD_ERROR, "Exit code %s" % retcode)
- output.put((test, stdout.rstrip(), stderr.rstrip(),
- result))
+ if retcode == 0:
+ stdout, _, result = stdout.strip().rpartition("\n")
+ if not result:
+ output.put((None, None, None, None))
+ return
- stdout, _, result = stdout.strip().rpartition("\n")
- if not result:
- output.put((None, None, None, None))
- return
- result = json.loads(result)
+ result = json.loads(result)
+ else:
+ result = (CHILD_ERROR, "Exit code %s" % retcode)
+
output.put((test, stdout.rstrip(), stderr.rstrip(), result))
except BaseException:
output.put((None, None, None, None))