summaryrefslogtreecommitdiffstats
path: root/Lib/test/support/__init__.py
diff options
context:
space:
mode:
authorPablo Galindo Salgado <Pablogsal@gmail.com>2022-01-25 23:14:03 (GMT)
committerGitHub <noreply@github.com>2022-01-25 23:14:03 (GMT)
commita27505345e34d462139f5f8b6b5e7c9a59955150 (patch)
treeb5bb6339a8f6db3ddce80d6e3f6298d31f474f9d /Lib/test/support/__init__.py
parenta0efc0c1960e2c49e0092694d98395555270914c (diff)
downloadcpython-a27505345e34d462139f5f8b6b5e7c9a59955150.zip
cpython-a27505345e34d462139f5f8b6b5e7c9a59955150.tar.gz
cpython-a27505345e34d462139f5f8b6b5e7c9a59955150.tar.bz2
Add skips to crashing tests under sanitizers instead of manually skipping them (GH-30897)
Diffstat (limited to 'Lib/test/support/__init__.py')
-rw-r--r--Lib/test/support/__init__.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index 583d94f..d71cfe5 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -43,7 +43,7 @@ __all__ = [
"has_subprocess_support", "requires_subprocess",
"anticipate_failure", "load_package_tests", "detect_api_mismatch",
"check__all__", "skip_if_buggy_ucrt_strfptime",
- "check_disallow_instantiation", "skip_if_sanitizer",
+ "check_disallow_instantiation", "check_sanitizer", "skip_if_sanitizer",
# sys
"is_jython", "is_android", "is_emscripten", "is_wasi",
"check_impl_detail", "unix_shell", "setswitchinterval",
@@ -384,13 +384,11 @@ def skip_if_buildbot(reason=None):
isbuildbot = os.environ.get('USER') == 'buildbot'
return unittest.skipIf(isbuildbot, reason)
-def skip_if_sanitizer(reason=None, *, address=False, memory=False, ub=False):
- """Decorator raising SkipTest if running with a sanitizer active."""
+def check_sanitizer(*, address=False, memory=False, ub=False):
+ """Returns True if Python is compiled with sanitizer support"""
if not (address or memory or ub):
raise ValueError('At least one of address, memory, or ub must be True')
- if not reason:
- reason = 'not working with sanitizers active'
_cflags = sysconfig.get_config_var('CFLAGS') or ''
_config_args = sysconfig.get_config_var('CONFIG_ARGS') or ''
@@ -406,11 +404,18 @@ def skip_if_sanitizer(reason=None, *, address=False, memory=False, ub=False):
'-fsanitize=undefined' in _cflags or
'--with-undefined-behavior-sanitizer' in _config_args
)
- skip = (
+ return (
(memory and memory_sanitizer) or
(address and address_sanitizer) or
(ub and ub_sanitizer)
)
+
+
+def skip_if_sanitizer(reason=None, *, address=False, memory=False, ub=False):
+ """Decorator raising SkipTest if running with a sanitizer active."""
+ if not reason:
+ reason = 'not working with sanitizers active'
+ skip = check_sanitizer(address=address, memory=memory, ub=ub)
return unittest.skipIf(skip, reason)