Skip to content

Commit d62a648

Browse files
committed
tests: add PYBIND11_TEST_SMART_HOLDER to tests
Signed-off-by: Henry Schreiner <[email protected]>
1 parent b0dd57b commit d62a648

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
cmake-args: -DCMAKE_CXX_STANDARD=23 -DPYBIND11_SIMPLE_GIL_MANAGEMENT=ON
4646
- runs-on: ubuntu-latest
4747
python-version: '3.14t'
48-
cmake-args: -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE"
48+
cmake-args: -DCMAKE_CXX_STANDARD=17 -DPYBIND11_TEST_SMART_HOLDER=ON
4949
- runs-on: ubuntu-latest
5050
python-version: 'pypy3.11'
5151
cmake-args: -DCMAKE_CXX_STANDARD=17
@@ -83,10 +83,10 @@ jobs:
8383
cmake-args: -DCMAKE_CXX_STANDARD=20
8484
- runs-on: ubuntu-latest
8585
python-version: '3.11'
86-
args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE" -DCMAKE_CXX_STANDARD=17
86+
args: -DPYBIND11_TEST_SMART_HOLDER=ON -DCMAKE_CXX_STANDARD=17
8787
- runs-on: ubuntu-latest
8888
python-version: '3.12'
89-
args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE" -DPYBIND11_SIMPLE_GIL_MANAGEMENT=ON
89+
args: -DPYBIND11_TEST_SMART_HOLDER=ON -DPYBIND11_SIMPLE_GIL_MANAGEMENT=ON
9090
- runs-on: ubuntu-latest
9191
python-version: '3.13t'
9292
cmake-args: -DCMAKE_CXX_STANDARD=20 -DPYBIND11_DISABLE_HANDLE_TYPE_NAME_DEFAULT_IMPLEMENTATION=ON
@@ -105,7 +105,7 @@ jobs:
105105
cmake-args: -DCMAKE_CXX_STANDARD=14
106106
- runs-on: macos-13
107107
python-version: '3.11'
108-
cmake-args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE"
108+
cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON
109109
- runs-on: macos-latest
110110
python-version: '3.12'
111111
cmake-args: -DCMAKE_CXX_STANDARD=17
@@ -125,7 +125,7 @@ jobs:
125125

126126
- runs-on: windows-2019
127127
python: '3.9'
128-
cmake-args: -DCMAKE_CXX_FLAGS="-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE"
128+
cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON
129129
- runs-on: windows-2022
130130
python-version: '3.8'
131131
cmake-args: -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DPYBIND11_NUMPY_1_ONLY=ON
@@ -138,7 +138,7 @@ jobs:
138138
# cmake-args: -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug
139139
- runs-on: windows-2022
140140
python-version: '3.10'
141-
cmake-args: -DCMAKE_CXX_FLAGS="/DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE /GR /EHsc"
141+
cmake-args: -DPYBIND11_TEST_SMART_HOLDER=ON -DCMAKE_CXX_FLAGS="/GR /EHsc"
142142
- runs-on: windows-2022
143143
python-version: '3.13'
144144
cmake-args: -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL

tests/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../tools")
6969
option(PYBIND11_WERROR "Report all warnings as errors" OFF)
7070
option(DOWNLOAD_EIGEN "Download EIGEN" OFF)
7171
option(PYBIND11_CUDA_TESTS "Enable building CUDA tests" OFF)
72+
option(PYBIND11_TEST_SMART_HOLDER "Change the default to smart holder" OFF)
7273
set(PYBIND11_TEST_OVERRIDE
7374
""
7475
CACHE STRING "Tests from ;-separated list of *.cpp files will be built instead of all tests")
@@ -499,6 +500,13 @@ foreach(target ${test_targets})
499500
target_compile_definitions(${target} PRIVATE -DPYBIND11_TEST_BOOST)
500501
endif()
501502

503+
if(PYBIND11_TEST_SMART_HOLDER)
504+
target_compile_definitions(
505+
${target}
506+
PUBLIC -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE
507+
)
508+
endif()
509+
502510
target_link_libraries(${target} PRIVATE ${STD_FS_LIB})
503511

504512
# Always write the output file directly into the 'tests' directory (even on MSVC)
@@ -572,6 +580,16 @@ if(NOT PYBIND11_CUDA_TESTS)
572580
"$<1:${CMAKE_CURRENT_BINARY_DIR}>")
573581
set_target_properties(mod_shared_interpreter_gil PROPERTIES LIBRARY_OUTPUT_DIRECTORY
574582
"$<1:${CMAKE_CURRENT_BINARY_DIR}>")
583+
if(PYBIND11_TEST_SMART_HOLDER)
584+
target_compile_definitions(
585+
mod_per_interpreter_gil
586+
PUBLIC -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE
587+
)
588+
target_compile_definitions(
589+
mod_shared_interpreter_gil
590+
PUBLIC -DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE
591+
)
592+
endif()
575593
add_dependencies(pytest mod_per_interpreter_gil mod_shared_interpreter_gil)
576594
endif()
577595

tests/test_cmake_build/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ function(pybind11_add_build_test name)
5151
add_dependencies(test_cmake_build test_build_${name})
5252
endfunction()
5353

54+
if(PYBIND11_TEST_SMART_HOLDER)
55+
add_compile_definitions(
56+
-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE)
57+
endif()
58+
5459
possibly_uninitialized(PYTHON_MODULE_EXTENSION Python_INTERPRETER_ID)
5560

5661
pybind11_add_build_test(subdirectory_function)

tests/test_embed/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ endif()
2828

2929
find_package(Threads REQUIRED)
3030

31+
if(PYBIND11_TEST_SMART_HOLDER)
32+
add_compile_definitions(
33+
-DPYBIND11_RUN_TESTING_WITH_SMART_HOLDER_AS_DEFAULT_BUT_NEVER_USE_IN_PRODUCTION_PLEASE)
34+
endif()
35+
3136
add_executable(test_embed catch.cpp test_interpreter.cpp test_subinterpreter.cpp)
3237
pybind11_enable_warnings(test_embed)
3338

0 commit comments

Comments
 (0)