CPackDeb: ctest tests for compression scheme leak

Test that changing compression of debian package
content does not affect DEBIAN/ files which must
be gzipped
This commit is contained in:
Raffi Enficiaud 2015-11-03 18:18:35 +01:00 committed by Domen Vrankar
parent b87bed0ff6
commit 341cd93489
4 changed files with 72 additions and 2 deletions

View File

@ -1035,7 +1035,8 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
"components-description2" "components-description2"
"components-shlibdeps1" "components-shlibdeps1"
"components-depend1" "components-depend1"
"components-depend2") "components-depend2"
"compression")
set(CPackGen "DEB") set(CPackGen "DEB")
set(CPackRun_CPackGen "-DCPackGen=${CPackGen}") set(CPackRun_CPackGen "-DCPackGen=${CPackGen}")

View File

@ -0,0 +1,11 @@
#
# Test that setting the compression produces valid
# packages (compression does not leak to the DEBIAN/ files that use gzip)
#
if(CPACK_GENERATOR MATCHES "DEB")
set(CPACK_DEB_COMPONENT_INSTALL "OFF")
endif()
set(CPACK_COMPONENTS_ALL_GROUPS_IN_ONE_PACKAGE)
set(CPACK_DEBIAN_COMPRESSION_TYPE xz)

View File

@ -0,0 +1,54 @@
if(NOT CPackComponentsDEB_SOURCE_DIR)
message(FATAL_ERROR "CPackComponentsDEB_SOURCE_DIR not set")
endif()
include(${CPackComponentsDEB_SOURCE_DIR}/RunCPackVerifyResult.cmake)
# TODO: currently debian doens't produce lower cased names
set(expected_file_mask "${CPackComponentsDEB_BINARY_DIR}/MyLib-*.deb")
set(expected_count 1)
set(actual_output)
run_cpack(actual_output
CPack_output
CPack_error
EXPECTED_FILE_MASK "${expected_file_mask}"
CONFIG_ARGS "${config_args}"
CONFIG_VERBOSE "${config_verbose}")
if(NOT actual_output)
message(STATUS "expected_count='${expected_count}'")
message(STATUS "expected_file_mask='${expected_file_mask}'")
message(STATUS "actual_output_files='${actual_output}'")
message(FATAL_ERROR "error: expected_files do not exist: CPackComponentsDEB test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error}")
endif()
list(LENGTH actual_output actual_count)
if(NOT actual_count EQUAL expected_count)
message(STATUS "actual_count='${actual_count}'")
message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})")
endif()
# dpkg-deb checks
find_program(DPKGDEB_EXECUTABLE dpkg-deb)
if(DPKGDEB_EXECUTABLE)
set(dpkgdeb_output_errors_all "")
foreach(_f IN LISTS actual_output)
run_dpkgdeb(dpkg_output
FILENAME "${_f}"
)
# message(FATAL_ERROR "output = '${dpkg_output}'")
if("${dpkg_output}" STREQUAL "")
set(dpkgdeb_output_errors_all "${dpkgdeb_output_errors_all}"
"dpkg-deb: ${_f}: empty content returned by dpkg-deb")
endif()
endforeach()
if(NOT "${dpkgdeb_output_errors_all}" STREQUAL "")
message(FATAL_ERROR "dpkg-deb checks failed:\n${dpkgdeb_output_errors_all}")
endif()
else()
message("dpkg-deb executable not found - skipping dpkg-deb test")
endif()

View File

@ -86,7 +86,7 @@ function(run_lintian lintian_output)
message(FATAL_ERROR "error: run_lintian needs FILENAME to be set") message(FATAL_ERROR "error: run_lintian needs FILENAME to be set")
endif() endif()
# run lintian # run dpkg-deb
execute_process(COMMAND ${LINTIAN_EXECUTABLE} ${run_lintian_deb_FILENAME} execute_process(COMMAND ${LINTIAN_EXECUTABLE} ${run_lintian_deb_FILENAME}
WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}" WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
OUTPUT_VARIABLE LINTIAN_OUTPUT OUTPUT_VARIABLE LINTIAN_OUTPUT
@ -167,6 +167,10 @@ function(run_dpkgdeb dpkg_deb_output)
ERROR_VARIABLE DPKGDEB_ERROR ERROR_VARIABLE DPKGDEB_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE ) OUTPUT_STRIP_TRAILING_WHITESPACE )
if(NOT ("${DPKGDEB_RESULT}" EQUAL "0"))
message(FATAL_ERROR "Error '${DPKGDEB_RESULT}' returned by dpkg-deb: '${DPKGDEB_ERROR}'")
endif()
set(${dpkg_deb_output} "${DPKGDEB_OUTPUT}" PARENT_SCOPE) set(${dpkg_deb_output} "${DPKGDEB_OUTPUT}" PARENT_SCOPE)
else() else()
message(FATAL_ERROR "run_dpkgdeb called without dpkg-deb executable being present") message(FATAL_ERROR "run_dpkgdeb called without dpkg-deb executable being present")