aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/libregrtest/single.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-09-11 19:33:42 +0200
committerGitHub <noreply@github.com>2023-09-11 19:33:42 +0200
commitde5f8f7d13c0bbc723eaea83284dc78b37be54b4 (patch)
tree1055e0399f756e089e16418a195947a43f39fdca /Lib/test/libregrtest/single.py
parentbaa6dc8e388e71b2a00347143ecefb2ad3a8e53b (diff)
downloadcpython-de5f8f7d13c0bbc723eaea83284dc78b37be54b4.tar.gz
cpython-de5f8f7d13c0bbc723eaea83284dc78b37be54b4.zip
gh-109276: libregrtest: use separated file for JSON (#109277)
libregrtest now uses a separated file descriptor to write test result as JSON. Previously, if a test wrote debug messages late around the JSON, the main test process failed to parse JSON. Rename TestResult.write_json() to TestResult.write_json_into(). worker_process() no longer writes an empty line at the end. There is no need to separate test process output from the JSON output anymore, since JSON is now written into a separated file descriptor. create_worker_process() now always spawn the process with close_fds=True.
Diffstat (limited to 'Lib/test/libregrtest/single.py')
-rw-r--r--Lib/test/libregrtest/single.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/Lib/test/libregrtest/single.py b/Lib/test/libregrtest/single.py
index 635b4f93702..c26e542cf15 100644
--- a/Lib/test/libregrtest/single.py
+++ b/Lib/test/libregrtest/single.py
@@ -271,5 +271,9 @@ def run_single_test(test_name: TestName, runtests: RunTests) -> TestResult:
print(f"test {test_name} crashed -- {msg}",
file=sys.stderr, flush=True)
result.state = State.UNCAUGHT_EXC
+
+ sys.stdout.flush()
+ sys.stderr.flush()
+
result.duration = time.perf_counter() - start_time
return result