summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2018-12-31 02:09:26 (GMT)
committerGitHub <noreply@github.com>2018-12-31 02:09:26 (GMT)
commit30e023256aa1b00d4c783553752fc6f2cc0b9b27 (patch)
tree0ac6abe197807f880bf7f7d4d2a3f272374d7cd8
parentc7e219132aff1e21cb9ccb0a9b570dc6c750039b (diff)
downloadcpython-30e023256aa1b00d4c783553752fc6f2cc0b9b27.zip
cpython-30e023256aa1b00d4c783553752fc6f2cc0b9b27.tar.gz
cpython-30e023256aa1b00d4c783553752fc6f2cc0b9b27.tar.bz2
Cleanup test_faulthandler sanitizer skip logic. (GH-11381)
Also skip the same tests when using the undefined behavior sanitizer as they much with the output. Updates a regex in another test to use multi-line mode so that the ubsan buildbot should pass again rather than also adding a skip to that one.
-rw-r--r--Lib/test/test_faulthandler.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py
index 76dd6ab..80b8868 100644
--- a/Lib/test/test_faulthandler.py
+++ b/Lib/test/test_faulthandler.py
@@ -20,11 +20,18 @@ except ImportError:
TIMEOUT = 0.5
MS_WINDOWS = (os.name == 'nt')
+_cflags = sysconfig.get_config_var('CFLAGS') or ''
+_config_args = sysconfig.get_config_var('CONFIG_ARGS') or ''
+UB_SANITIZER = (
+ '-fsanitizer=undefined' in _cflags or
+ '--with-undefined-behavior-sanitizer' in _config_args
+)
MEMORY_SANITIZER = (
- sysconfig.get_config_var("CONFIG_ARGS") and
- ("--with-memory-sanitizer" in sysconfig.get_config_var("CONFIG_ARGS"))
+ '-fsanitizer=memory' in _cflags or
+ '--with-memory-sanitizer' in _config_args
)
+
def expected_traceback(lineno1, lineno2, header, min_count=1):
regex = header
regex += ' File "<string>", line %s in func\n' % lineno1
@@ -99,7 +106,7 @@ class FaultHandlerTests(unittest.TestCase):
else:
header = 'Stack'
regex = r"""
- ^{fatal_error}
+ (?m)^{fatal_error}
{header} \(most recent call first\):
File "<string>", line {lineno} in <module>
@@ -257,8 +264,8 @@ class FaultHandlerTests(unittest.TestCase):
3,
'Segmentation fault')
- @unittest.skipIf(MEMORY_SANITIZER,
- "memory-sanizer builds change crashing process output.")
+ @unittest.skipIf(UB_SANITIZER or MEMORY_SANITIZER,
+ "sanizer builds change crashing process output.")
@skip_segfault_on_android
def test_enable_file(self):
with temporary_filename() as filename:
@@ -274,8 +281,8 @@ class FaultHandlerTests(unittest.TestCase):
@unittest.skipIf(sys.platform == "win32",
"subprocess doesn't support pass_fds on Windows")
- @unittest.skipIf(MEMORY_SANITIZER,
- "memory-sanizer builds change crashing process output.")
+ @unittest.skipIf(UB_SANITIZER or MEMORY_SANITIZER,
+ "sanizer builds change crashing process output.")
@skip_segfault_on_android
def test_enable_fd(self):
with tempfile.TemporaryFile('wb+') as fp: