diff options
author | Ralf Habacker <ralf.habacker@freenet.de> | 2024-01-17 21:51:30 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-01-31 13:33:15 (GMT) |
commit | f875c479f5b00198d813a56212b6410ee2a33b14 (patch) | |
tree | 1566abc79a1c213aed2f3783950dddb1839d121b /Modules/GoogleTest.cmake | |
parent | 622a498477403a18b7abf3e50124cbf62c5bb6ca (diff) | |
download | CMake-f875c479f5b00198d813a56212b6410ee2a33b14.zip CMake-f875c479f5b00198d813a56212b6410ee2a33b14.tar.gz CMake-f875c479f5b00198d813a56212b6410ee2a33b14.tar.bz2 |
GoogleTest: Honor TEST_LAUNCHER in gtest_discover_tests
We run test executables to discover tests. Use the same launchers that
are used to run the tests. We already handle `CROSSCOMPILING_EMULATOR`.
Update the logic to account for the `TEST_LAUNCHER` property added by
commit 1ec0372ed4 (add_test: Optionally use a launcher for tests running
in-project targets, 2023-11-11), and for the `CROSSCOMPILING_EMULATOR`
behavior change in commit ca5a300d7f (add_test: Honor
CROSSCOMPILING_EMULATOR only when cross-compiling, 2023-11-02).
Fixes: #25603
Co-authored-by: Brad King <brad.king@kitware.com>
Signed-off-by: Ralf Habacker <ralf.habacker@freenet.de>
Diffstat (limited to 'Modules/GoogleTest.cmake')
-rw-r--r-- | Modules/GoogleTest.cmake | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/Modules/GoogleTest.cmake b/Modules/GoogleTest.cmake index 3c12e14..b62f839 100644 --- a/Modules/GoogleTest.cmake +++ b/Modules/GoogleTest.cmake @@ -475,10 +475,29 @@ function(gtest_discover_tests TARGET) set(ctest_file_base "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}[${counter}]") set(ctest_include_file "${ctest_file_base}_include.cmake") set(ctest_tests_file "${ctest_file_base}_tests.cmake") - get_property(crosscompiling_emulator + get_property(test_launcher TARGET ${TARGET} - PROPERTY CROSSCOMPILING_EMULATOR + PROPERTY TEST_LAUNCHER ) + cmake_policy(GET CMP0158 _CMP0158 + PARENT_SCOPE # undocumented, do not use outside of CMake + ) + if(NOT _CMP0158 OR _CMP0158 STREQUAL "OLD" OR _CMP0158 STREQUAL "NEW" AND CMAKE_CROSSCOMPILING) + get_property(crosscompiling_emulator + TARGET ${TARGET} + PROPERTY CROSSCOMPILING_EMULATOR + ) + endif() + + if(test_launcher AND crosscompiling_emulator) + set(test_executor "${test_launcher}" "${crosscompiling_emulator}") + elseif(test_launcher) + set(test_executor "${test_launcher}") + elseif(crosscompiling_emulator) + set(test_executor "${crosscompiling_emulator}") + else() + set(test_executor "") + endif() if(_DISCOVERY_MODE STREQUAL "POST_BUILD") add_custom_command( @@ -487,7 +506,7 @@ function(gtest_discover_tests TARGET) COMMAND "${CMAKE_COMMAND}" -D "TEST_TARGET=${TARGET}" -D "TEST_EXECUTABLE=$<TARGET_FILE:${TARGET}>" - -D "TEST_EXECUTOR=${crosscompiling_emulator}" + -D "TEST_EXECUTOR=${test_executor}" -D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}" -D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}" -D "TEST_PROPERTIES=${_PROPERTIES}" @@ -529,7 +548,7 @@ function(gtest_discover_tests TARGET) " include(\"${CMAKE_ROOT}/Modules/GoogleTestAddTests.cmake\")" "\n" " gtest_discover_tests_impl(" "\n" " TEST_EXECUTABLE" " [==[" "$<TARGET_FILE:${TARGET}>" "]==]" "\n" - " TEST_EXECUTOR" " [==[" "${crosscompiling_emulator}" "]==]" "\n" + " TEST_EXECUTOR" " [==[" "${test_executor}" "]==]" "\n" " TEST_WORKING_DIR" " [==[" "${_WORKING_DIRECTORY}" "]==]" "\n" " TEST_EXTRA_ARGS" " [==[" "${_EXTRA_ARGS}" "]==]" "\n" " TEST_PROPERTIES" " [==[" "${_PROPERTIES}" "]==]" "\n" |