MCPcopy Index your code
hub / github.com/python/cpython / _runtest

Function _runtest

Lib/test/libregrtest/single.py:270–328  ·  view source on GitHub ↗
(result: TestResult, runtests: RunTests)

Source from the content-addressed store, hash-verified

268
269
270def _runtest(result: TestResult, runtests: RunTests) -> None:
271 # Capture stdout and stderr, set faulthandler timeout,
272 # and create JUnit XML report.
273 verbose = runtests.verbose
274 output_on_failure = runtests.output_on_failure
275 timeout = runtests.timeout
276
277 if timeout is not None and threading_helper.can_start_thread:
278 use_timeout = True
279 faulthandler.dump_traceback_later(timeout, exit=True)
280 else:
281 use_timeout = False
282
283 try:
284 setup_tests(runtests)
285
286 if output_on_failure or runtests.pgo:
287 support.verbose = True
288
289 stream = io.StringIO()
290 orig_stdout = sys.stdout
291 orig_stderr = sys.stderr
292 print_warning = support.print_warning
293 orig_print_warnings_stderr = print_warning.orig_stderr
294
295 output = None
296 try:
297 sys.stdout = stream
298 sys.stderr = stream
299 # print_warning() writes into the temporary stream to preserve
300 # messages order. If support.environment_altered becomes true,
301 # warnings will be written to sys.stderr below.
302 print_warning.orig_stderr = stream
303
304 _runtest_env_changed_exc(result, runtests, display_failure=False)
305 # Ignore output if the test passed successfully
306 if result.state != State.PASSED:
307 output = stream.getvalue()
308 finally:
309 sys.stdout = orig_stdout
310 sys.stderr = orig_stderr
311 print_warning.orig_stderr = orig_print_warnings_stderr
312
313 if output is not None:
314 sys.stderr.write(output)
315 sys.stderr.flush()
316 else:
317 # Tell tests to be moderately quiet
318 support.verbose = verbose
319 _runtest_env_changed_exc(result, runtests,
320 display_failure=not verbose)
321
322 xml_list = support.junit_xml_list
323 if xml_list:
324 result.xml_data = xml_list
325 finally:
326 if use_timeout:
327 faulthandler.cancel_dump_traceback_later()

Callers 1

run_single_testFunction · 0.85

Calls 5

getvalueMethod · 0.95
setup_testsFunction · 0.85
_runtest_env_changed_excFunction · 0.85
writeMethod · 0.45
flushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…