summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/MaxRecursionDepth/test.cmake.in
diff options
context:
space:
mode:
authorKyle Edwards <kyle.edwards@kitware.com>2018-12-14 22:24:52 (GMT)
committerKyle Edwards <kyle.edwards@kitware.com>2019-01-23 14:52:29 (GMT)
commita6982cff0d3910723ad4fd40b9c63cf77c872d30 (patch)
treeb1e69a204006b7b1521c2994ff52b6c3e79b9715 /Tests/RunCMake/MaxRecursionDepth/test.cmake.in
parenta7f5cd45e135dd51d67176fc40e2d769ac5f7db8 (diff)
downloadCMake-a6982cff0d3910723ad4fd40b9c63cf77c872d30.zip
CMake-a6982cff0d3910723ad4fd40b9c63cf77c872d30.tar.gz
CMake-a6982cff0d3910723ad4fd40b9c63cf77c872d30.tar.bz2
cmMakefile: Impose maximum recursion limit
In order to keep infinitely-recursive scripts from causing a stack overflow in the CMake executable, CMake now imposes a maximum recursion limit before issuing an error message. The limit can be adjusted at runtime with CMAKE_MAXIMUM_RECURSION_DEPTH. Fixes: #18694
Diffstat (limited to 'Tests/RunCMake/MaxRecursionDepth/test.cmake.in')
-rw-r--r--Tests/RunCMake/MaxRecursionDepth/test.cmake.in21
1 files changed, 21 insertions, 0 deletions
diff --git a/Tests/RunCMake/MaxRecursionDepth/test.cmake.in b/Tests/RunCMake/MaxRecursionDepth/test.cmake.in
new file mode 100644
index 0000000..fd1fc10
--- /dev/null
+++ b/Tests/RunCMake/MaxRecursionDepth/test.cmake.in
@@ -0,0 +1,21 @@
+cmake_minimum_required(VERSION 3.12)
+set(CTEST_RUN_CURRENT_SCRIPT 0)
+
+set(CTEST_SOURCE_DIRECTORY "@RunCMake_SOURCE_DIR@")
+set(CTEST_BINARY_DIRECTORY "@RunCMake_BINARY_DIR@")
+set(CTEST_COMMAND "${CMAKE_CTEST_COMMAND}")
+
+if(TEST_NAME STREQUAL "ctest_read_custom_files")
+ set(x 2)
+ ctest_read_custom_files("@RunCMake_SOURCE_DIR@")
+elseif(TEST_NAME STREQUAL "ctest_run_script")
+ foreach(LEVEL_CURRENT RANGE 2 15)
+ math(EXPR LEVEL_NEXT "${LEVEL_CURRENT} + 1")
+ configure_file("@RunCMake_SOURCE_DIR@/ctest_run_script.cmake.in" "@RunCMake_BINARY_DIR@/ctest_run_script_${LEVEL_CURRENT}.cmake" @ONLY)
+ endforeach()
+
+ ctest_run_script("@RunCMake_BINARY_DIR@/ctest_run_script_2.cmake" RETURN_VALUE val)
+ if(NOT val EQUAL 0)
+ message(FATAL_ERROR "Nested script failed")
+ endif()
+endif()