[Python-checkins] bpo-44133: Skip PyThread_get_thread_native_id() if not available (GH-30636)

vstinner webhook-mailer at python.org
Mon Jan 17 08:49:32 EST 2022


https://github.com/python/cpython/commit/16901c0482734dbd389b09ca3edfcf3e22faeed7
commit: 16901c0482734dbd389b09ca3edfcf3e22faeed7
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at 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))



More information about the Python-checkins mailing list