summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaffi Enficiaud <raffi.enficiaud@mines-paris.org>2015-11-03 17:18:35 (GMT)
committerDomen Vrankar <domen.vrankar@gmail.com>2015-11-03 17:18:35 (GMT)
commit341cd934897b3e37319b978113a1fdf9bea21c6d (patch)
tree96cc307f9eb166f151cd2cc967ca46c64d35181a
parentb87bed0ff6d724a91bbe5ee97b5608eed588d1af (diff)
downloadCMake-341cd934897b3e37319b978113a1fdf9bea21c6d.zip
CMake-341cd934897b3e37319b978113a1fdf9bea21c6d.tar.gz
CMake-341cd934897b3e37319b978113a1fdf9bea21c6d.tar.bz2
CPackDeb: ctest tests for compression scheme leak
Test that changing compression of debian package content does not affect DEBIAN/ files which must be gzipped
-rw-r--r--Tests/CMakeLists.txt3
-rw-r--r--Tests/CPackComponentsDEB/MyLibCPackConfig-compression.cmake.in11
-rw-r--r--Tests/CPackComponentsDEB/RunCPackVerifyResult-compression.cmake54
-rw-r--r--Tests/CPackComponentsDEB/RunCPackVerifyResult.cmake6
4 files changed, 72 insertions, 2 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index ae61bca..e13dc79 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1035,7 +1035,8 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
"components-description2"
"components-shlibdeps1"
"components-depend1"
- "components-depend2")
+ "components-depend2"
+ "compression")
set(CPackGen "DEB")
set(CPackRun_CPackGen "-DCPackGen=${CPackGen}")
diff --git a/Tests/CPackComponentsDEB/MyLibCPackConfig-compression.cmake.in b/Tests/CPackComponentsDEB/MyLibCPackConfig-compression.cmake.in
new file mode 100644
index 0000000..ff18834
--- /dev/null
+++ b/Tests/CPackComponentsDEB/MyLibCPackConfig-compression.cmake.in
@@ -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)
diff --git a/Tests/CPackComponentsDEB/RunCPackVerifyResult-compression.cmake b/Tests/CPackComponentsDEB/RunCPackVerifyResult-compression.cmake
new file mode 100644
index 0000000..2175ada
--- /dev/null
+++ b/Tests/CPackComponentsDEB/RunCPackVerifyResult-compression.cmake
@@ -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()
diff --git a/Tests/CPackComponentsDEB/RunCPackVerifyResult.cmake b/Tests/CPackComponentsDEB/RunCPackVerifyResult.cmake
index bf9f81d..b4e567c 100644
--- a/Tests/CPackComponentsDEB/RunCPackVerifyResult.cmake
+++ b/Tests/CPackComponentsDEB/RunCPackVerifyResult.cmake
@@ -86,7 +86,7 @@ function(run_lintian lintian_output)
message(FATAL_ERROR "error: run_lintian needs FILENAME to be set")
endif()
- # run lintian
+ # run dpkg-deb
execute_process(COMMAND ${LINTIAN_EXECUTABLE} ${run_lintian_deb_FILENAME}
WORKING_DIRECTORY "${CPACK_TEMPORARY_DIRECTORY}"
OUTPUT_VARIABLE LINTIAN_OUTPUT
@@ -167,6 +167,10 @@ function(run_dpkgdeb dpkg_deb_output)
ERROR_VARIABLE DPKGDEB_ERROR
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)
else()
message(FATAL_ERROR "run_dpkgdeb called without dpkg-deb executable being present")