From bc557a9b5bbafa95393312859aa2ac02598f904a Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Fri, 30 May 2025 14:38:07 -0400 Subject: [PATCH] tests: add PYBIND11_TEST_SMART_HOLDER to tests Signed-off-by: Henry Schreiner --- .github/workflows/ci.yml | 12 ++++++------ tests/CMakeLists.txt | 18 ++++++++++++++++++ tests/test_cmake_build/CMakeLists.txt | 5 +++++ tests/test_embed/CMakeLists.txt | 5 +++++ 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9c36dd07..5f0638007 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,7 @@ jobs: cmake-args: -DCMAKE_CXX_STANDARD=23 -DPYBIND11_SIMPLE_GIL_MANAGEMENT=ON - runs-on: ubuntu-latest python-version: '3.14t' - cmake-args: -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE" + cmake-args: -DCMAKE_CXX_STANDARD=17 -DPYBIND11_TEST_SMART_HOLDER=ON - runs-on: ubuntu-latest python-version: 'pypy3.11' cmake-args: -DCMAKE_CXX_STANDARD=17 @@ -83,10 +83,10 @@ jobs: cmake-args: -DCMAKE_CXX_STANDARD=20 - runs-on: ubuntu-latest python-version: '3.11' - cmake-args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE" -DCMAKE_CXX_STANDARD=17 + cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON -DCMAKE_CXX_STANDARD=17 - runs-on: ubuntu-latest python-version: '3.12' - cmake-args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE" -DPYBIND11_SIMPLE_GIL_MANAGEMENT=ON + cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON -DPYBIND11_SIMPLE_GIL_MANAGEMENT=ON - runs-on: ubuntu-latest python-version: '3.13t' cmake-args: -DCMAKE_CXX_STANDARD=20 -DPYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION=ON @@ -105,7 +105,7 @@ jobs: cmake-args: -DCMAKE_CXX_STANDARD=14 - runs-on: macos-13 python-version: '3.11' - cmake-args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE" + cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON - runs-on: macos-latest python-version: '3.12' cmake-args: -DCMAKE_CXX_STANDARD=17 -DPYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION=ON @@ -125,7 +125,7 @@ jobs: - runs-on: windows-2019 python-version: '3.9' - cmake-args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE" + cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON - runs-on: windows-2022 python-version: '3.8' cmake-args: -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DPYBIND11_NUMPY_1_ONLY=ON @@ -138,7 +138,7 @@ jobs: # cmake-args: -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug - runs-on: windows-2022 python-version: '3.10' - cmake-args: -DCMAKE_CXX_FLAGS="/DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE /GR /EHsc" + cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON -DCMAKE_CXX_FLAGS="/GR /EHsc" - runs-on: windows-2022 python-version: '3.13' cmake-args: -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 374a13886..069b4f6f3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -69,6 +69,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../tools") option(PYBIND11_WERROR "Report all warnings as errors" OFF) option(DOWNLOAD_EIGEN "Download EIGEN" OFF) option(PYBIND11_CUDA_TESTS "Enable building CUDA tests" OFF) +option(PYBIND11_TEST_SMART_HOLDER "Change the default to smart holder" OFF) set(PYBIND11_TEST_OVERRIDE "" CACHE STRING "Tests from ;-separated list of *.cpp files will be built instead of all tests") @@ -499,6 +500,13 @@ foreach(target ${test_targets}) target_compile_definitions(${target} PRIVATE -DPYBIND11_TEST_BOOST) endif() + if(PYBIND11_TEST_SMART_HOLDER) + target_compile_definitions( + ${target} + PUBLIC -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE + ) + endif() + target_link_libraries(${target} PRIVATE ${STD_FS_LIB}) # Always write the output file directly into the 'tests' directory (even on MSVC) @@ -572,6 +580,16 @@ if(NOT PYBIND11_CUDA_TESTS) "$<1:${CMAKE_CURRENT_BINARY_DIR}>") set_target_properties(mod_shared_interpreter_gil PROPERTIES LIBRARY_OUTPUT_DIRECTORY "$<1:${CMAKE_CURRENT_BINARY_DIR}>") + if(PYBIND11_TEST_SMART_HOLDER) + target_compile_definitions( + mod_per_interpreter_gil + PUBLIC -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE + ) + target_compile_definitions( + mod_shared_interpreter_gil + PUBLIC -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE + ) + endif() add_dependencies(pytest mod_per_interpreter_gil mod_shared_interpreter_gil) endif() diff --git a/tests/test_cmake_build/CMakeLists.txt b/tests/test_cmake_build/CMakeLists.txt index ec365c0f6..ce63a6906 100644 --- a/tests/test_cmake_build/CMakeLists.txt +++ b/tests/test_cmake_build/CMakeLists.txt @@ -51,6 +51,11 @@ function(pybind11_add_build_test name) add_dependencies(test_cmake_build test_build_${name}) endfunction() +if(PYBIND11_TEST_SMART_HOLDER) + add_compile_definitions( + -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE) +endif() + possibly_uninitialized(PYTHON_MODULE_EXTENSION Python_INTERPRETER_ID) pybind11_add_build_test(subdirectory_function) diff --git a/tests/test_embed/CMakeLists.txt b/tests/test_embed/CMakeLists.txt index af3c848ad..23c333643 100644 --- a/tests/test_embed/CMakeLists.txt +++ b/tests/test_embed/CMakeLists.txt @@ -28,6 +28,11 @@ endif() find_package(Threads REQUIRED) +if(PYBIND11_TEST_SMART_HOLDER) + add_compile_definitions( + -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE) +endif() + add_executable(test_embed catch.cpp test_interpreter.cpp test_subinterpreter.cpp) pybind11_enable_warnings(test_embed)