include(RunCTest) if(NOT DEFINED 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) if(UNIX) string(CONCAT CASE_CMAKELISTS_SUFFIX_CODE [[ target_compile_definitions(TestTimeout PRIVATE FORK) ]]) run_ctest_timeout(Fork) unset(CASE_CMAKELISTS_SUFFIX_CODE) endif() block() # An explicit zero TIMEOUT test property means "no timeout". set(TIMEOUT 0) # The test sleeps for 4 seconds longer than the TIMEOUT value. # Set a default timeout to less than that so that the test will # timeout if the zero TIMEOUT does not suppress it. set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)") run_ctest_timeout(ZeroOverridesVar) endblock()