mirror of https://github.com/python/cpython.git
gh-131032: Add support.linked_to_musl() function (#131071)
Skip test_math.test_fma_zero_result() if Python is linked to the musl C library.
This commit is contained in:
parent
2ed671b5e3
commit
68922ace4d
|
@ -3015,3 +3015,22 @@ def is_libssl_fips_mode():
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return False # more of a maybe, unless we add this to the _ssl module.
|
return False # more of a maybe, unless we add this to the _ssl module.
|
||||||
return get_fips_mode() != 0
|
return get_fips_mode() != 0
|
||||||
|
|
||||||
|
|
||||||
|
def linked_to_musl():
|
||||||
|
"""
|
||||||
|
Test if the Python executable is linked to the musl C library.
|
||||||
|
"""
|
||||||
|
if sys.platform != 'linux':
|
||||||
|
return False
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
exe = getattr(sys, '_base_executable', sys.executable)
|
||||||
|
cmd = ['ldd', exe]
|
||||||
|
try:
|
||||||
|
stdout = subprocess.check_output(cmd,
|
||||||
|
text=True,
|
||||||
|
stderr=subprocess.STDOUT)
|
||||||
|
except (OSError, subprocess.CalledProcessError):
|
||||||
|
return False
|
||||||
|
return ('musl' in stdout)
|
||||||
|
|
|
@ -2769,7 +2769,8 @@ def test_fma_infinities(self):
|
||||||
# properly: it doesn't use the right sign when the result is zero.
|
# properly: it doesn't use the right sign when the result is zero.
|
||||||
@unittest.skipIf(
|
@unittest.skipIf(
|
||||||
sys.platform.startswith(("freebsd", "wasi", "netbsd", "emscripten"))
|
sys.platform.startswith(("freebsd", "wasi", "netbsd", "emscripten"))
|
||||||
or (sys.platform == "android" and platform.machine() == "x86_64"),
|
or (sys.platform == "android" and platform.machine() == "x86_64")
|
||||||
|
or support.linked_to_musl(), # gh-131032
|
||||||
f"this platform doesn't implement IEE 754-2008 properly")
|
f"this platform doesn't implement IEE 754-2008 properly")
|
||||||
def test_fma_zero_result(self):
|
def test_fma_zero_result(self):
|
||||||
nonnegative_finites = [0.0, 1e-300, 2.3, 1e300]
|
nonnegative_finites = [0.0, 1e-300, 2.3, 1e300]
|
||||||
|
|
|
@ -744,6 +744,10 @@ def test_get_signal_name(self):
|
||||||
self.assertEqual(support.get_signal_name(exitcode), expected,
|
self.assertEqual(support.get_signal_name(exitcode), expected,
|
||||||
exitcode)
|
exitcode)
|
||||||
|
|
||||||
|
def test_linked_to_musl(self):
|
||||||
|
linked = support.linked_to_musl()
|
||||||
|
self.assertIsInstance(linked, bool)
|
||||||
|
|
||||||
# XXX -follows a list of untested API
|
# XXX -follows a list of untested API
|
||||||
# make_legacy_pyc
|
# make_legacy_pyc
|
||||||
# is_resource_enabled
|
# is_resource_enabled
|
||||||
|
|
Loading…
Reference in New Issue