Skip to content

Commit

Permalink
bpo-44133: Skip PyThread_get_thread_native_id() if not available (pyt…
Browse files Browse the repository at this point in the history
…honGH-30636)

test_capi.test_export_symbols() doesn't check if Python exports the
"PyThread_get_thread_native_id" symbol if the _thread.get_native_id()
function is not available (if the PY_HAVE_THREAD_NATIVE_ID macro is
not defined).
  • Loading branch information
vstinner authored Jan 17, 2022
1 parent ad6e640 commit 16901c0
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion Lib/test/test_capi.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# these are all functions _testcapi exports whose name begins with 'test_'.

from collections import OrderedDict
import _thread
import importlib.machinery
import importlib.util
import os
Expand Down Expand Up @@ -648,7 +649,11 @@ def test_export_symbols(self):
# "PyThread_get_thread_native_id" symbols are exported by the Python
# (directly by the binary, or via by the Python dynamic library).
ctypes = import_helper.import_module('ctypes')
names = ['PyThread_get_thread_native_id']
names = []

# Test if the PY_HAVE_THREAD_NATIVE_ID macro is defined
if hasattr(_thread, 'get_native_id'):
names.append('PyThread_get_thread_native_id')

# Python/frozenmain.c fails to build on Windows when the symbols are
# missing:
Expand All @@ -657,6 +662,7 @@ def test_export_symbols(self):
# - PyInitFrozenExtensions
if os.name != 'nt':
names.append('Py_FrozenMain')

for name in names:
with self.subTest(name=name):
self.assertTrue(hasattr(ctypes.pythonapi, name))
Expand Down

0 comments on commit 16901c0

Please sign in to comment.