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:
parent
b87bed0ff6
commit
341cd93489
|
@ -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}")
|
||||||
|
|
||||||
|
|
|
@ -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)
|
|
@ -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()
|
|
@ -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")
|
||||||
|
|
Loading…
Reference in New Issue