mirror of
https://github.com/reactos/CMake.git
synced 2024-12-12 05:45:51 +00:00
Merge branch 'gtest-discovery-timeout' into release-3.10
Merge-request: !1534
This commit is contained in:
commit
afae027d63
@ -217,6 +217,14 @@ same as the Google Test name (i.e. ``suite.testcase``); see also
|
||||
executable is being used in multiple calls to ``gtest_discover_tests()``.
|
||||
Note that this variable is only available in CTest.
|
||||
|
||||
``TIMEOUT num``
|
||||
Specifies how long (in seconds) CMake will wait for the test to enumerate
|
||||
available tests. If the test takes longer than this, discovery (and your
|
||||
build) will fail. Most test executables will enumerate their tests very
|
||||
quickly, but under some exceptional circumstances, a test may require a
|
||||
longer timeout. The default is 5. See also the ``TIMEOUT`` option of
|
||||
:command:`execute_process`.
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -349,7 +357,7 @@ function(gtest_discover_tests TARGET)
|
||||
cmake_parse_arguments(
|
||||
""
|
||||
"NO_PRETTY_TYPES;NO_PRETTY_VALUES"
|
||||
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST"
|
||||
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;TIMEOUT"
|
||||
"EXTRA_ARGS;PROPERTIES"
|
||||
${ARGN}
|
||||
)
|
||||
@ -360,6 +368,9 @@ function(gtest_discover_tests TARGET)
|
||||
if(NOT _TEST_LIST)
|
||||
set(_TEST_LIST ${TARGET}_TESTS)
|
||||
endif()
|
||||
if(NOT _TIMEOUT)
|
||||
set(_TIMEOUT 5)
|
||||
endif()
|
||||
|
||||
get_property(
|
||||
has_counter
|
||||
@ -407,6 +418,7 @@ function(gtest_discover_tests TARGET)
|
||||
-D "NO_PRETTY_VALUES=${_NO_PRETTY_VALUES}"
|
||||
-D "TEST_LIST=${_TEST_LIST}"
|
||||
-D "CTEST_FILE=${ctest_tests_file}"
|
||||
-D "TEST_DISCOVERY_TIMEOUT=${_TIMEOUT}"
|
||||
-P "${_GOOGLETEST_DISCOVER_TESTS_SCRIPT}"
|
||||
VERBATIM
|
||||
)
|
||||
|
@ -24,19 +24,24 @@ endfunction()
|
||||
# Run test executable to get list of available tests
|
||||
if(NOT EXISTS "${TEST_EXECUTABLE}")
|
||||
message(FATAL_ERROR
|
||||
"Specified test executable '${TEST_EXECUTABLE}' does not exist"
|
||||
"Specified test executable does not exist.\n"
|
||||
" Path: '${TEST_EXECUTABLE}'"
|
||||
)
|
||||
endif()
|
||||
execute_process(
|
||||
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" --gtest_list_tests
|
||||
TIMEOUT ${TEST_DISCOVERY_TIMEOUT}
|
||||
OUTPUT_VARIABLE output
|
||||
RESULT_VARIABLE result
|
||||
)
|
||||
if(NOT ${result} EQUAL 0)
|
||||
string(REPLACE "\n" "\n " output "${output}")
|
||||
message(FATAL_ERROR
|
||||
"Error running test executable '${TEST_EXECUTABLE}':\n"
|
||||
"Error running test executable.\n"
|
||||
" Path: '${TEST_EXECUTABLE}'\n"
|
||||
" Result: ${result}\n"
|
||||
" Output: ${output}\n"
|
||||
" Output:\n"
|
||||
" ${output}\n"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -0,0 +1 @@
|
||||
[^0]
|
@ -0,0 +1,2 @@
|
||||
Unable to find executable: timeout_test_NOT_BUILT
|
||||
Errors while running CTest
|
1
Tests/RunCMake/GoogleTest/GoogleTest-timeout-result.txt
Normal file
1
Tests/RunCMake/GoogleTest/GoogleTest-timeout-result.txt
Normal file
@ -0,0 +1 @@
|
||||
[^0]
|
7
Tests/RunCMake/GoogleTest/GoogleTest-timeout-stdout.txt
Normal file
7
Tests/RunCMake/GoogleTest/GoogleTest-timeout-stdout.txt
Normal file
@ -0,0 +1,7 @@
|
||||
( *|[0-9]+>)CMake Error at .*GoogleTestAddTests.cmake:[0-9]+ \(message\):
|
||||
( *|[0-9]+>) Error running test executable.
|
||||
?( *|[0-9]+>)
|
||||
( *|[0-9]+>) Path: '.*timeout_test(\.exe)?'
|
||||
( *|[0-9]+>) Result: Process terminated due to timeout
|
||||
( *|[0-9]+>) Output:
|
||||
( *|[0-9]+>) +
|
@ -21,3 +21,9 @@ gtest_discover_tests(
|
||||
EXTRA_ARGS how now "\"brown\" cow"
|
||||
PROPERTIES LABELS TEST2
|
||||
)
|
||||
|
||||
add_executable(timeout_test timeout_test.cpp)
|
||||
|
||||
gtest_discover_tests(
|
||||
timeout_test
|
||||
)
|
||||
|
@ -9,24 +9,45 @@ function(run_GoogleTest)
|
||||
endif()
|
||||
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
||||
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
||||
|
||||
run_cmake(GoogleTest)
|
||||
|
||||
run_cmake_command(GoogleTest-build
|
||||
${CMAKE_COMMAND}
|
||||
--build .
|
||||
--config Debug
|
||||
--target fake_gtest
|
||||
)
|
||||
|
||||
set(RunCMake_TEST_OUTPUT_MERGE 1)
|
||||
run_cmake_command(GoogleTest-timeout
|
||||
${CMAKE_COMMAND}
|
||||
--build .
|
||||
--config Debug
|
||||
--target timeout_test
|
||||
)
|
||||
set(RunCMake_TEST_OUTPUT_MERGE 0)
|
||||
|
||||
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-test-missing
|
||||
${CMAKE_CTEST_COMMAND}
|
||||
-C Debug
|
||||
-R timeout
|
||||
--no-label-summary
|
||||
)
|
||||
endfunction()
|
||||
|
||||
run_GoogleTest()
|
||||
|
15
Tests/RunCMake/GoogleTest/timeout_test.cpp
Normal file
15
Tests/RunCMake/GoogleTest/timeout_test.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
#if defined(_WIN32)
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
Sleep(10000);
|
||||
#else
|
||||
sleep(10);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user