[Python-checkins] Cleanup test_faulthandler sanitizer skip logic. (GH-11381)

Miss Islington (bot) webhook-mailer at python.org
Sun Dec 30 21:28:14 EST 2018


https://github.com/python/cpython/commit/e40429905773cdbdb5458a5d93600b5816668470
commit: e40429905773cdbdb5458a5d93600b5816668470
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-12-30T18:28:11-08:00
summary:

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.
(cherry picked from commit 30e023256aa1b00d4c783553752fc6f2cc0b9b27)

Co-authored-by: Gregory P. Smith <greg at krypto.org>

files:
M Lib/test/test_faulthandler.py

diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py
index 984690f248ba..69a6f0ffa016 100644
--- a/Lib/test/test_faulthandler.py
+++ b/Lib/test/test_faulthandler.py
@@ -20,11 +20,18 @@
 
 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 @@ def check_error(self, code, line_number, fatal_error, *,
         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 @@ def test_gil_released(self):
             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 @@ def test_enable_file(self):
 
     @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:



More information about the Python-checkins mailing list