Increase coverage. Intentionally trigger error conditions. Call all the else*/end* functions without proper opening or containing code structure: else, elseif, endforeach, endfunction, endif, endmacro, endwhile.

This commit is contained in:
David Cole 2009-10-06 14:45:19 -04:00
parent 8a5ae4c15e
commit 5b74d031db
4 changed files with 94 additions and 0 deletions

View File

@ -26,6 +26,11 @@ AddCMakeTest(String "")
AddCMakeTest(Math "")
AddCMakeTest(CMakeMinimumRequired "")
SET(EndStuff_PreArgs
"-Ddir:STRING=${CMAKE_CURRENT_BINARY_DIR}/EndStuffTest"
)
AddCMakeTest(EndStuff "${EndStuff_PreArgs}")
SET(GetPrerequisites_PreArgs
"-DCTEST_CONFIGURATION_TYPE:STRING=\\\${CTEST_CONFIGURATION_TYPE}"
)

View File

@ -0,0 +1,18 @@
# Execute each test listed in:
#
set(scriptname "@CMAKE_CURRENT_SOURCE_DIR@/EndStuffTestScript.cmake")
set(number_of_tests_expected 9)
include("@CMAKE_CURRENT_SOURCE_DIR@/ExecuteScriptTests.cmake")
execute_all_script_tests(${scriptname} number_of_tests_executed)
# And verify that number_of_tests_executed is at least as many as we know
# about as of this writing...
#
message(STATUS "scriptname='${scriptname}'")
message(STATUS "number_of_tests_executed='${number_of_tests_executed}'")
message(STATUS "number_of_tests_expected='${number_of_tests_expected}'")
if(number_of_tests_executed LESS number_of_tests_expected)
message(FATAL_ERROR "error: some test cases were skipped")
endif()

View File

@ -0,0 +1,70 @@
message(STATUS "testname='${testname}'")
if(testname STREQUAL bad_else) # fail
file(WRITE "${dir}/${testname}.cmake"
"else()
")
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 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()
elseif(testname STREQUAL bad_endforeach) # fail
endforeach()
elseif(testname STREQUAL bad_endfunction) # fail
endfunction()
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()
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_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 bad_endmacro) # fail
endmacro()
elseif(testname STREQUAL bad_endwhile) # fail
endwhile()
else() # fail
message(FATAL_ERROR "testname='${testname}' - error: no such test in '${CMAKE_CURRENT_LIST_FILE}'")
endif()

View File

@ -6,6 +6,7 @@ function(execute_one_script_test scriptname testname expected_result)
execute_process(
COMMAND ${CMAKE_COMMAND}
-D "dir:STRING=${dir}"
-D "testname:STRING=${testname}"
-P "${scriptname}"
OUTPUT_VARIABLE out