From c6e418d1744aed95a6f25d22565204649dde29c7 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 11 Feb 2026 18:38:23 +0100 Subject: [PATCH] gh-141563: Enable test_cppext internal C API tests on macOS (#144711) Build the C API in C++11 mode on macOS. --- Lib/test/test_cppext/__init__.py | 14 +++++++++++--- Lib/test/test_cppext/extension.cpp | 5 ++--- Lib/test/test_cppext/setup.py | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Lib/test/test_cppext/__init__.py b/Lib/test/test_cppext/__init__.py index 9013503995bd..1fd01702f640 100644 --- a/Lib/test/test_cppext/__init__.py +++ b/Lib/test/test_cppext/__init__.py @@ -4,6 +4,7 @@ import os.path import shlex import shutil import subprocess +import sys import unittest from test import support @@ -27,9 +28,6 @@ SETUP = os.path.join(os.path.dirname(__file__), 'setup.py') class BaseTests: TEST_INTERNAL_C_API = False - def test_build(self): - self.check_build('_testcppext') - def check_build(self, extension_name, std=None, limited=False): venv_dir = 'env' with support.setup_venv_with_pip_setuptools(venv_dir) as python_exe: @@ -91,6 +89,9 @@ class BaseTests: class TestPublicCAPI(BaseTests, unittest.TestCase): + def test_build(self): + self.check_build('_testcppext') + @support.requires_gil_enabled('incompatible with Free Threading') def test_build_limited_cpp03(self): self.check_build('_test_limited_cpp03ext', std='c++03', limited=True) @@ -119,6 +120,13 @@ class TestPublicCAPI(BaseTests, unittest.TestCase): class TestInteralCAPI(BaseTests, unittest.TestCase): TEST_INTERNAL_C_API = True + def test_build(self): + kwargs = {} + if sys.platform == 'darwin': + # Old Apple clang++ default C++ std is gnu++98 + kwargs['std'] = 'c++11' + self.check_build('_testcppext_internal', **kwargs) + if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_cppext/extension.cpp b/Lib/test/test_cppext/extension.cpp index 06ef997d57af..92c4645039a0 100644 --- a/Lib/test/test_cppext/extension.cpp +++ b/Lib/test/test_cppext/extension.cpp @@ -16,9 +16,8 @@ #ifdef TEST_INTERNAL_C_API // gh-135906: Check for compiler warnings in the internal C API # include "internal/pycore_frame.h" - // mimalloc emits compiler warnings when Python is built on Windows - // and macOS. -# if !defined(MS_WINDOWS) && !defined(__APPLE__) + // mimalloc emits compiler warnings on Windows. +# if !defined(MS_WINDOWS) # include "internal/pycore_backoff.h" # include "internal/pycore_cell.h" # endif diff --git a/Lib/test/test_cppext/setup.py b/Lib/test/test_cppext/setup.py index a3eec1c67e15..2d9052a6b879 100644 --- a/Lib/test/test_cppext/setup.py +++ b/Lib/test/test_cppext/setup.py @@ -59,7 +59,7 @@ def main(): else: cppflags.append(f'-std={std}') - if limited or (std != 'c++03'): + if limited or (std != 'c++03') and not internal: # See CPPFLAGS_PEDANTIC docstring cppflags.extend(CPPFLAGS_PEDANTIC) -- 2.47.3