cmake_minimum_required(VERSION ${CMAKE_VERSION} FATAL_ERROR) include("${config_file}") include("${src_dir}/${GENERATOR_TYPE}/Helpers.cmake") file(READ "${bin_dir}/test_output.txt" output) file(READ "${bin_dir}/test_error.txt" error) file(READ "${config_file}" config_file_content) set(output_error_message "\nCPack output: '${output}'\nCPack error: '${error}';\nconfig file: '${config_file_content}'") # check that expected generated files exist and contain expected content include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-ExpectedFiles.cmake") if(NOT EXPECTED_FILES_COUNT EQUAL 0) foreach(file_no_ RANGE 1 ${EXPECTED_FILES_COUNT}) file(GLOB FOUND_FILE_${file_no_} RELATIVE "${bin_dir}" "${EXPECTED_FILE_${file_no_}}") string(APPEND foundFiles_ ";${FOUND_FILE_${file_no_}}") list(LENGTH FOUND_FILE_${file_no_} foundFilesCount_) if(foundFilesCount_ EQUAL 1) unset(PACKAGE_CONTENT) getPackageContent("${bin_dir}/${FOUND_FILE_${file_no_}}" "PACKAGE_CONTENT") string(REGEX MATCH "${EXPECTED_FILE_CONTENT_${file_no_}}" expected_content_list "${PACKAGE_CONTENT}") if(NOT expected_content_list) message(FATAL_ERROR "Unexpected file content for file No. '${file_no_}'!\n" " Content: '${PACKAGE_CONTENT}'\n\n" " Expected: '${EXPECTED_FILE_CONTENT_${file_no_}}'" "${output_error_message}") endif() else() message(FATAL_ERROR "Found more than one file for file No. '${file_no_}'!" " Found files count '${foundFilesCount_}'." " Files: '${FOUND_FILE_${file_no_}}'" "${output_error_message}") endif() endforeach() # check that there were no extra files generated foreach(all_files_glob_ IN LISTS ALL_FILES_GLOB) file(GLOB foundAll_ RELATIVE "${bin_dir}" "${all_files_glob_}") string(APPEND allFoundFiles_ ";${foundAll_}") endforeach() list(LENGTH foundFiles_ foundFilesCount_) list(LENGTH allFoundFiles_ allFoundFilesCount_) if(NOT foundFilesCount_ EQUAL allFoundFilesCount_) message(FATAL_ERROR "Found more files than expected! Found files: '${allFoundFiles_}'" "${output_error_message}") endif() # sanity check that we didn't accidentally list wrong files with our regular # expressions foreach(expected_ IN LISTS allFoundFiles_) list(FIND foundFiles_ "${expected_}" found_) if(found_ EQUAL -1) message(FATAL_ERROR "Expected files don't match found files! Found files:" " '${allFoundFiles_}'" "${output_error_message}") endif() endforeach() else() # there should be no generated files present foreach(missing_file_glob_ IN LISTS ALL_FILES_GLOB) file(GLOB checkMissingFiles_ RELATIVE "${bin_dir}" "${missing_file_glob_}") if(checkMissingFiles_) message(FATAL_ERROR "Unexpected files found: '${checkMissingFiles_}'" "${output_error_message}") endif() endforeach() endif() # handle additional result verifications if(EXISTS "${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") include("${src_dir}/${GENERATOR_TYPE}/${RunCMake_TEST}-VerifyResult.cmake") else() # by default only print out output and error so that they can be compared by # regex message(STATUS "${output}") message("${error}") endif()