mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-21 06:10:16 +08:00
gtest_discover_tests: Re-run PRE_TEST discovery on any arg change
Fixes: #22912
This commit is contained in:
@@ -513,7 +513,8 @@ function(gtest_discover_tests TARGET)
|
||||
string(CONCAT ctest_include_content
|
||||
"if(EXISTS \"$<TARGET_FILE:${TARGET}>\")" "\n"
|
||||
" if(NOT EXISTS \"${ctest_tests_file}\" OR" "\n"
|
||||
" NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"$<TARGET_FILE:${TARGET}>\")" "\n"
|
||||
" NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"$<TARGET_FILE:${TARGET}>\" OR\n"
|
||||
" NOT \"${ctest_tests_file}\" IS_NEWER_THAN \"\${CMAKE_CURRENT_LIST_FILE}\")\n"
|
||||
" include(\"${_GOOGLETEST_DISCOVER_TESTS_SCRIPT}\")" "\n"
|
||||
" gtest_discover_tests_impl(" "\n"
|
||||
" TEST_EXECUTABLE" " [==[" "$<TARGET_FILE:${TARGET}>" "]==]" "\n"
|
||||
|
@@ -0,0 +1,7 @@
|
||||
Test project .*/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change
|
||||
Test #1: basic\.case_foo
|
||||
Test #2: basic\.case_bar
|
||||
Test #3: basic\.disabled_case \(Disabled\)
|
||||
Test #4: basic\.DISABLEDnot_really_case
|
||||
|
||||
Total Tests: 4
|
@@ -0,0 +1,5 @@
|
||||
Test project .*/Tests/RunCMake/GoogleTest/GoogleTest-discovery-arg-change
|
||||
Test #1: typed/short\.case
|
||||
Test #2: typed/float\.case
|
||||
|
||||
Total Tests: 2
|
14
Tests/RunCMake/GoogleTest/GoogleTestDiscoveryArgChange.cmake
Normal file
14
Tests/RunCMake/GoogleTest/GoogleTestDiscoveryArgChange.cmake
Normal file
@@ -0,0 +1,14 @@
|
||||
enable_language(CXX)
|
||||
include(GoogleTest)
|
||||
|
||||
enable_testing()
|
||||
|
||||
include(xcode_sign_adhoc.cmake)
|
||||
|
||||
add_executable(fake_gtest fake_gtest.cpp)
|
||||
xcode_sign_adhoc(fake_gtest)
|
||||
|
||||
gtest_discover_tests(
|
||||
fake_gtest
|
||||
TEST_FILTER "${TEST_FILTER}*"
|
||||
)
|
@@ -1,5 +1,12 @@
|
||||
include(RunCMake)
|
||||
|
||||
if(RunCMake_GENERATOR STREQUAL "Borland Makefiles" OR
|
||||
RunCMake_GENERATOR STREQUAL "Watcom WMake")
|
||||
set(fs_delay 3)
|
||||
else()
|
||||
set(fs_delay 1.125)
|
||||
endif()
|
||||
|
||||
function(run_GoogleTest DISCOVERY_MODE)
|
||||
# Use a single build tree for a few tests without cleaning.
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-build)
|
||||
@@ -153,6 +160,46 @@ function(run_GoogleTest_discovery_timeout DISCOVERY_MODE)
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(run_GoogleTest_discovery_arg_change DISCOVERY_MODE)
|
||||
# Use a single build tree for a few tests without cleaning.
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-arg-change)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
||||
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
||||
|
||||
run_cmake_with_options(GoogleTestDiscoveryArgChange
|
||||
-DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE}
|
||||
-DTEST_FILTER=basic
|
||||
)
|
||||
run_cmake_command(GoogleTest-discovery-arg-change-build
|
||||
${CMAKE_COMMAND}
|
||||
--build .
|
||||
--config Release
|
||||
--target fake_gtest
|
||||
)
|
||||
run_cmake_command(GoogleTest-discovery-arg-change-basic
|
||||
${CMAKE_CTEST_COMMAND}
|
||||
-C Release
|
||||
-N
|
||||
)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E sleep ${fs_delay}) # handle 1s resolution
|
||||
run_cmake_with_options(GoogleTestDiscoveryArgChange
|
||||
-DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE}
|
||||
-DTEST_FILTER=typed
|
||||
)
|
||||
run_cmake_command(GoogleTest-discovery-arg-change-build
|
||||
${CMAKE_COMMAND}
|
||||
--build .
|
||||
--config Release
|
||||
--target fake_gtest
|
||||
)
|
||||
run_cmake_command(GoogleTest-discovery-arg-change-typed
|
||||
${CMAKE_CTEST_COMMAND}
|
||||
-C Release
|
||||
-N
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(run_GoogleTest_discovery_multi_config)
|
||||
# Use a single build tree for a few tests without cleaning.
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-multi-config)
|
||||
@@ -195,6 +242,10 @@ foreach(DISCOVERY_MODE POST_BUILD PRE_TEST)
|
||||
run_GoogleTestXML(${DISCOVERY_MODE})
|
||||
message("Testing ${DISCOVERY_MODE} discovery mode via DISCOVERY_MODE option...")
|
||||
run_GoogleTest_discovery_timeout(${DISCOVERY_MODE})
|
||||
if(# VS 9 does not rebuild if POST_BUILD command changes.
|
||||
NOT "${DISCOVERY_MODE};${RunCMake_GENERATOR}" MATCHES "^POST_BUILD;Visual Studio 9")
|
||||
run_GoogleTest_discovery_arg_change(${DISCOVERY_MODE})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
||||
|
Reference in New Issue
Block a user