diff options
author | Gregory P. Smith <greg@krypto.org> | 2018-12-31 02:09:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-31 02:09:26 (GMT) |
commit | 30e023256aa1b00d4c783553752fc6f2cc0b9b27 (patch) | |
tree | 0ac6abe197807f880bf7f7d4d2a3f272374d7cd8 | |
parent | c7e219132aff1e21cb9ccb0a9b570dc6c750039b (diff) | |
download | cpython-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.py | 21 |
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: |