From c7884ceefa580bb7ccb1ee336c5ba47545fe7dc3 Mon Sep 17 00:00:00 2001 From: Ihor Sofiichenko Date: Fri, 17 Jan 2025 18:53:22 -0500 Subject: [PATCH] GoogleTest: Restore support for spaces in explicit WORKING_DIRECTORY Revise commit fc7aa3cd69 (tests: Preserve empty arguments in test command lines, 2024-09-30, v3.31.0-rc1~33^2) to delay variable expansion until code evaluation. Otherwise we may parse the working directory path as CMake language code. --- Modules/GoogleTest.cmake | 20 ++++++++++---------- Tests/RunCMake/GoogleTest/Launcher.cmake | 2 ++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Modules/GoogleTest.cmake b/Modules/GoogleTest.cmake index 63745fe627..456a39c748 100644 --- a/Modules/GoogleTest.cmake +++ b/Modules/GoogleTest.cmake @@ -400,9 +400,9 @@ function(gtest_add_tests) message(FATAL_ERROR "${arg_TARGET} does not define an existing CMake target") endif() if(NOT arg_WORKING_DIRECTORY) - unset(workDir) + unset(maybe_WORKING_DIRECTORY) else() - set(workDir WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}") + set(maybe_WORKING_DIRECTORY "WORKING_DIRECTORY \${arg_WORKING_DIRECTORY}") endif() if(NOT arg_SOURCES) @@ -492,11 +492,11 @@ function(gtest_add_tests) ${arg_TEST_PREFIX}${orig_test_name}${arg_TEST_SUFFIX} ) cmake_language(EVAL CODE " - add_test(NAME ${ctest_test_name} - ${workDir} - COMMAND ${arg_TARGET} + add_test(NAME \${ctest_test_name} + ${maybe_WORKING_DIRECTORY} + COMMAND \${arg_TARGET} --gtest_also_run_disabled_tests - --gtest_filter=${gtest_test_name} + --gtest_filter=\${gtest_test_name} ${extra_args} __CMP0178 [==[${cmp0178}]==] )" @@ -508,10 +508,10 @@ function(gtest_add_tests) else() set(ctest_test_name ${arg_TEST_PREFIX}${gtest_test_name}${arg_TEST_SUFFIX}) cmake_language(EVAL CODE " - add_test(NAME ${ctest_test_name} - ${workDir} - COMMAND ${arg_TARGET} - --gtest_filter=${gtest_test_name} + add_test(NAME \${ctest_test_name} + ${maybe_WORKING_DIRECTORY} + COMMAND \${arg_TARGET} + --gtest_filter=\${gtest_test_name} ${extra_args} __CMP0178 [==[${cmp0178}]==] )" diff --git a/Tests/RunCMake/GoogleTest/Launcher.cmake b/Tests/RunCMake/GoogleTest/Launcher.cmake index 11ba87e36d..13ebd21fce 100644 --- a/Tests/RunCMake/GoogleTest/Launcher.cmake +++ b/Tests/RunCMake/GoogleTest/Launcher.cmake @@ -27,9 +27,11 @@ set_property(TARGET launcher_test PROPERTY CROSSCOMPILING_EMULATOR "${emulator}" gtest_discover_tests( launcher_test EXTRA_ARGS a "" b + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) gtest_add_tests( TARGET launcher_test EXTRA_ARGS a "" b + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )