|
|
|
include(RunCTest)
|
|
|
|
|
|
|
|
set(LANG NONE)
|
|
|
|
set(CASE_CTEST_BUILD_ARGS "")
|
|
|
|
set(RunCMake_USE_LAUNCHERS TRUE)
|
|
|
|
set(RunCMake_USE_CUSTOM_BUILD_COMMAND FALSE)
|
|
|
|
|
|
|
|
function(run_ctest_build CASE_NAME)
|
|
|
|
set(CASE_CTEST_BUILD_ARGS "${ARGN}")
|
|
|
|
run_ctest(${CASE_NAME})
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
run_ctest_build(BuildQuiet QUIET)
|
|
|
|
run_ctest_build(ParallelLevel PARALLEL_LEVEL 1)
|
|
|
|
|
|
|
|
function(run_BuildFailure)
|
|
|
|
set(CASE_CMAKELISTS_SUFFIX_CODE [[
|
|
|
|
add_custom_target(BuildFailure ALL COMMAND command-does-not-exist)
|
|
|
|
]])
|
|
|
|
set(CASE_CMAKELISTS_PREFIX_CODE [[
|
|
|
|
if(NOT CTEST_USE_LAUNCHERS)
|
|
|
|
message(FATAL_ERROR "CTEST_USE_LAUNCHERS not set")
|
|
|
|
endif()
|
|
|
|
]])
|
|
|
|
set(CASE_TEST_PREFIX_CODE [[
|
|
|
|
cmake_policy(SET CMP0061 NEW)
|
|
|
|
]])
|
|
|
|
set(CASE_TEST_SUFFIX_CODE [[
|
|
|
|
if (ctest_build_return_value)
|
|
|
|
message("ctest_build returned non-zero")
|
|
|
|
else()
|
|
|
|
message("ctest_build returned zero")
|
|
|
|
endif()
|
|
|
|
]])
|
|
|
|
run_ctest(BuildFailure)
|
|
|
|
|
|
|
|
if (RunCMake_GENERATOR MATCHES "Makefiles")
|
|
|
|
set(CASE_TEST_PREFIX_CODE "")
|
|
|
|
run_ctest(BuildFailure-CMP0061-OLD)
|
|
|
|
endif()
|
|
|
|
endfunction()
|
|
|
|
run_BuildFailure()
|
|
|
|
|
|
|
|
function(run_BuildChangeId)
|
|
|
|
set(CASE_TEST_PREFIX_CODE [[
|
|
|
|
set(CTEST_CHANGE_ID "<>1")
|
|
|
|
]])
|
|
|
|
|
|
|
|
run_ctest(BuildChangeId)
|
|
|
|
endfunction()
|
|
|
|
run_BuildChangeId()
|
|
|
|
|
|
|
|
function(run_SubdirTarget)
|
|
|
|
set(CASE_CMAKELISTS_SUFFIX_CODE [=[
|
|
|
|
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/subdir/CMakeLists.txt [[
|
|
|
|
add_custom_target(target_in_subdir COMMAND ${CMAKE_COMMAND} -E touch target_in_subdir.out VERBATIM)
|
|
|
|
]])
|
|
|
|
add_subdirectory(subdir)
|
|
|
|
]=])
|
|
|
|
set(CASE_CTEST_BUILD_ARGS TARGET target_in_subdir)
|
|
|
|
run_ctest(SubdirTarget)
|
|
|
|
endfunction()
|
|
|
|
run_SubdirTarget()
|
|
|
|
|
|
|
|
set(RunCMake_USE_CUSTOM_BUILD_COMMAND TRUE)
|
|
|
|
set(RunCMake_BUILD_COMMAND "${FAKE_BUILD_COMMAND_EXE}")
|
|
|
|
run_ctest(BuildCommandFailure)
|
|
|
|
unset(RunCMake_BUILD_COMMAND)
|
|
|
|
|
|
|
|
set(RunCMake_USE_LAUNCHERS FALSE)
|
|
|
|
set(RunCMake_BUILD_COMMAND "${COLOR_WARNING}")
|
|
|
|
run_ctest(IgnoreColor)
|
|
|
|
unset(RunCMake_BUILD_COMMAND)
|
|
|
|
|
|
|
|
set(RunCMake_USE_CUSTOM_BUILD_COMMAND FALSE)
|
|
|
|
if(RunCMake_GENERATOR MATCHES "Ninja")
|
|
|
|
function(run_NinjaLauncherSingleBuildFailure)
|
|
|
|
set(LANG C)
|
|
|
|
set(RunCMake_USE_LAUNCHERS TRUE)
|
|
|
|
set(RunCMake_TEST_SOURCE_DIR "${RunCMake_BINARY_DIR}/NinjaLauncherSingleBuildFailure")
|
|
|
|
configure_file("${RunCMake_SOURCE_DIR}/error.c" "${RunCMake_TEST_SOURCE_DIR}/error.c" COPYONLY)
|
|
|
|
set(CASE_CMAKELISTS_SUFFIX_CODE [=[
|
|
|
|
add_executable(error error.c)
|
|
|
|
]=])
|
|
|
|
run_ctest(NinjaLauncherSingleBuildFailure)
|
|
|
|
endfunction()
|
|
|
|
run_NinjaLauncherSingleBuildFailure()
|
|
|
|
endif()
|