summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/CTestTimeout
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-01-13 19:06:03 (GMT)
committerBrad King <brad.king@kitware.com>2020-01-14 15:28:51 (GMT)
commit2f5eb1800b76288ad3fbd6404b6b08ab26fb9158 (patch)
treef4bd7a92e85f4f47be46b24bb6b230b33a47d21e /Tests/RunCMake/CTestTimeout
parent4bac5b628ea1e854ab23b6e713ad3eb211b3a9e3 (diff)
downloadCMake-2f5eb1800b76288ad3fbd6404b6b08ab26fb9158.zip
CMake-2f5eb1800b76288ad3fbd6404b6b08ab26fb9158.tar.gz
CMake-2f5eb1800b76288ad3fbd6404b6b08ab26fb9158.tar.bz2
Tests: Add RunCMake.CTestTimeout test
This test will consolidate CTest timeout-related tests.
Diffstat (limited to 'Tests/RunCMake/CTestTimeout')
-rw-r--r--Tests/RunCMake/CTestTimeout/Basic-stdout.txt6
-rw-r--r--Tests/RunCMake/CTestTimeout/CMakeLists.txt.in15
-rw-r--r--Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake14
-rw-r--r--Tests/RunCMake/CTestTimeout/TestTimeout.c17
-rw-r--r--Tests/RunCMake/CTestTimeout/test.cmake.in16
5 files changed, 68 insertions, 0 deletions
diff --git a/Tests/RunCMake/CTestTimeout/Basic-stdout.txt b/Tests/RunCMake/CTestTimeout/Basic-stdout.txt
new file mode 100644
index 0000000..30ed178
--- /dev/null
+++ b/Tests/RunCMake/CTestTimeout/Basic-stdout.txt
@@ -0,0 +1,6 @@
+Test project [^
+]*/Tests/RunCMake/CTestTimeout/Basic-build
+ Start 1: TestTimeout
+1/1 Test #1: TestTimeout ......................\*\*\*Timeout +[0-9.]+ sec
++
+0% tests passed, 1 tests failed out of 1
diff --git a/Tests/RunCMake/CTestTimeout/CMakeLists.txt.in b/Tests/RunCMake/CTestTimeout/CMakeLists.txt.in
new file mode 100644
index 0000000..20faa94
--- /dev/null
+++ b/Tests/RunCMake/CTestTimeout/CMakeLists.txt.in
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.16)
+project(CTestTest@CASE_NAME@ C)
+include(CTest)
+
+add_executable(TestTimeout TestTimeout.c)
+
+if(NOT TIMEOUT)
+ set(TIMEOUT 4)
+endif()
+target_compile_definitions(TestTimeout PRIVATE TIMEOUT=${TIMEOUT})
+
+add_test(NAME TestTimeout COMMAND TestTimeout)
+set_property(TEST TestTimeout PROPERTY TIMEOUT ${TIMEOUT})
+
+@CASE_CMAKELISTS_SUFFIX_CODE@
diff --git a/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake b/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake
new file mode 100644
index 0000000..428d0b7
--- /dev/null
+++ b/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake
@@ -0,0 +1,14 @@
+include(RunCTest)
+
+if(NOT TIMEOUT)
+ # Give the process time to load and start running.
+ set(TIMEOUT 4)
+endif()
+
+function(run_ctest_timeout CASE_NAME)
+ configure_file(${RunCMake_SOURCE_DIR}/TestTimeout.c
+ ${RunCMake_BINARY_DIR}/${CASE_NAME}/TestTimeout.c COPYONLY)
+ run_ctest(${CASE_NAME})
+endfunction()
+
+run_ctest_timeout(Basic)
diff --git a/Tests/RunCMake/CTestTimeout/TestTimeout.c b/Tests/RunCMake/CTestTimeout/TestTimeout.c
new file mode 100644
index 0000000..52a5648
--- /dev/null
+++ b/Tests/RunCMake/CTestTimeout/TestTimeout.c
@@ -0,0 +1,17 @@
+#if defined(_WIN32)
+# include <windows.h>
+#else
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+
+int main(void)
+{
+#if defined(_WIN32)
+ Sleep((TIMEOUT + 4) * 1000);
+#else
+ sleep((TIMEOUT + 4));
+#endif
+ return 0;
+}
diff --git a/Tests/RunCMake/CTestTimeout/test.cmake.in b/Tests/RunCMake/CTestTimeout/test.cmake.in
new file mode 100644
index 0000000..be2625b
--- /dev/null
+++ b/Tests/RunCMake/CTestTimeout/test.cmake.in
@@ -0,0 +1,16 @@
+cmake_minimum_required(VERSION 3.16)
+@CASE_TEST_PREFIX_CODE@
+
+set(CTEST_SITE "test-site")
+set(CTEST_BUILD_NAME "test-build-name")
+set(CTEST_SOURCE_DIRECTORY "@RunCMake_BINARY_DIR@/@CASE_NAME@")
+set(CTEST_BINARY_DIRECTORY "@RunCMake_BINARY_DIR@/@CASE_NAME@-build")
+set(CTEST_CMAKE_GENERATOR "@RunCMake_GENERATOR@")
+set(CTEST_CMAKE_GENERATOR_PLATFORM "@RunCMake_GENERATOR_PLATFORM@")
+set(CTEST_CMAKE_GENERATOR_TOOLSET "@RunCMake_GENERATOR_TOOLSET@")
+set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_CONFIG_TYPE}")
+
+ctest_start(Experimental)
+ctest_configure(OPTIONS "-DTIMEOUT=@TIMEOUT@")
+ctest_build()
+ctest_test()