Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
87a249c1
Commit
87a249c1
authored
Mar 05, 2013
by
Ezio Melotti
Browse files
Options
Browse Files
Download
Plain Diff
#11732: merge with 3.3.
parents
df1d3c5c
e1857d99
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
8 deletions
+44
-8
Doc/library/test.rst
Doc/library/test.rst
+7
-0
Lib/test/support.py
Lib/test/support.py
+23
-1
Lib/test/test_capi.py
Lib/test/test_capi.py
+6
-5
Lib/test/test_faulthandler.py
Lib/test/test_faulthandler.py
+4
-2
Misc/NEWS
Misc/NEWS
+4
-0
No files found.
Doc/library/test.rst
View file @
87a249c1
...
...
@@ -405,6 +405,13 @@ The :mod:`test.support` module defines the following functions:
A decorator for running tests that require support for symbolic links.
.. function:: suppress_crash_popup()
A context manager that disables Windows Error Reporting dialogs using
`SetErrorMode <http://msdn.microsoft.com/en-us/library/windows/desktop/ms680621%28v=vs.85%29.aspx>`_.
On other platforms it's a no-op.
.. decorator:: anticipate_failure(condition)
A decorator to conditionally mark tests with
...
...
Lib/test/support.py
View file @
87a249c1
...
...
@@ -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
):
...
...
@@ -1907,6 +1907,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'.
...
...
Lib/test/test_capi.py
View file @
87a249c1
...
...
@@ -44,11 +44,12 @@ class CAPITest(unittest.TestCase):
@
unittest
.
skipUnless
(
threading
,
'Threading required for this test.'
)
def
test_no_FatalError_infinite_loop
(
self
):
p
=
subprocess
.
Popen
([
sys
.
executable
,
"-c"
,
'import _testcapi;'
'_testcapi.crash_no_current_thread()'
],
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
with
support
.
suppress_crash_popup
():
p
=
subprocess
.
Popen
([
sys
.
executable
,
"-c"
,
'import _testcapi;'
'_testcapi.crash_no_current_thread()'
],
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
(
out
,
err
)
=
p
.
communicate
()
self
.
assertEqual
(
out
,
b''
)
# This used to cause an infinite loop.
...
...
Lib/test/test_faulthandler.py
View file @
87a249c1
...
...
@@ -101,7 +101,8 @@ class FaultHandlerTests(unittest.TestCase):
header
=
re
.
escape
(
header
))
if
other_regex
:
regex
+=
'|'
+
other_regex
output
,
exitcode
=
self
.
get_output
(
code
,
filename
)
with
support
.
suppress_crash_popup
():
output
,
exitcode
=
self
.
get_output
(
code
,
filename
)
output
=
'
\
n
'
.
join
(
output
)
self
.
assertRegex
(
output
,
regex
)
self
.
assertNotEqual
(
exitcode
,
0
)
...
...
@@ -229,7 +230,8 @@ faulthandler.disable()
faulthandler._read_null()
"""
.
strip
()
not_expected
=
'Fatal Python error'
stderr
,
exitcode
=
self
.
get_output
(
code
)
with
support
.
suppress_crash_popup
():
stderr
,
exitcode
=
self
.
get_output
(
code
)
stder
=
'
\
n
'
.
join
(
stderr
)
self
.
assertTrue
(
not_expected
not
in
stderr
,
"%r is present in %r"
%
(
not_expected
,
stderr
))
...
...
Misc/NEWS
View file @
87a249c1
...
...
@@ -892,6 +892,10 @@ Extension Modules
Tests
-----
-
Issue
#
11732
:
add
a
new
suppress_crash_popup
()
context
manager
to
test
.
support
that
disables
crash
popups
on
Windows
and
use
it
in
test_faulthandler
and
test_ctypes
.
-
Issue
#
13898
:
test_ssl
no
longer
prints
a
spurious
stack
trace
on
Ubuntu
.
-
Issue
#
17283
:
Share
code
between
`
__main__
.
py
`
and
`
regrtest
.
py
`
in
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment