summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_faulthandler.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_faulthandler.py')
-rw-r--r--Lib/test/test_faulthandler.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py
index e0e53c2..3647bfc 100644
--- a/Lib/test/test_faulthandler.py
+++ b/Lib/test/test_faulthandler.py
@@ -6,7 +6,7 @@ import signal
import subprocess
import sys
from test import support
-from test.support import script_helper, is_android, requires_android_level
+from test.support import script_helper, is_android
import tempfile
import threading
import unittest
@@ -29,6 +29,11 @@ def expected_traceback(lineno1, lineno2, header, min_count=1):
else:
return '^' + regex + '$'
+def skip_segfault_on_android(test):
+ # Issue #32138: Raising SIGSEGV on Android may not cause a crash.
+ return unittest.skipIf(is_android,
+ 'raising SIGSEGV on Android is unreliable')(test)
+
@contextmanager
def temporary_filename():
filename = tempfile.mktemp()
@@ -37,10 +42,6 @@ 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):
"""
@@ -140,7 +141,7 @@ class FaultHandlerTests(unittest.TestCase):
3,
'access violation')
- @requires_raise
+ @skip_segfault_on_android
def test_sigsegv(self):
self.check_fatal_error("""
import faulthandler
@@ -182,7 +183,7 @@ class FaultHandlerTests(unittest.TestCase):
@unittest.skipIf(_testcapi is None, 'need _testcapi')
@unittest.skipUnless(hasattr(signal, 'SIGBUS'), 'need signal.SIGBUS')
- @requires_raise
+ @skip_segfault_on_android
def test_sigbus(self):
self.check_fatal_error("""
import _testcapi
@@ -197,7 +198,7 @@ class FaultHandlerTests(unittest.TestCase):
@unittest.skipIf(_testcapi is None, 'need _testcapi')
@unittest.skipUnless(hasattr(signal, 'SIGILL'), 'need signal.SIGILL')
- @requires_raise
+ @skip_segfault_on_android
def test_sigill(self):
self.check_fatal_error("""
import _testcapi
@@ -241,7 +242,7 @@ class FaultHandlerTests(unittest.TestCase):
'(?:Segmentation fault|Bus error)',
other_regex='unable to raise a stack overflow')
- @requires_raise
+ @skip_segfault_on_android
def test_gil_released(self):
self.check_fatal_error("""
import faulthandler
@@ -251,7 +252,7 @@ class FaultHandlerTests(unittest.TestCase):
3,
'Segmentation fault')
- @requires_raise
+ @skip_segfault_on_android
def test_enable_file(self):
with temporary_filename() as filename:
self.check_fatal_error("""
@@ -266,7 +267,7 @@ class FaultHandlerTests(unittest.TestCase):
@unittest.skipIf(sys.platform == "win32",
"subprocess doesn't support pass_fds on Windows")
- @requires_raise
+ @skip_segfault_on_android
def test_enable_fd(self):
with tempfile.TemporaryFile('wb+') as fp:
fd = fp.fileno()
@@ -280,7 +281,7 @@ class FaultHandlerTests(unittest.TestCase):
'Segmentation fault',
fd=fd)
- @requires_raise
+ @skip_segfault_on_android
def test_enable_single_thread(self):
self.check_fatal_error("""
import faulthandler
@@ -291,7 +292,7 @@ class FaultHandlerTests(unittest.TestCase):
'Segmentation fault',
all_threads=False)
- @requires_raise
+ @skip_segfault_on_android
def test_disable(self):
code = """
import faulthandler