mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
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.
(cherry picked from commit 68922ace4d
)
This commit is contained in:
parent
589382bd04
commit
050813c026
3 changed files with 26 additions and 2 deletions
|
@ -2767,3 +2767,22 @@ class BrokenIter:
|
|||
if self.iter_raises:
|
||||
1/0
|
||||
return self
|
||||
|
||||
|
||||
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)
|
||||
|
|
|
@ -2712,8 +2712,9 @@ class FMATests(unittest.TestCase):
|
|||
# gh-73468: On some platforms, libc fma() doesn't implement IEE 754-2008
|
||||
# properly: it doesn't use the right sign when the result is zero.
|
||||
@unittest.skipIf(
|
||||
sys.platform.startswith(("freebsd", "wasi", "netbsd"))
|
||||
or (sys.platform == "android" and platform.machine() == "x86_64"),
|
||||
sys.platform.startswith(("freebsd", "wasi", "netbsd", "emscripten"))
|
||||
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")
|
||||
def test_fma_zero_result(self):
|
||||
nonnegative_finites = [0.0, 1e-300, 2.3, 1e300]
|
||||
|
|
|
@ -733,6 +733,10 @@ class TestSupport(unittest.TestCase):
|
|||
self.assertEqual(support.copy_python_src_ignore(path, os.listdir(path)),
|
||||
ignored)
|
||||
|
||||
def test_linked_to_musl(self):
|
||||
linked = support.linked_to_musl()
|
||||
self.assertIsInstance(linked, bool)
|
||||
|
||||
# XXX -follows a list of untested API
|
||||
# make_legacy_pyc
|
||||
# is_resource_enabled
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue