mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
bpo-46633: Skip tests on ASAN and/or MSAN builds (GH-31632)
Skip tests on ASAN and/or MSAN builds: * multiprocessing tests * test___all__ * test_concurrent_futures * test_decimal * test_peg_generator * test_tools The ASAN job of GitHub Actions no longer excludes these tests.
This commit is contained in:
parent
0cc6364185
commit
9204bb72a2
7 changed files with 40 additions and 24 deletions
10
.github/workflows/build.yml
vendored
10
.github/workflows/build.yml
vendored
|
@ -306,12 +306,4 @@ jobs:
|
||||||
- name: Display build info
|
- name: Display build info
|
||||||
run: make pythoninfo
|
run: make pythoninfo
|
||||||
- name: Tests
|
- name: Tests
|
||||||
# Skip test_tools test_peg_generator test_concurrent_futures because
|
run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu"
|
||||||
# there are too slow: between 5 and 20 minutes on this CI.
|
|
||||||
#
|
|
||||||
# Skip multiprocessing and concurrent.futures tests which are affected by
|
|
||||||
# bpo-45200 bug: libasan dead lock in pthread_create().
|
|
||||||
#
|
|
||||||
# test___all__ is skipped because importing some modules directly can trigger
|
|
||||||
# known problems with ASAN (like tk or crypt).
|
|
||||||
run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu -x test___all__ test_multiprocessing_fork test_multiprocessing_forkserver test_multiprocessing_spawn test_tools test_peg_generator test_concurrent_futures"
|
|
||||||
|
|
|
@ -73,6 +73,12 @@ except ImportError:
|
||||||
msvcrt = None
|
msvcrt = None
|
||||||
|
|
||||||
|
|
||||||
|
if support.check_sanitizer(address=True):
|
||||||
|
# bpo-45200: Skip multiprocessing tests if Python is built with ASAN to
|
||||||
|
# work around a libasan race condition: dead lock in pthread_create().
|
||||||
|
raise unittest.SkipTest("libasan has a pthread_create() dead lock")
|
||||||
|
|
||||||
|
|
||||||
def latin(s):
|
def latin(s):
|
||||||
return s.encode('latin')
|
return s.encode('latin')
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,13 @@ except ModuleNotFoundError:
|
||||||
_multiprocessing = None
|
_multiprocessing = None
|
||||||
|
|
||||||
|
|
||||||
|
if support.check_sanitizer(address=True, memory=True):
|
||||||
|
# bpo-46633: test___all__ is skipped because importing some modules
|
||||||
|
# directly can trigger known problems with ASAN (like tk or crypt).
|
||||||
|
raise unittest.SkipTest("workaround ASAN build issues on loading tests "
|
||||||
|
"like tk or crypt")
|
||||||
|
|
||||||
|
|
||||||
class NoAll(RuntimeError):
|
class NoAll(RuntimeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,12 @@ import multiprocessing.process
|
||||||
import multiprocessing.util
|
import multiprocessing.util
|
||||||
|
|
||||||
|
|
||||||
|
if support.check_sanitizer(address=True, memory=True):
|
||||||
|
# bpo-46633: Skip the test because it is too slow when Python is built
|
||||||
|
# with ASAN/MSAN: between 5 and 20 minutes on GitHub Actions.
|
||||||
|
raise unittest.SkipTest("test too slow on ASAN/MSAN build")
|
||||||
|
|
||||||
|
|
||||||
def create_future(state=PENDING, exception=None, result=None):
|
def create_future(state=PENDING, exception=None, result=None):
|
||||||
f = Future()
|
f = Future()
|
||||||
f._state = state
|
f._state = state
|
||||||
|
|
|
@ -34,7 +34,7 @@ import numbers
|
||||||
import locale
|
import locale
|
||||||
from test.support import (run_unittest, run_doctest, is_resource_enabled,
|
from test.support import (run_unittest, run_doctest, is_resource_enabled,
|
||||||
requires_IEEE_754, requires_docstrings,
|
requires_IEEE_754, requires_docstrings,
|
||||||
requires_legacy_unicode_capi)
|
requires_legacy_unicode_capi, check_sanitizer)
|
||||||
from test.support import (TestFailed,
|
from test.support import (TestFailed,
|
||||||
run_with_locale, cpython_only,
|
run_with_locale, cpython_only,
|
||||||
darwin_malloc_err_warning)
|
darwin_malloc_err_warning)
|
||||||
|
@ -43,17 +43,6 @@ from test.support import warnings_helper
|
||||||
import random
|
import random
|
||||||
import inspect
|
import inspect
|
||||||
import threading
|
import threading
|
||||||
import sysconfig
|
|
||||||
_cflags = sysconfig.get_config_var('CFLAGS') or ''
|
|
||||||
_config_args = sysconfig.get_config_var('CONFIG_ARGS') or ''
|
|
||||||
MEMORY_SANITIZER = (
|
|
||||||
'-fsanitize=memory' in _cflags or
|
|
||||||
'--with-memory-sanitizer' in _config_args
|
|
||||||
)
|
|
||||||
|
|
||||||
ADDRESS_SANITIZER = (
|
|
||||||
'-fsanitize=address' in _cflags
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
|
@ -5518,7 +5507,8 @@ class CWhitebox(unittest.TestCase):
|
||||||
# Issue 41540:
|
# Issue 41540:
|
||||||
@unittest.skipIf(sys.platform.startswith("aix"),
|
@unittest.skipIf(sys.platform.startswith("aix"),
|
||||||
"AIX: default ulimit: test is flaky because of extreme over-allocation")
|
"AIX: default ulimit: test is flaky because of extreme over-allocation")
|
||||||
@unittest.skipIf(MEMORY_SANITIZER or ADDRESS_SANITIZER, "sanitizer defaults to crashing "
|
@unittest.skipIf(check_sanitizer(address=True, memory=True),
|
||||||
|
"ASAN/MSAN sanitizer defaults to crashing "
|
||||||
"instead of returning NULL for malloc failure.")
|
"instead of returning NULL for malloc failure.")
|
||||||
def test_maxcontext_exact_arith(self):
|
def test_maxcontext_exact_arith(self):
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
import os
|
import os.path
|
||||||
|
import unittest
|
||||||
|
from test import support
|
||||||
from test.support import load_package_tests
|
from test.support import load_package_tests
|
||||||
|
|
||||||
|
|
||||||
|
if support.check_sanitizer(address=True, memory=True):
|
||||||
|
# bpo-46633: Skip the test because it is too slow when Python is built
|
||||||
|
# with ASAN/MSAN: between 5 and 20 minutes on GitHub Actions.
|
||||||
|
raise unittest.SkipTest("test too slow on ASAN/MSAN build")
|
||||||
|
|
||||||
|
|
||||||
# Load all tests in package
|
# Load all tests in package
|
||||||
def load_tests(*args):
|
def load_tests(*args):
|
||||||
return load_package_tests(os.path.dirname(__file__), *args)
|
return load_package_tests(os.path.dirname(__file__), *args)
|
||||||
|
|
|
@ -6,6 +6,13 @@ import unittest
|
||||||
from test import support
|
from test import support
|
||||||
from test.support import import_helper
|
from test.support import import_helper
|
||||||
|
|
||||||
|
|
||||||
|
if support.check_sanitizer(address=True, memory=True):
|
||||||
|
# bpo-46633: Skip the test because it is too slow when Python is built
|
||||||
|
# with ASAN/MSAN: between 5 and 20 minutes on GitHub Actions.
|
||||||
|
raise unittest.SkipTest("test too slow on ASAN/MSAN build")
|
||||||
|
|
||||||
|
|
||||||
basepath = os.path.normpath(
|
basepath = os.path.normpath(
|
||||||
os.path.dirname( # <src/install dir>
|
os.path.dirname( # <src/install dir>
|
||||||
os.path.dirname( # Lib
|
os.path.dirname( # Lib
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue