Commit cb851a7c authored by Domen Vrankar's avatar Domen Vrankar Committed by Brad King
Browse files

Tests: Fix RunCMake.CPack test infrastructure after logical conflict

The changes in commit d9cec8ad (CPack/RPM: Generate source rpm (SRPM)
packages on demand, 2016-09-19) logically conflict with the
infrastructure updates in commit 4682b42b (Tests: Add subtest support to
RunCMake/CPack infrastructure, 2016-09-13).  Integrate the two changes
so they work together.
parent 290d48eb
cmake_policy(SET CMP0057 NEW)
function(run_cpack_test_common_for_merge_ TEST_NAME types build source)
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}")
if(EXISTS "${RunCMake_SOURCE_DIR}/${TEST_TYPE}/${TEST_NAME}-Prerequirements.cmake")
include("${RunCMake_SOURCE_DIR}/${TEST_TYPE}/${TEST_NAME}-Prerequirements.cmake")
set(FOUND_PREREQUIREMENTS false)
get_test_prerequirements("FOUND_PREREQUIREMENTS"
"${TEST_CONFIG_DIR}/${type}_config.cmake")
# skip the test if prerequirements are not met
if(NOT FOUND_PREREQUIREMENTS)
message(STATUS "${TEST_NAME} - SKIPPED")
return()
endif()
endif()
# execute cmake
set(RunCMake_TEST_OPTIONS "-DGENERATOR_TYPE=${TEST_TYPE}")
run_cmake(${TEST_NAME})
# execute optional build step
if(build)
run_cmake_command(${TEST_NAME}-Build "${CMAKE_COMMAND}" --build "${RunCMake_TEST_BINARY_DIR}")
endif()
if(source)
set(pack_params_ -G ${TEST_TYPE} --config ./CPackSourceConfig.cmake)
FILE(APPEND ${RunCMake_TEST_BINARY_DIR}/CPackSourceConfig.cmake
"\nset(CPACK_RPM_SOURCE_PKG_BUILD_PARAMS \"-DRunCMake_TEST:STRING=${TEST_NAME}\")")
else()
unset(pack_params_)
endif()
# execute cpack
execute_process(
COMMAND ${CMAKE_CPACK_COMMAND} ${pack_params_}
WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}"
RESULT_VARIABLE "result_"
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}
-DPACKAGING_RESULT=${result_}
"-Dsrc_dir=${RunCMake_SOURCE_DIR}"
"-Dbin_dir=${RunCMake_TEST_BINARY_DIR}"
"-Dconfig_file=${config_file}"
-P "${RunCMake_SOURCE_DIR}/VerifyResult.cmake"
)
endif()
endfunction()
function(run_cpack_source_test TEST_NAME types)
run_cpack_test_common_for_merge_("${TEST_NAME}" "${types}" false true)
endfunction()
function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX)
function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX source)
if(TEST_TYPE IN_LIST types)
set(RunCMake_TEST_NO_CLEAN TRUE)
set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build")
......@@ -106,10 +40,19 @@ function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX)
run_cmake_command(${full_test_name_}-Build "${CMAKE_COMMAND}" --build "${RunCMake_TEST_BINARY_DIR}")
endif()
if(source)
set(pack_params_ -G ${TEST_TYPE} --config ./CPackSourceConfig.cmake)
FILE(APPEND ${RunCMake_TEST_BINARY_DIR}/CPackSourceConfig.cmake
"\nset(CPACK_RPM_SOURCE_PKG_BUILD_PARAMS \"-DRunCMake_TEST:STRING=${full_test_name_}\ -DRunCMake_TEST_FILE_PREFIX:STRING=${TEST_NAME}\")")
else()
unset(pack_params_)
endif()
# execute cpack
execute_process(
COMMAND "${CMAKE_CPACK_COMMAND}"
COMMAND ${CMAKE_CPACK_COMMAND} ${pack_params_}
WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}"
RESULT_VARIABLE "result_"
OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt"
ERROR_FILE "${RunCMake_TEST_BINARY_DIR}/test_error.txt"
)
......@@ -139,11 +82,15 @@ function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX)
endfunction()
function(run_cpack_test TEST_NAME types build)
run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "")
run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "" false)
endfunction()
function(run_cpack_source_test TEST_NAME types build)
run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "" true)
endfunction()
function(run_cpack_test_subtests TEST_NAME SUBTEST_SUFFIXES types build)
foreach(suffix_ IN LISTS SUBTEST_SUFFIXES)
run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "${suffix_}")
run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "${suffix_}" false)
endforeach()
endfunction()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment