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
4d85ee31
Commit
4d85ee31
authored
Nov 13, 2016
by
Xavier de Gaye
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix test_faulthandler on Android where raise() exits with 0
parent
1c074148
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
23 additions
and
3 deletions
+23
-3
Lib/test/support/__init__.py
Lib/test/support/__init__.py
+10
-2
Lib/test/test_faulthandler.py
Lib/test/test_faulthandler.py
+13
-1
No files found.
Lib/test/support/__init__.py
View file @
4d85ee31
...
...
@@ -90,7 +90,7 @@ __all__ = [
"bigmemtest"
,
"bigaddrspacetest"
,
"cpython_only"
,
"get_attribute"
,
"requires_IEEE_754"
,
"skip_unless_xattr"
,
"requires_zlib"
,
"anticipate_failure"
,
"load_package_tests"
,
"detect_api_mismatch"
,
"check__all__"
,
"check__all__"
,
"requires_android_level"
,
# sys
"is_jython"
,
"is_android"
,
"check_impl_detail"
,
"unix_shell"
,
# network
...
...
@@ -735,7 +735,8 @@ requires_lzma = unittest.skipUnless(lzma, 'requires lzma')
is_jython
=
sys
.
platform
.
startswith
(
'java'
)
is_android
=
bool
(
sysconfig
.
get_config_var
(
'ANDROID_API_LEVEL'
))
_ANDROID_API_LEVEL
=
sysconfig
.
get_config_var
(
'ANDROID_API_LEVEL'
)
is_android
=
(
_ANDROID_API_LEVEL
>
0
)
if
sys
.
platform
!=
'win32'
:
unix_shell
=
'/system/bin/sh'
if
is_android
else
'/bin/sh'
...
...
@@ -1725,6 +1726,13 @@ def requires_resource(resource):
else
:
return
unittest
.
skip
(
"resource {0!r} is not enabled"
.
format
(
resource
))
def
requires_android_level
(
level
,
reason
):
if
is_android
and
_ANDROID_API_LEVEL
<
level
:
return
unittest
.
skip
(
'%s at Android API level %d'
%
(
reason
,
_ANDROID_API_LEVEL
))
else
:
return
_id
def
cpython_only
(
test
):
"""
Decorator for tests only applicable on CPython.
...
...
Lib/test/test_faulthandler.py
View file @
4d85ee31
...
...
@@ -7,7 +7,7 @@ import signal
import
subprocess
import
sys
from
test
import
support
from
test.support
import
script_helper
from
test.support
import
script_helper
,
is_android
,
requires_android_level
import
tempfile
import
unittest
from
textwrap
import
dedent
...
...
@@ -42,6 +42,10 @@ def temporary_filename():
finally
:
support
.
unlink
(
filename
)
def
requires_raise
(
test
):
return
(
test
if
not
is_android
else
requires_android_level
(
24
,
'raise() is buggy'
)(
test
))
class
FaultHandlerTests
(
unittest
.
TestCase
):
def
get_output
(
self
,
code
,
filename
=
None
,
fd
=
None
):
"""
...
...
@@ -141,6 +145,7 @@ class FaultHandlerTests(unittest.TestCase):
3
,
'access violation'
)
@
requires_raise
def
test_sigsegv
(
self
):
self
.
check_fatal_error
(
"""
import faulthandler
...
...
@@ -183,6 +188,7 @@ class FaultHandlerTests(unittest.TestCase):
@
unittest
.
skipIf
(
_testcapi
is
None
,
'need _testcapi'
)
@
unittest
.
skipUnless
(
hasattr
(
signal
,
'SIGBUS'
),
'need signal.SIGBUS'
)
@
requires_raise
def
test_sigbus
(
self
):
self
.
check_fatal_error
(
"""
import _testcapi
...
...
@@ -197,6 +203,7 @@ class FaultHandlerTests(unittest.TestCase):
@
unittest
.
skipIf
(
_testcapi
is
None
,
'need _testcapi'
)
@
unittest
.
skipUnless
(
hasattr
(
signal
,
'SIGILL'
),
'need signal.SIGILL'
)
@
requires_raise
def
test_sigill
(
self
):
self
.
check_fatal_error
(
"""
import _testcapi
...
...
@@ -240,6 +247,7 @@ class FaultHandlerTests(unittest.TestCase):
'(?:Segmentation fault|Bus error)'
,
other_regex
=
'unable to raise a stack overflow'
)
@
requires_raise
def
test_gil_released
(
self
):
self
.
check_fatal_error
(
"""
import faulthandler
...
...
@@ -249,6 +257,7 @@ class FaultHandlerTests(unittest.TestCase):
3
,
'Segmentation fault'
)
@
requires_raise
def
test_enable_file
(
self
):
with
temporary_filename
()
as
filename
:
self
.
check_fatal_error
(
"""
...
...
@@ -263,6 +272,7 @@ class FaultHandlerTests(unittest.TestCase):
@
unittest
.
skipIf
(
sys
.
platform
==
"win32"
,
"subprocess doesn't support pass_fds on Windows"
)
@
requires_raise
def
test_enable_fd
(
self
):
with
tempfile
.
TemporaryFile
(
'wb+'
)
as
fp
:
fd
=
fp
.
fileno
()
...
...
@@ -276,6 +286,7 @@ class FaultHandlerTests(unittest.TestCase):
'Segmentation fault'
,
fd
=
fd
)
@
requires_raise
def
test_enable_single_thread
(
self
):
self
.
check_fatal_error
(
"""
import faulthandler
...
...
@@ -286,6 +297,7 @@ class FaultHandlerTests(unittest.TestCase):
'Segmentation fault'
,
all_threads
=
False
)
@
requires_raise
def
test_disable
(
self
):
code
=
"""
import faulthandler
...
...
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