mirror of
https://github.com/python/cpython.git
synced 2025-11-02 19:12:55 +00:00
#11732: add a new suppress_crash_popup() context manager to test.support.
This commit is contained in:
parent
884f0585a4
commit
25a404520d
5 changed files with 40 additions and 4 deletions
|
|
@ -71,7 +71,7 @@ __all__ = [
|
|||
"TestHandler", "Matcher", "can_symlink", "skip_unless_symlink",
|
||||
"skip_unless_xattr", "import_fresh_module", "requires_zlib",
|
||||
"PIPE_MAX_SIZE", "failfast", "anticipate_failure", "run_with_tz",
|
||||
"requires_bz2", "requires_lzma"
|
||||
"requires_bz2", "requires_lzma", "suppress_crash_popup",
|
||||
]
|
||||
|
||||
class Error(Exception):
|
||||
|
|
@ -1905,6 +1905,28 @@ def skip_unless_xattr(test):
|
|||
msg = "no non-broken extended attribute support"
|
||||
return test if ok else unittest.skip(msg)(test)
|
||||
|
||||
|
||||
if sys.platform.startswith('win'):
|
||||
@contextlib.contextmanager
|
||||
def suppress_crash_popup():
|
||||
"""Disable Windows Error Reporting dialogs using SetErrorMode."""
|
||||
# see http://msdn.microsoft.com/en-us/library/windows/desktop/ms680621%28v=vs.85%29.aspx
|
||||
import ctypes
|
||||
k32 = ctypes.windll.kernel32
|
||||
old_error_mode = k32.GetErrorMode()
|
||||
SEM_NOGPFAULTERRORBOX = 0x02
|
||||
k32.SetErrorMode(old_error_mode | SEM_NOGPFAULTERRORBOX)
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
k32.SetErrorMode(old_error_mode)
|
||||
else:
|
||||
# this is a no-op for other platforms
|
||||
@contextlib.contextmanager
|
||||
def suppress_crash_popup():
|
||||
yield
|
||||
|
||||
|
||||
def patch(test_instance, object_to_patch, attr_name, new_value):
|
||||
"""Override 'object_to_patch'.'attr_name' with 'new_value'.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue