|
|
|
include(RunCMake)
|
|
|
|
|
|
|
|
# Isolate our ctest runs from external environment.
|
|
|
|
unset(ENV{CTEST_PARALLEL_LEVEL})
|
|
|
|
unset(ENV{CTEST_OUTPUT_ON_FAILURE})
|
|
|
|
|
|
|
|
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)
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
|
|
|
endif()
|
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
|
|
|
run_cmake_with_options(GoogleTest -DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE})
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-build
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target fake_gtest
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-property-timeout-exe
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target property_timeout_test
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-test1
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-L TEST1
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-test2
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-L TEST2
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-test3
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-L TEST3
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-test4
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-L TEST4
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-test-missing
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-R no_tests_defined
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-property-timeout1
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-R property_timeout\\.case_no_discovery
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-property-timeout2
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-R property_timeout\\.case_with_discovery
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-build
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target skip_test
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-skip-test
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-R skip_test
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
function(run_GoogleTestLauncher DISCOVERY_MODE)
|
|
|
|
if(CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "14.0")
|
|
|
|
return()
|
|
|
|
endif()
|
|
|
|
if(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64" AND CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "19.36")
|
|
|
|
return()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Use a single build tree for a few tests without cleaning.
|
|
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTestLauncher-build)
|
|
|
|
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
run_cmake_with_options(GoogleTestLauncher
|
|
|
|
-DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE}
|
|
|
|
)
|
|
|
|
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
|
|
|
|
# do not issue any warnings on stderr that would cause the build to fail
|
|
|
|
set(RunCMake_TEST_OUTPUT_MERGE 1)
|
|
|
|
run_cmake_command(GoogleTestLauncher-build
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
)
|
|
|
|
unset(RunCMake_TEST_OUTPUT_MERGE)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTestLauncher-test
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-V
|
|
|
|
--no-label-sumary
|
|
|
|
)
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
function(run_GoogleTestXML DISCOVERY_MODE)
|
|
|
|
# Use a single build tree for a few tests without cleaning.
|
|
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTestXML-build)
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
|
|
|
endif()
|
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
|
|
|
run_cmake_with_options(GoogleTestXML -DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE})
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTestXML-discovery
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target xml_output
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTestXML-result
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-R GoogleTestXML
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTestXML-special-result
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-R GoogleTestXMLSpecial
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
function(run_GoogleTest_discovery_timeout DISCOVERY_MODE)
|
|
|
|
# Use a single build tree for a few tests without cleaning.
|
|
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-timeout)
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
|
|
|
endif()
|
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
|
|
|
run_cmake_with_options(GoogleTestDiscoveryTimeout -DDISCOVERY_MODE=${DISCOVERY_MODE})
|
|
|
|
|
|
|
|
set(RunCMake_TEST_OUTPUT_MERGE 1)
|
|
|
|
run_cmake_command(GoogleTest-discovery-${DISCOVERY_MODE}-timeout-build
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target discovery_timeout_test
|
|
|
|
)
|
|
|
|
set(RunCMake_TEST_OUTPUT_MERGE 0)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-discovery-${DISCOVERY_MODE}-timeout-test
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-R discovery_timeout_test
|
|
|
|
--no-label-sumary
|
|
|
|
)
|
|
|
|
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)
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
|
|
|
run_cmake(GoogleTestDiscoveryMultiConfig)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-build-release
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Release
|
|
|
|
--target configuration_gtest
|
|
|
|
)
|
|
|
|
run_cmake_command(GoogleTest-build-debug
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target configuration_gtest
|
|
|
|
)
|
|
|
|
run_cmake_command(GoogleTest-configuration-release
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Release
|
|
|
|
-L CONFIG
|
|
|
|
-N
|
|
|
|
)
|
|
|
|
run_cmake_command(GoogleTest-configuration-debug
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
-L CONFIG
|
|
|
|
-N
|
|
|
|
)
|
|
|
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
function(run_GoogleTest_discovery_test_list DISCOVERY_MODE)
|
|
|
|
# Use a single build tree for a few tests without cleaning.
|
|
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-test-list-build)
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
|
|
|
endif()
|
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
|
|
|
run_cmake_with_options(GoogleTestDiscoveryTestList -DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE})
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-discovery-test-list-build
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target test_list_test
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-discovery-test-list-test
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
function(run_GoogleTest_discovery_flush_script DISCOVERY_MODE)
|
|
|
|
# Use a single build tree for a few tests without cleaning.
|
|
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-flush-script-build)
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
|
|
|
endif()
|
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
|
|
|
run_cmake_with_options(GoogleTestDiscoveryFlushScript -DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE})
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-discovery-flush-script-build
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target flush_script_test
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-discovery-flush-script-test
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
function(run_GoogleTest_discovery_test_list_scoped DISCOVERY_MODE)
|
|
|
|
# Use a single build tree for a few tests without cleaning.
|
|
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTest-discovery-test-list-scoped-build)
|
|
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
|
|
|
endif()
|
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
|
|
|
run_cmake_with_options(GoogleTestDiscoveryTestListScoped -DCMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE=${DISCOVERY_MODE})
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-discovery-test-list-scoped-build
|
|
|
|
${CMAKE_COMMAND}
|
|
|
|
--build .
|
|
|
|
--config Debug
|
|
|
|
--target test_list_scoped_test
|
|
|
|
)
|
|
|
|
|
|
|
|
run_cmake_command(GoogleTest-discovery-test-list-scoped-test
|
|
|
|
${CMAKE_CTEST_COMMAND}
|
|
|
|
-C Debug
|
|
|
|
--no-label-summary
|
|
|
|
)
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
foreach(DISCOVERY_MODE POST_BUILD PRE_TEST)
|
|
|
|
message("Testing ${DISCOVERY_MODE} discovery mode via CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE global override...")
|
|
|
|
run_GoogleTest(${DISCOVERY_MODE})
|
|
|
|
run_GoogleTestLauncher(${DISCOVERY_MODE})
|
|
|
|
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()
|
|
|
|
run_GoogleTest_discovery_test_list(${DISCOVERY_MODE})
|
|
|
|
run_GoogleTest_discovery_test_list_scoped(${DISCOVERY_MODE})
|
|
|
|
run_GoogleTest_discovery_flush_script(${DISCOVERY_MODE})
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
|
|
message("Testing PRE_TEST discovery multi configuration...")
|
|
|
|
run_GoogleTest_discovery_multi_config()
|
|
|
|
endif()
|