mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-07 22:59:56 -05:00
cmListFileCache: Enforce proper nesting of flow control statements
Fixes: #19153
This commit is contained in:
@@ -1,68 +1,40 @@
|
||||
message(STATUS "testname='${testname}'")
|
||||
|
||||
if(testname STREQUAL bad_else) # fail
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"else()
|
||||
")
|
||||
function(do_end content)
|
||||
file(WRITE "${dir}/${testname}.cmake" "${content}")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
if(testname STREQUAL bad_else) # fail
|
||||
do_end("else()\n")
|
||||
|
||||
elseif(testname STREQUAL bad_elseif) # fail
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"elseif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
do_end("elseif()\n")
|
||||
|
||||
elseif(testname STREQUAL bad_endforeach) # fail
|
||||
endforeach()
|
||||
do_end("endforeach()\n")
|
||||
|
||||
elseif(testname STREQUAL bad_endfunction) # fail
|
||||
endfunction()
|
||||
do_end("endfunction()\n")
|
||||
|
||||
elseif(testname STREQUAL bad_endif) # fail
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"cmake_minimum_required(VERSION 2.8)
|
||||
endif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
do_end("cmake_minimum_required(VERSION 2.8)\nendif()\n")
|
||||
|
||||
elseif(testname STREQUAL endif_low_min_version) # pass
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"cmake_minimum_required(VERSION 1.2)
|
||||
endif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
elseif(testname STREQUAL endif_low_min_version) # fail
|
||||
do_end("cmake_minimum_required(VERSION 1.2)\nendif()\n")
|
||||
|
||||
elseif(testname STREQUAL endif_no_min_version) # pass
|
||||
file(WRITE "${dir}/${testname}.cmake"
|
||||
"endif()
|
||||
")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -P "${dir}/${testname}.cmake"
|
||||
RESULT_VARIABLE rv)
|
||||
if(NOT rv EQUAL 0)
|
||||
message(FATAL_ERROR "${testname} failed")
|
||||
endif()
|
||||
elseif(testname STREQUAL endif_no_min_version) # fail
|
||||
do_end("endif()\n")
|
||||
|
||||
elseif(testname STREQUAL bad_endmacro) # fail
|
||||
endmacro()
|
||||
do_end("endmacro()\n")
|
||||
|
||||
elseif(testname STREQUAL bad_endwhile) # fail
|
||||
endwhile()
|
||||
do_end("endwhile()\n")
|
||||
|
||||
else() # fail
|
||||
message(FATAL_ERROR "testname='${testname}' - error: no such test in '${CMAKE_CURRENT_LIST_FILE}'")
|
||||
|
||||
Reference in New Issue
Block a user