diff options
Diffstat (limited to 'Lib/test/test_faulthandler.py')
-rw-r--r-- | Lib/test/test_faulthandler.py | 27 |
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 |