Skip to content

Commit 1e1bc55

Browse files
committed
Use SHLIB_SUFFIX in test_find_incompatible_extension_modules when available
Signed-off-by: Filipe Laíns <lains@riseup.net>
1 parent 49f20f6 commit 1e1bc55

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

Lib/test/test_traceback.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import random
1515
import string
1616
import importlib.machinery
17+
import sysconfig
1718
from test import support
1819
import shutil
1920
from test.support import (Error, captured_output, cpython_only, ALWAYS_EQ,
@@ -5195,15 +5196,29 @@ def test_windows_only_module_error(self):
51955196
else:
51965197
self.fail("ModuleNotFoundError was not raised")
51975198

5199+
@unittest.skipIf(not importlib.machinery.EXTENSION_SUFFIXES, 'Platform does not support extension modules')
51985200
def test_find_incompatible_extension_modules(self):
51995201
"""_find_incompatible_extension_modules assumes the last extension in
52005202
importlib.machinery.EXTENSION_SUFFIXES (defined in Python/dynload_*.c)
52015203
is untagged (eg. .so, .pyd).
52025204
52035205
This test exists to make sure that assumption is correct.
52045206
"""
5205-
if importlib.machinery.EXTENSION_SUFFIXES:
5206-
self.assertEqual(len(importlib.machinery.EXTENSION_SUFFIXES[-1].split('.')), 2)
5207+
last_extension_suffix = importlib.machinery.EXTENSION_SUFFIXES[-1]
5208+
if shlib_suffix := sysconfig.get_config_var('SHLIB_SUFFIX'):
5209+
self.assertEqual(last_extension_suffix, shlib_suffix)
5210+
else:
5211+
dot, *extensions = last_extension_suffix.split('.')
5212+
self.assertEqual(dot, '') # sanity check
5213+
# if SHLIB_SUFFIX is not define, we assume the native
5214+
# shared library suffix only contains one extension
5215+
# (eg. '.so', bad eg. '.cpython-315-x86_64-linux-gnu.so')
5216+
self.assertEqual(len(extensions), 1, msg=(
5217+
'The last suffix in importlib.machinery.EXTENSION_SUFFIXES '
5218+
'contains more than one extension, so it is probably different '
5219+
'than SHLIB_SUFFIX. It probably contains an ABI tag! '
5220+
'If this is a false positive, define SHLIB_SUFFIX in sysconfig.'
5221+
))
52075222

52085223

52095224
class TestColorizedTraceback(unittest.TestCase):

0 commit comments

Comments
 (0)