Mailing List Archive

bpo-44133: Skip PyThread_get_thread_native_id() if not available (GH-30636)
https://github.com/python/cpython/commit/16901c0482734dbd389b09ca3edfcf3e22faeed7
commit: 16901c0482734dbd389b09ca3edfcf3e22faeed7
branch: main
author: Victor Stinner <vstinner@python.org>
committer: vstinner <vstinner@python.org>
date: 2022-01-17T14:49:20+01:00
summary:

bpo-44133: Skip PyThread_get_thread_native_id() if not available (GH-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).

files:
M Lib/test/test_capi.py

diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index 9f217852ec529..7ada8406a3584 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -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
@@ -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:
@@ -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))

_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
https://mail.python.org/mailman/listinfo/python-checkins