diff options
author | Brad King <brad.king@kitware.com> | 2017-12-07 08:03:11 -0500 |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-12-07 08:03:11 -0500 |
commit | afae027d6398462906e762da29f306f41d21c6ee (patch) | |
tree | 7604ad4c90941999a342a28c5fd329412a304e10 /Modules | |
parent | 05f86af716e00b58b5103b231a22515edcc95321 (diff) | |
parent | 935848a8a7164631b9410a0e6f7c5574b01bb85c (diff) | |
download | cmake-afae027d6398462906e762da29f306f41d21c6ee.tar.gz |
Merge branch 'gtest-discovery-timeout' into release-3.10
Merge-request: !1534
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/GoogleTest.cmake | 14 | ||||
-rw-r--r-- | Modules/GoogleTestAddTests.cmake | 11 |
2 files changed, 21 insertions, 4 deletions
diff --git a/Modules/GoogleTest.cmake b/Modules/GoogleTest.cmake index 3d47367d5e..c525101c7d 100644 --- a/Modules/GoogleTest.cmake +++ b/Modules/GoogleTest.cmake @@ -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 ) diff --git a/Modules/GoogleTestAddTests.cmake b/Modules/GoogleTestAddTests.cmake index 7d0d9097b1..5a4bdcad39 100644 --- a/Modules/GoogleTestAddTests.cmake +++ b/Modules/GoogleTestAddTests.cmake @@ -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() |