77 lines
2.4 KiB
CMake
77 lines
2.4 KiB
CMake
cmake_policy(SET CMP0057 NEW)
|
|
|
|
function(run_cpack_test TEST_NAME types build)
|
|
if(TEST_TYPE IN_LIST types)
|
|
set(RunCMake_TEST_NO_CLEAN TRUE)
|
|
set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build")
|
|
|
|
# TODO this should be executed only once per ctest run (not per generator)
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
# execute cmake
|
|
execute_process(
|
|
COMMAND "${CMAKE_COMMAND}" -DRunCMake_TEST=${TEST_NAME}
|
|
-DGENERATOR_TYPE=${TEST_TYPE} "${RunCMake_SOURCE_DIR}"
|
|
WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}"
|
|
RESULT_VARIABLE res
|
|
OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt"
|
|
ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt"
|
|
)
|
|
|
|
if(res)
|
|
run_cmake_command(
|
|
${TEST_TYPE}/${TEST_NAME}
|
|
"${CMAKE_COMMAND}"
|
|
-DRunCMake_TEST_STEP=configure
|
|
-Dreturn_code=${res}
|
|
"-Dbin_dir=${RunCMake_TEST_BINARY_DIR}"
|
|
-P "${RunCMake_SOURCE_DIR}/PreTestError.cmake"
|
|
)
|
|
return()
|
|
endif()
|
|
|
|
# execute optional build step
|
|
if(build)
|
|
execute_process(
|
|
COMMAND "${CMAKE_COMMAND}" --build "${RunCMake_TEST_BINARY_DIR}"
|
|
RESULT_VARIABLE res
|
|
OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt"
|
|
ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt"
|
|
)
|
|
endif()
|
|
|
|
if(res)
|
|
run_cmake_command(
|
|
${TEST_TYPE}/${TEST_NAME}
|
|
"${CMAKE_COMMAND}"
|
|
-DRunCMake_TEST_STEP=build
|
|
-Dreturn_code=${res}
|
|
"-Dbin_dir=${RunCMake_TEST_BINARY_DIR}"
|
|
-P "${RunCMake_SOURCE_DIR}/PreTestError.cmake"
|
|
)
|
|
return()
|
|
endif()
|
|
|
|
# execute cpack
|
|
execute_process(
|
|
COMMAND "${CMAKE_CPACK_COMMAND}"
|
|
WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}"
|
|
OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt"
|
|
ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt"
|
|
)
|
|
|
|
# verify result
|
|
run_cmake_command(
|
|
${TEST_TYPE}/${TEST_NAME}
|
|
"${CMAKE_COMMAND}"
|
|
-DRunCMake_TEST=${TEST_NAME}
|
|
-DGENERATOR_TYPE=${TEST_TYPE}
|
|
"-Dsrc_dir=${RunCMake_SOURCE_DIR}"
|
|
"-Dbin_dir=${RunCMake_TEST_BINARY_DIR}"
|
|
"-Dconfig_file=${config_file}"
|
|
-P "${RunCMake_SOURCE_DIR}/VerifyResult.cmake"
|
|
)
|
|
endif()
|
|
endfunction()
|