mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-36842: Fix reference leak in tests by running out-of-proc (GH-13556)
This commit is contained in:
parent
d8b7551672
commit
9ddc416e9f
3 changed files with 331 additions and 238 deletions
|
@ -83,27 +83,7 @@ def setup_tests(ns):
|
|||
if ns.threshold is not None:
|
||||
gc.set_threshold(ns.threshold)
|
||||
|
||||
try:
|
||||
import msvcrt
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
msvcrt.SetErrorMode(msvcrt.SEM_FAILCRITICALERRORS|
|
||||
msvcrt.SEM_NOALIGNMENTFAULTEXCEPT|
|
||||
msvcrt.SEM_NOGPFAULTERRORBOX|
|
||||
msvcrt.SEM_NOOPENFILEERRORBOX)
|
||||
try:
|
||||
msvcrt.CrtSetReportMode
|
||||
except AttributeError:
|
||||
# release build
|
||||
pass
|
||||
else:
|
||||
for m in [msvcrt.CRT_WARN, msvcrt.CRT_ERROR, msvcrt.CRT_ASSERT]:
|
||||
if ns.verbose and ns.verbose >= 2:
|
||||
msvcrt.CrtSetReportMode(m, msvcrt.CRTDBG_MODE_FILE)
|
||||
msvcrt.CrtSetReportFile(m, msvcrt.CRTDBG_FILE_STDERR)
|
||||
else:
|
||||
msvcrt.CrtSetReportMode(m, 0)
|
||||
suppress_msvcrt_asserts(ns.verbose and ns.verbose >= 2)
|
||||
|
||||
support.use_resources = ns.use_resources
|
||||
|
||||
|
@ -114,6 +94,31 @@ def setup_tests(ns):
|
|||
sys.addaudithook(_test_audit_hook)
|
||||
|
||||
|
||||
def suppress_msvcrt_asserts(verbose):
|
||||
try:
|
||||
import msvcrt
|
||||
except ImportError:
|
||||
return
|
||||
|
||||
msvcrt.SetErrorMode(msvcrt.SEM_FAILCRITICALERRORS|
|
||||
msvcrt.SEM_NOALIGNMENTFAULTEXCEPT|
|
||||
msvcrt.SEM_NOGPFAULTERRORBOX|
|
||||
msvcrt.SEM_NOOPENFILEERRORBOX)
|
||||
try:
|
||||
msvcrt.CrtSetReportMode
|
||||
except AttributeError:
|
||||
# release build
|
||||
return
|
||||
|
||||
for m in [msvcrt.CRT_WARN, msvcrt.CRT_ERROR, msvcrt.CRT_ASSERT]:
|
||||
if verbose:
|
||||
msvcrt.CrtSetReportMode(m, msvcrt.CRTDBG_MODE_FILE)
|
||||
msvcrt.CrtSetReportFile(m, msvcrt.CRTDBG_FILE_STDERR)
|
||||
else:
|
||||
msvcrt.CrtSetReportMode(m, 0)
|
||||
|
||||
|
||||
|
||||
def replace_stdout():
|
||||
"""Set stdout encoder error handler to backslashreplace (as stderr error
|
||||
handler) to avoid UnicodeEncodeError when printing a traceback"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue