mirror of
https://github.com/python/cpython.git
synced 2025-10-03 05:35:59 +00:00
[3.9] bpo-40928: notify users running test_decimal on macOS of malloc warnings (GH-26783) (GH-27629)
* When trying to allocate very large regions on macOS, malloc does not fail silently. It sends a noisy error out to STDERR
* This provides a helper function to warn the user, and provides the warning for test_decimal, which consistently generates these warnings on macOS.
Co-authored-by: Łukasz Langa <lukasz@langa.pl>.
(cherry picked from commit 15d3c14df3
)
Co-authored-by: Jack DeVries <58614260+jdevries3133@users.noreply.github.com>
This commit is contained in:
parent
7dad033751
commit
693a661478
3 changed files with 27 additions and 1 deletions
|
@ -986,6 +986,25 @@ TEST_HOME_DIR = os.path.dirname(TEST_SUPPORT_DIR)
|
||||||
# TEST_DATA_DIR is used as a target download location for remote resources
|
# TEST_DATA_DIR is used as a target download location for remote resources
|
||||||
TEST_DATA_DIR = os.path.join(TEST_HOME_DIR, "data")
|
TEST_DATA_DIR = os.path.join(TEST_HOME_DIR, "data")
|
||||||
|
|
||||||
|
|
||||||
|
def darwin_malloc_err_warning(test_name):
|
||||||
|
"""Assure user that loud errors generated by macOS libc's malloc are
|
||||||
|
expected."""
|
||||||
|
if sys.platform != 'darwin':
|
||||||
|
return
|
||||||
|
|
||||||
|
import shutil
|
||||||
|
msg = ' NOTICE '
|
||||||
|
detail = (f'{test_name} may generate "malloc can\'t allocate region"\n'
|
||||||
|
'warnings on macOS systems. This behavior is known. Do not\n'
|
||||||
|
'report a bug unless tests are also failing. See bpo-40928.')
|
||||||
|
|
||||||
|
padding, _ = shutil.get_terminal_size()
|
||||||
|
print(msg.center(padding, '-'))
|
||||||
|
print(detail)
|
||||||
|
print('-' * padding)
|
||||||
|
|
||||||
|
|
||||||
def findfile(filename, subdir=None):
|
def findfile(filename, subdir=None):
|
||||||
"""Try to find a file on sys.path or in the test directory. If it is not
|
"""Try to find a file on sys.path or in the test directory. If it is not
|
||||||
found the argument passed to the function is returned (this does not
|
found the argument passed to the function is returned (this does not
|
||||||
|
|
|
@ -35,12 +35,17 @@ 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)
|
||||||
from test.support import (import_fresh_module, TestFailed,
|
from test.support import (import_fresh_module, TestFailed,
|
||||||
run_with_locale, cpython_only)
|
run_with_locale, cpython_only,
|
||||||
|
darwin_malloc_err_warning)
|
||||||
import random
|
import random
|
||||||
import inspect
|
import inspect
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
|
||||||
|
if sys.platform == 'darwin':
|
||||||
|
darwin_malloc_err_warning('test_decimal')
|
||||||
|
|
||||||
|
|
||||||
C = import_fresh_module('decimal', fresh=['_decimal'])
|
C = import_fresh_module('decimal', fresh=['_decimal'])
|
||||||
P = import_fresh_module('decimal', blocked=['_decimal'])
|
P = import_fresh_module('decimal', blocked=['_decimal'])
|
||||||
orig_sys_decimal = sys.modules['decimal']
|
orig_sys_decimal = sys.modules['decimal']
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Notify users running test_decimal regression tests on macOS of potential
|
||||||
|
harmless "malloc can't allocate region" messages spewed by test_decimal.
|
Loading…
Add table
Add a link
Reference in a new issue