You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.3 KiB
93 lines
3.3 KiB
9 years ago
|
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_}}")
|
||
|
set(foundFiles_ "${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_}")
|
||
|
set(allFoundFiles_ "${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()
|