summaryrefslogtreecommitdiffstats
path: root/Modules/GoogleTest.cmake
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2024-01-17 21:51:30 (GMT)
committerBrad King <brad.king@kitware.com>2024-01-31 13:33:15 (GMT)
commitf875c479f5b00198d813a56212b6410ee2a33b14 (patch)
tree1566abc79a1c213aed2f3783950dddb1839d121b /Modules/GoogleTest.cmake
parent622a498477403a18b7abf3e50124cbf62c5bb6ca (diff)
downloadCMake-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.cmake27
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"