summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-12-02 14:31:49 (GMT)
committerBrad King <brad.king@kitware.com>2009-12-02 14:31:49 (GMT)
commitb14734b9b65db0abbc21a3e339a4ce6df77a4f6d (patch)
tree67fa74352b99426593ab464c728d74b8a5c9c382
parented55b1b8d217a943a4c5b6d332e32d7d8913a49e (diff)
downloadCMake-b14734b9b65db0abbc21a3e339a4ce6df77a4f6d.zip
CMake-b14734b9b65db0abbc21a3e339a4ce6df77a4f6d.tar.gz
CMake-b14734b9b65db0abbc21a3e339a4ce6df77a4f6d.tar.bz2
Make CTestTestTimeout time configurable
In this test we start up a cmake script that runs a process that sleeps, and the timeout for the script is shorter than the sleep time. However, in order to properly detect that the sleeping grandchild is killed when the script times out we need to give sufficient time for the script to start the grandchild. Otherwise the log file for the grandchild is not available. On some (cygwin) builds our previous 1 second timeout for the script was not long enough to let the interpreter load and start the grandchild. We make the timeout time configurable by setting CTestTestTimeout_TIME in the cache for CMake itself. It tells the test how long to let the script run. The grandchild always sleeps for 4 seconds longer to ensure a comfortable window during which the process tree can be killed.
-rw-r--r--Tests/CTestTestTimeout/CMakeLists.txt7
-rw-r--r--Tests/CTestTestTimeout/test.cmake.in1
-rw-r--r--Tests/CTestTestTimeout/timeout.c4
3 files changed, 9 insertions, 3 deletions
diff --git a/Tests/CTestTestTimeout/CMakeLists.txt b/Tests/CTestTestTimeout/CMakeLists.txt
index 5fce680..d22c63d 100644
--- a/Tests/CTestTestTimeout/CMakeLists.txt
+++ b/Tests/CTestTestTimeout/CMakeLists.txt
@@ -2,6 +2,11 @@ cmake_minimum_required (VERSION 2.8)
PROJECT(CTestTestTimeout)
INCLUDE(CTest)
+IF(NOT TIMEOUT)
+ SET(TIMEOUT 1)
+ENDIF()
+
+ADD_DEFINITIONS(-DTIMEOUT=${TIMEOUT})
ADD_EXECUTABLE (Timeout timeout.c)
ADD_TEST(NAME TestTimeout
@@ -9,7 +14,7 @@ ADD_TEST(NAME TestTimeout
-D Log=${CMAKE_CURRENT_BINARY_DIR}/timeout.log
-P ${CMAKE_CURRENT_SOURCE_DIR}/timeout.cmake
)
-SET_TESTS_PROPERTIES(TestTimeout PROPERTIES TIMEOUT 1)
+SET_TESTS_PROPERTIES(TestTimeout PROPERTIES TIMEOUT ${TIMEOUT})
ADD_TEST(NAME CheckChild
COMMAND ${CMAKE_COMMAND} -D Timeout=$<TARGET_FILE:Timeout>
diff --git a/Tests/CTestTestTimeout/test.cmake.in b/Tests/CTestTestTimeout/test.cmake.in
index 4582801..2aa41e2 100644
--- a/Tests/CTestTestTimeout/test.cmake.in
+++ b/Tests/CTestTestTimeout/test.cmake.in
@@ -21,6 +21,7 @@ SET(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIP
#CTEST_EMPTY_BINARY_DIRECTORY(${CTEST_BINARY_DIRECTORY})
FILE(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "
+TIMEOUT:STRING=@CTestTestTimeout_TIME@
CMAKE_TEST_GENERATOR:STRING=@CMAKE_TEST_GENERATOR@
CMAKE_TEST_MAKEPROGRAM:FILEPATH=@CMAKE_TEST_MAKEPROGRAM@
MAKECOMMAND:STRING=@MAKECOMMAND@
diff --git a/Tests/CTestTestTimeout/timeout.c b/Tests/CTestTestTimeout/timeout.c
index ba91bc0..370ab22 100644
--- a/Tests/CTestTestTimeout/timeout.c
+++ b/Tests/CTestTestTimeout/timeout.c
@@ -9,9 +9,9 @@
int main(void)
{
#if defined(_WIN32)
- Sleep(5000);
+ Sleep((TIMEOUT+4)*1000);
#else
- sleep(5);
+ sleep((TIMEOUT+4));
#endif
printf("timeout process finished sleeping!\n");
return -1;