diff --git a/Tests/RunCMake/CPack/CPackTestHelpers.cmake b/Tests/RunCMake/CPack/CPackTestHelpers.cmake index 7c2c9c60a..7e6b4b11a 100644 --- a/Tests/RunCMake/CPack/CPackTestHelpers.cmake +++ b/Tests/RunCMake/CPack/CPackTestHelpers.cmake @@ -1,72 +1,6 @@ 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()