[Cmake-commits] CMake branch, next, updated. v3.2.1-1592-g8a4b330

Nils Gladitz nilsgladitz at gmail.com
Tue Apr 7 18:52:56 EDT 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  8a4b330c63f28ce0e94aff4bc131a5a293fdb64c (commit)
       via  26a9be9f3ce972692018ae21f6b6a93d97802aff (commit)
       via  54c0ba6f5f2f9e824c37232fcf466ac4d3958bd5 (commit)
      from  c87272d17c88eef8b337e7ac7e73cc04449d4f89 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8a4b330c63f28ce0e94aff4bc131a5a293fdb64c
commit 8a4b330c63f28ce0e94aff4bc131a5a293fdb64c
Merge: c87272d 26a9be9
Author:     Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Apr 7 18:52:53 2015 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Apr 7 18:52:53 2015 -0400

    Merge topic 'tar-write-format' into next
    
    26a9be9f Tests: Consolidate, refactor and extend -E tar tests
    54c0ba6f cmake: Disallow -E tar compression flags with 7zip/zip


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=26a9be9f3ce972692018ae21f6b6a93d97802aff
commit 26a9be9f3ce972692018ae21f6b6a93d97802aff
Author:     Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Tue Apr 7 19:40:33 2015 +0200
Commit:     Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Wed Apr 8 00:52:01 2015 +0200

    Tests: Consolidate, refactor and extend -E tar tests

diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index f80191b..aa6a993 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -218,7 +218,6 @@ if(BUILD_TESTING)
   ADD_TEST_MACRO(FindModulesExecuteAll FindModulesExecuteAll)
   ADD_TEST_MACRO(StringFileTest StringFileTest)
   ADD_TEST_MACRO(TryCompile TryCompile)
-  ADD_TEST_MACRO(TarTest TarTest)
   ADD_TEST_MACRO(SystemInformation SystemInformation)
   ADD_TEST_MACRO(MathTest MathTest)
   ADD_TEST_MACRO(CompileFeatures CompileFeatures)
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 60a8a82..891edf1 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -199,6 +199,7 @@ add_RunCMake_test(target_link_libraries)
 add_RunCMake_test(target_compile_features)
 add_RunCMake_test(CheckModules)
 add_RunCMake_test(CommandLine)
+add_RunCMake_test(CommandLineTar)
 
 add_RunCMake_test(install)
 add_RunCMake_test(CPackInstallProperties)
diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
index e3942a8..f879ee6 100644
--- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
@@ -1,17 +1,5 @@
 include(RunCMake)
 
-run_cmake_command(E_tar-bad-opt1   ${CMAKE_COMMAND} -E tar cvf bad.tar --bad)
-run_cmake_command(E_tar-bad-mtime1 ${CMAKE_COMMAND} -E tar cvf bad.tar --mtime=bad .)
-run_cmake_command(E_tar-bad-from1  ${CMAKE_COMMAND} -E tar cvf bad.tar --files-from=bad)
-run_cmake_command(E_tar-bad-from2  ${CMAKE_COMMAND} -E tar cvf bad.tar --files-from=.)
-run_cmake_command(E_tar-bad-from3  ${CMAKE_COMMAND} -E tar cvf bad.tar --files-from=${CMAKE_CURRENT_LIST_DIR}/E_tar-bad-from3.txt)
-run_cmake_command(E_tar-bad-from4  ${CMAKE_COMMAND} -E tar cvf bad.tar --files-from=${CMAKE_CURRENT_LIST_DIR}/E_tar-bad-from4.txt)
-run_cmake_command(E_tar-bad-from5  ${CMAKE_COMMAND} -E tar cvf bad.tar --files-from=${CMAKE_CURRENT_LIST_DIR}/E_tar-bad-from5.txt)
-run_cmake_command(E_tar-end-opt1   ${CMAKE_COMMAND} -E tar cvf bad.tar -- --bad)
-run_cmake_command(E_tar-end-opt2   ${CMAKE_COMMAND} -E tar cvf bad.tar --)
-run_cmake_command(E_tar-mtime      ${CMAKE_COMMAND} -E tar cvf bad.tar "--mtime=1970-01-01 00:00:00 UTC")
-run_cmake_command(E_tar-bad-format ${CMAKE_COMMAND} -E tar cvf bad.tar "--format=bad-format")
-
 run_cmake_command(build-no-cache
   ${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR})
 run_cmake_command(build-no-generator
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-format-result.txt b/Tests/RunCMake/CommandLineTar/7zip-gz-result.txt
similarity index 100%
copy from Tests/RunCMake/CommandLine/E_tar-bad-format-result.txt
copy to Tests/RunCMake/CommandLineTar/7zip-gz-result.txt
diff --git a/Tests/RunCMake/CommandLineTar/7zip-gz-stderr.txt b/Tests/RunCMake/CommandLineTar/7zip-gz-stderr.txt
new file mode 100644
index 0000000..2fad326
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/7zip-gz-stderr.txt
@@ -0,0 +1 @@
+CMake Error: Can not use compression flags with format: 7zip
diff --git a/Tests/RunCMake/CommandLineTar/7zip.cmake b/Tests/RunCMake/CommandLineTar/7zip.cmake
new file mode 100644
index 0000000..4bc6548
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/7zip.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.7z")
+
+set(COMPRESSION_FLAGS cvf)
+set(COMPRESSION_OPTIONS --format=7zip)
+
+set(DECOMPRESSION_FLAGS xvf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("377abcaf271c" LIMIT 6 HEX)
diff --git a/Tests/RunCMake/CommandLineTar/CMakeLists.txt b/Tests/RunCMake/CommandLineTar/CMakeLists.txt
new file mode 100644
index 0000000..2897109
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.0)
+project(${RunCMake_TEST} NONE)
+include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake b/Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake
new file mode 100644
index 0000000..12635db
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake
@@ -0,0 +1,28 @@
+include(RunCMake)
+
+function(external_command_test NAME)
+  run_cmake_command(${NAME} ${CMAKE_COMMAND} -E ${ARGN})
+endfunction()
+
+external_command_test(bad-opt1   tar cvf bad.tar --bad)
+external_command_test(bad-mtime1 tar cvf bad.tar --mtime=bad .)
+external_command_test(bad-from1  tar cvf bad.tar --files-from=bad)
+external_command_test(bad-from2  tar cvf bad.tar --files-from=.)
+external_command_test(bad-from3  tar cvf bad.tar --files-from=${CMAKE_CURRENT_LIST_DIR}/bad-from3.txt)
+external_command_test(bad-from4  tar cvf bad.tar --files-from=${CMAKE_CURRENT_LIST_DIR}/bad-from4.txt)
+external_command_test(bad-from5  tar cvf bad.tar --files-from=${CMAKE_CURRENT_LIST_DIR}/bad-from5.txt)
+external_command_test(end-opt1   tar cvf bad.tar -- --bad)
+external_command_test(end-opt2   tar cvf bad.tar --)
+external_command_test(mtime      tar cvf bad.tar "--mtime=1970-01-01 00:00:00 UTC")
+external_command_test(bad-format tar cvf bad.tar "--format=bad-format")
+external_command_test(zip-bz2    tar cvjf bad.tar "--format=zip")
+external_command_test(7zip-gz    tar cvzf bad.tar "--format=7zip")
+
+run_cmake(7zip)
+run_cmake(gnutar)
+run_cmake(gnutar-gz)
+run_cmake(pax)
+run_cmake(pax-xz)
+run_cmake(paxr)
+run_cmake(paxr-bz2)
+run_cmake(zip)
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from1-result.txt b/Tests/RunCMake/CommandLineTar/bad-format-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from1-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-format-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-format-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-format-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-format-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-format-stderr.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from2-result.txt b/Tests/RunCMake/CommandLineTar/bad-from1-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from2-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-from1-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from1-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-from1-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from1-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-from1-stderr.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from3-result.txt b/Tests/RunCMake/CommandLineTar/bad-from2-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from3-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-from2-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from2-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-from2-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from2-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-from2-stderr.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from4-result.txt b/Tests/RunCMake/CommandLineTar/bad-from3-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from4-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-from3-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from3-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-from3-stderr.txt
similarity index 67%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from3-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-from3-stderr.txt
index 147bd80..da32ad9 100644
--- a/Tests/RunCMake/CommandLine/E_tar-bad-from3-stderr.txt
+++ b/Tests/RunCMake/CommandLineTar/bad-from3-stderr.txt
@@ -1,2 +1,2 @@
-^CMake Error: -E tar --files-from='.*/Tests/RunCMake/CommandLine/E_tar-bad-from3.txt' file invalid line:
+^CMake Error: -E tar --files-from='.*/Tests/RunCMake/CommandLineTar/bad-from3.txt' file invalid line:
 -add-file=option-typo$
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from3.txt b/Tests/RunCMake/CommandLineTar/bad-from3.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from3.txt
rename to Tests/RunCMake/CommandLineTar/bad-from3.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from5-result.txt b/Tests/RunCMake/CommandLineTar/bad-from4-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from5-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-from4-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from4-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-from4-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from4-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-from4-stderr.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from4.txt b/Tests/RunCMake/CommandLineTar/bad-from4.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from4.txt
rename to Tests/RunCMake/CommandLineTar/bad-from4.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-mtime1-result.txt b/Tests/RunCMake/CommandLineTar/bad-from5-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-mtime1-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-from5-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from5-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-from5-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from5-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-from5-stderr.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-from5.txt b/Tests/RunCMake/CommandLineTar/bad-from5.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-from5.txt
rename to Tests/RunCMake/CommandLineTar/bad-from5.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-opt1-result.txt b/Tests/RunCMake/CommandLineTar/bad-mtime1-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-opt1-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-mtime1-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-mtime1-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-mtime1-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-mtime1-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-mtime1-stderr.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-end-opt1-result.txt b/Tests/RunCMake/CommandLineTar/bad-opt1-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-end-opt1-result.txt
rename to Tests/RunCMake/CommandLineTar/bad-opt1-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-opt1-stderr.txt b/Tests/RunCMake/CommandLineTar/bad-opt1-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-opt1-stderr.txt
rename to Tests/RunCMake/CommandLineTar/bad-opt1-stderr.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-format-result.txt b/Tests/RunCMake/CommandLineTar/end-opt1-result.txt
similarity index 100%
copy from Tests/RunCMake/CommandLine/E_tar-bad-format-result.txt
copy to Tests/RunCMake/CommandLineTar/end-opt1-result.txt
diff --git a/Tests/RunCMake/CommandLine/E_tar-end-opt1-stderr.txt b/Tests/RunCMake/CommandLineTar/end-opt1-stderr.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-end-opt1-stderr.txt
rename to Tests/RunCMake/CommandLineTar/end-opt1-stderr.txt
diff --git a/Tests/RunCMake/CommandLineTar/gnutar-gz.cmake b/Tests/RunCMake/CommandLineTar/gnutar-gz.cmake
new file mode 100644
index 0000000..5f2674a
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/gnutar-gz.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.tar.gz")
+
+set(COMPRESSION_FLAGS cvzf)
+set(COMPRESSION_OPTIONS --format=gnutar)
+
+set(DECOMPRESSION_FLAGS xvzf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("1f8b" LIMIT 2 HEX)
diff --git a/Tests/RunCMake/CommandLineTar/gnutar.cmake b/Tests/RunCMake/CommandLineTar/gnutar.cmake
new file mode 100644
index 0000000..aaca596
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/gnutar.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.tar")
+
+set(COMPRESSION_FLAGS cvf)
+set(COMPRESSION_OPTIONS --format=gnutar)
+
+set(DECOMPRESSION_FLAGS xvf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("7573746172202000" OFFSET 257 LIMIT 8 HEX)
diff --git a/Tests/RunCMake/CommandLineTar/pax-xz.cmake b/Tests/RunCMake/CommandLineTar/pax-xz.cmake
new file mode 100644
index 0000000..baf63d5
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/pax-xz.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.tar.xz")
+
+set(COMPRESSION_FLAGS cvJf)
+set(COMPRESSION_OPTIONS --format=pax)
+
+set(DECOMPRESSION_FLAGS xvJf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("fd377a585a00" LIMIT 6 HEX)
diff --git a/Tests/RunCMake/CommandLineTar/pax.cmake b/Tests/RunCMake/CommandLineTar/pax.cmake
new file mode 100644
index 0000000..60ed238
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/pax.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.tar")
+
+set(COMPRESSION_FLAGS cvf)
+set(COMPRESSION_OPTIONS --format=pax)
+
+set(DECOMPRESSION_FLAGS xvf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("7573746172003030" OFFSET 257 LIMIT 8 HEX)
diff --git a/Tests/RunCMake/CommandLineTar/paxr-bz2.cmake b/Tests/RunCMake/CommandLineTar/paxr-bz2.cmake
new file mode 100644
index 0000000..881a0af
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/paxr-bz2.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.tar.bz2")
+
+set(COMPRESSION_FLAGS cvjf)
+set(COMPRESSION_OPTIONS --format=paxr)
+
+set(DECOMPRESSION_FLAGS xvjf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("425a68" LIMIT 3 HEX)
diff --git a/Tests/RunCMake/CommandLineTar/paxr.cmake b/Tests/RunCMake/CommandLineTar/paxr.cmake
new file mode 100644
index 0000000..968a103
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/paxr.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.tar")
+
+set(COMPRESSION_FLAGS cvf)
+set(COMPRESSION_OPTIONS --format=paxr)
+
+set(DECOMPRESSION_FLAGS xvf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("7573746172003030" OFFSET 257 LIMIT 8 HEX)
diff --git a/Tests/RunCMake/CommandLineTar/roundtrip.cmake b/Tests/RunCMake/CommandLineTar/roundtrip.cmake
new file mode 100644
index 0000000..dc1c885
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/roundtrip.cmake
@@ -0,0 +1,81 @@
+foreach(parameter OUTPUT_NAME COMPRESSION_FLAGS DECOMPRESSION_FLAGS)
+  if(NOT DEFINED ${parameter})
+    message(FATAL_ERROR "missing required parameter ${parameter}")
+  endif()
+endforeach()
+
+function(run_tar WORKING_DIRECTORY)
+  execute_process(COMMAND ${CMAKE_COMMAND} -E tar ${ARGN}
+    WORKING_DIRECTORY ${WORKING_DIRECTORY}
+    RESULT_VARIABLE result
+  )
+
+  if(NOT result STREQUAL "0")
+    message(FATAL_ERROR "tar failed with arguments [${ARGN}] result [${result}]")
+  endif()
+endfunction()
+
+set(COMPRESS_DIR compress_dir)
+set(FULL_COMPRESS_DIR ${CMAKE_CURRENT_BINARY_DIR}/${COMPRESS_DIR})
+
+set(DECOMPRESS_DIR decompress_dir)
+set(FULL_DECOMPRESS_DIR ${CMAKE_CURRENT_BINARY_DIR}/${DECOMPRESS_DIR})
+
+set(FULL_OUTPUT_NAME ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_NAME})
+
+set(CHECK_FILES
+  "f1.txt"
+  "d1/f1.txt"
+  "d 2/f1.txt"
+  "d + 3/f1.txt"
+  "d_4/f1.txt"
+  "d-4/f1.txt"
+  "My Special Directory/f1.txt"
+)
+
+foreach(file ${CHECK_FILES})
+  configure_file(${CMAKE_CURRENT_LIST_FILE} ${FULL_COMPRESS_DIR}/${file} COPYONLY)
+endforeach()
+
+if(UNIX)
+  execute_process(COMMAND ln -sf f1.txt ${FULL_COMPRESS_DIR}/d1/f2.txt)
+  list(APPEND CHECK_FILES "d1/f2.txt")
+endif()
+
+file(REMOVE ${FULL_OUTPUT_NAME})
+file(REMOVE_RECURSE ${FULL_DECOMPRESS_DIR})
+file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR})
+
+run_tar(${CMAKE_CURRENT_BINARY_DIR} ${COMPRESSION_FLAGS} ${FULL_OUTPUT_NAME} ${COMPRESSION_OPTIONS} ${COMPRESS_DIR})
+run_tar(${FULL_DECOMPRESS_DIR} ${DECOMPRESSION_FLAGS} ${FULL_OUTPUT_NAME} ${DECOMPRESSION_OPTIONS})
+
+foreach(file ${CHECK_FILES})
+  set(input ${FULL_COMPRESS_DIR}/${file})
+  set(output ${FULL_DECOMPRESS_DIR}/${COMPRESS_DIR}/${file})
+
+  if(NOT EXISTS ${input})
+     message(SEND_ERROR "Cannot find input file ${output}")
+  endif()
+
+  if(NOT EXISTS ${output})
+     message(SEND_ERROR "Cannot find output file ${output}")
+  endif()
+
+  file(MD5 ${input} input_md5)
+  file(MD5 ${output} output_md5)
+
+  if(NOT input_md5 STREQUAL output_md5)
+    message(SEND_ERROR "Files \"${input}\" and \"${output}\" are different")
+  endif()
+endforeach()
+
+function(check_magic EXPECTED)
+  file(READ ${FULL_OUTPUT_NAME} ACTUAL
+    ${ARGN}
+  )
+
+  if(NOT ACTUAL STREQUAL EXPECTED)
+    message(FATAL_ERROR
+      "Actual [${ACTUAL}] does not match expected [${EXPECTED}]")
+  endif()
+endfunction()
diff --git a/Tests/RunCMake/CommandLine/E_tar-bad-format-result.txt b/Tests/RunCMake/CommandLineTar/zip-bz2-result.txt
similarity index 100%
rename from Tests/RunCMake/CommandLine/E_tar-bad-format-result.txt
rename to Tests/RunCMake/CommandLineTar/zip-bz2-result.txt
diff --git a/Tests/RunCMake/CommandLineTar/zip-bz2-stderr.txt b/Tests/RunCMake/CommandLineTar/zip-bz2-stderr.txt
new file mode 100644
index 0000000..1134b4f
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/zip-bz2-stderr.txt
@@ -0,0 +1 @@
+CMake Error: Can not use compression flags with format: zip
diff --git a/Tests/RunCMake/CommandLineTar/zip.cmake b/Tests/RunCMake/CommandLineTar/zip.cmake
new file mode 100644
index 0000000..08e2fdb
--- /dev/null
+++ b/Tests/RunCMake/CommandLineTar/zip.cmake
@@ -0,0 +1,10 @@
+set(OUTPUT_NAME "test.zip")
+
+set(COMPRESSION_FLAGS cvf)
+set(COMPRESSION_OPTIONS --format=zip)
+
+set(DECOMPRESSION_FLAGS xvf)
+
+include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
+
+check_magic("504b0304" LIMIT 4 HEX)
diff --git a/Tests/TarTest/CMakeLists.txt b/Tests/TarTest/CMakeLists.txt
deleted file mode 100644
index bcc340b..0000000
--- a/Tests/TarTest/CMakeLists.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-cmake_minimum_required (VERSION 2.6)
-project(TarTest)
-
-# this is macro that we will be running
-macro(EXEC_TAR_COMMAND DIR ARGS)
-  exec_program("${CMAKE_COMMAND}" "${DIR}" ARGS "-E tar ${ARGS}" RETURN_VALUE RET)
-  if(${RET})
-    message(FATAL_ERROR "CMake tar command failed with arguments \"${ARGS}\"")
-  endif()
-endmacro()
-
-# Create a directory structure
-set(CHECK_FILES)
-macro(COPY F1 F2)
-  configure_file("${CMAKE_CURRENT_SOURCE_DIR}/${F1}" "${CMAKE_CURRENT_BINARY_DIR}/tar_dir/${F2}" COPYONLY)
-  set(CHECK_FILES ${CHECK_FILES} "${F2}")
-endmacro()
-COPY("CMakeLists.txt" "f1.txt")
-COPY("CMakeLists.txt" "d1/f1.txt")
-COPY("CMakeLists.txt" "d 2/f1.txt")
-COPY("CMakeLists.txt" "d + 3/f1.txt")
-COPY("CMakeLists.txt" "d_4/f1.txt")
-COPY("CMakeLists.txt" "d-4/f1.txt")
-COPY("CMakeLists.txt" "My Special Directory/f1.txt")
-
-if(UNIX)
-  exec_program("ln" ARGS "-sf f1.txt \"${CMAKE_CURRENT_BINARY_DIR}/tar_dir/d1/f2.txt\"")
-  set(CHECK_FILES ${CHECK_FILES} "d1/f2.txt")
-endif()
-
-# cleanup first in case there are files left from previous runs
-# if the umask is odd on the machine it might create files that
-# are not automatically over written.  These tests are run
-# each time the configure step is run.
-file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/test_tar.tar")
-file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/test_tgz.tgz")
-file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/test_output_tar")
-file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/test_output_tgz")
-
-make_directory("${CMAKE_CURRENT_BINARY_DIR}/test_output_tar")
-make_directory("${CMAKE_CURRENT_BINARY_DIR}/test_output_tgz")
-
-
-# Run tests
-EXEC_TAR_COMMAND("${CMAKE_CURRENT_BINARY_DIR}" "cvf \"${CMAKE_CURRENT_BINARY_DIR}/test_tar.tar\" tar_dir")
-EXEC_TAR_COMMAND("${CMAKE_CURRENT_BINARY_DIR}" "cvfz \"${CMAKE_CURRENT_BINARY_DIR}/test_tgz.tgz\" tar_dir")
-
-EXEC_TAR_COMMAND("${CMAKE_CURRENT_BINARY_DIR}/test_output_tar" "xvf \"${CMAKE_CURRENT_BINARY_DIR}/test_tar.tar\"")
-EXEC_TAR_COMMAND("${CMAKE_CURRENT_BINARY_DIR}/test_output_tgz" "xvfz \"${CMAKE_CURRENT_BINARY_DIR}/test_tgz.tgz\"")
-
-macro(CHECK_DIR_STRUCTURE DIR)
-  foreach(file ${CHECK_FILES})
-    set(sfile "${DIR}/${file}")
-    set(rfile "${CMAKE_CURRENT_BINARY_DIR}/tar_dir/${file}")
-    if(NOT EXISTS "${sfile}")
-      message(SEND_ERROR "Cannot find file ${sfile}")
-    else()
-      exec_program("${CMAKE_COMMAND}" ARGS "-E compare_files \"${sfile}\" \"${rfile}\"" RETURN_VALUE ret)
-      if(${ret})
-        message(SEND_ERROR "Files \"${sfile}\" \"${rfile}\" are different")
-      endif()
-    endif()
-  endforeach()
-endmacro()
-
-CHECK_DIR_STRUCTURE("${CMAKE_CURRENT_BINARY_DIR}/test_output_tar/tar_dir")
-
-add_executable(TarTest TestTarExec.cxx)
-
diff --git a/Tests/TarTest/TestTarExec.cxx b/Tests/TarTest/TestTarExec.cxx
deleted file mode 100644
index 86f2cd1..0000000
--- a/Tests/TarTest/TestTarExec.cxx
+++ /dev/null
@@ -1,5 +0,0 @@
-int main()
-{
-  return 0;
-}
-

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=54c0ba6f5f2f9e824c37232fcf466ac4d3958bd5
commit 54c0ba6f5f2f9e824c37232fcf466ac4d3958bd5
Author:     Nils Gladitz <nilsgladitz at gmail.com>
AuthorDate: Wed Apr 8 00:05:16 2015 +0200
Commit:     Nils Gladitz <nilsgladitz at gmail.com>
CommitDate: Wed Apr 8 00:34:38 2015 +0200

    cmake: Disallow -E tar compression flags with 7zip/zip

diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index c561e17..2ef04ef 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -782,7 +782,13 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args)
         compress = cmSystemTools::TarCompressGZip;
         ++nCompress;
         }
-      if ( nCompress > 1 )
+      if ( (format == "7zip" || format == "zip") && nCompress > 0 )
+        {
+        cmSystemTools::Error("Can not use compression flags with format: ",
+          format.c_str());
+        return 1;
+        }
+      else if ( nCompress > 1 )
         {
         cmSystemTools::Error("Can only compress a tar file one way; "
                              "at most one flag of z, j, or J may be used");

-----------------------------------------------------------------------

Summary of changes:
 Source/cmcmd.cxx                                   |    8 +-
 Tests/CMakeLists.txt                               |    1 -
 Tests/RunCMake/CMakeLists.txt                      |    1 +
 Tests/RunCMake/CommandLine/RunCMakeTest.cmake      |   12 ---
 .../7zip-gz-result.txt}                            |    0
 Tests/RunCMake/CommandLineTar/7zip-gz-stderr.txt   |    1 +
 Tests/RunCMake/CommandLineTar/7zip.cmake           |   10 +++
 .../{CMP0054 => CommandLineTar}/CMakeLists.txt     |    0
 Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake   |   28 +++++++
 .../bad-format-result.txt}                         |    0
 .../bad-format-stderr.txt}                         |    0
 .../bad-from1-result.txt}                          |    0
 .../bad-from1-stderr.txt}                          |    0
 .../bad-from2-result.txt}                          |    0
 .../bad-from2-stderr.txt}                          |    0
 .../bad-from3-result.txt}                          |    0
 .../bad-from3-stderr.txt}                          |    2 +-
 .../bad-from3.txt}                                 |    0
 .../bad-from4-result.txt}                          |    0
 .../bad-from4-stderr.txt}                          |    0
 .../bad-from4.txt}                                 |    0
 .../bad-from5-result.txt}                          |    0
 .../bad-from5-stderr.txt}                          |    0
 .../bad-from5.txt}                                 |    0
 .../bad-mtime1-result.txt}                         |    0
 .../bad-mtime1-stderr.txt}                         |    0
 .../bad-opt1-result.txt}                           |    0
 .../bad-opt1-stderr.txt}                           |    0
 .../end-opt1-result.txt}                           |    0
 .../end-opt1-stderr.txt}                           |    0
 Tests/RunCMake/CommandLineTar/gnutar-gz.cmake      |   10 +++
 Tests/RunCMake/CommandLineTar/gnutar.cmake         |   10 +++
 Tests/RunCMake/CommandLineTar/pax-xz.cmake         |   10 +++
 Tests/RunCMake/CommandLineTar/pax.cmake            |   10 +++
 Tests/RunCMake/CommandLineTar/paxr-bz2.cmake       |   10 +++
 Tests/RunCMake/CommandLineTar/paxr.cmake           |   10 +++
 Tests/RunCMake/CommandLineTar/roundtrip.cmake      |   81 ++++++++++++++++++++
 .../zip-bz2-result.txt}                            |    0
 Tests/RunCMake/CommandLineTar/zip-bz2-stderr.txt   |    1 +
 Tests/RunCMake/CommandLineTar/zip.cmake            |   10 +++
 Tests/TarTest/CMakeLists.txt                       |   69 -----------------
 Tests/TarTest/TestTarExec.cxx                      |    5 --
 42 files changed, 200 insertions(+), 89 deletions(-)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-format-result.txt => CommandLineTar/7zip-gz-result.txt} (100%)
 create mode 100644 Tests/RunCMake/CommandLineTar/7zip-gz-stderr.txt
 create mode 100644 Tests/RunCMake/CommandLineTar/7zip.cmake
 copy Tests/RunCMake/{CMP0054 => CommandLineTar}/CMakeLists.txt (100%)
 create mode 100644 Tests/RunCMake/CommandLineTar/RunCMakeTest.cmake
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from1-result.txt => CommandLineTar/bad-format-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-format-stderr.txt => CommandLineTar/bad-format-stderr.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from2-result.txt => CommandLineTar/bad-from1-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from1-stderr.txt => CommandLineTar/bad-from1-stderr.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from3-result.txt => CommandLineTar/bad-from2-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from2-stderr.txt => CommandLineTar/bad-from2-stderr.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from4-result.txt => CommandLineTar/bad-from3-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from3-stderr.txt => CommandLineTar/bad-from3-stderr.txt} (67%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from3.txt => CommandLineTar/bad-from3.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from5-result.txt => CommandLineTar/bad-from4-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from4-stderr.txt => CommandLineTar/bad-from4-stderr.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from4.txt => CommandLineTar/bad-from4.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-mtime1-result.txt => CommandLineTar/bad-from5-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from5-stderr.txt => CommandLineTar/bad-from5-stderr.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-from5.txt => CommandLineTar/bad-from5.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-opt1-result.txt => CommandLineTar/bad-mtime1-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-mtime1-stderr.txt => CommandLineTar/bad-mtime1-stderr.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-end-opt1-result.txt => CommandLineTar/bad-opt1-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-bad-opt1-stderr.txt => CommandLineTar/bad-opt1-stderr.txt} (100%)
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/end-opt1-result.txt} (100%)
 rename Tests/RunCMake/{CommandLine/E_tar-end-opt1-stderr.txt => CommandLineTar/end-opt1-stderr.txt} (100%)
 create mode 100644 Tests/RunCMake/CommandLineTar/gnutar-gz.cmake
 create mode 100644 Tests/RunCMake/CommandLineTar/gnutar.cmake
 create mode 100644 Tests/RunCMake/CommandLineTar/pax-xz.cmake
 create mode 100644 Tests/RunCMake/CommandLineTar/pax.cmake
 create mode 100644 Tests/RunCMake/CommandLineTar/paxr-bz2.cmake
 create mode 100644 Tests/RunCMake/CommandLineTar/paxr.cmake
 create mode 100644 Tests/RunCMake/CommandLineTar/roundtrip.cmake
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => CommandLineTar/zip-bz2-result.txt} (100%)
 create mode 100644 Tests/RunCMake/CommandLineTar/zip-bz2-stderr.txt
 create mode 100644 Tests/RunCMake/CommandLineTar/zip.cmake
 delete mode 100644 Tests/TarTest/CMakeLists.txt
 delete mode 100644 Tests/TarTest/TestTarExec.cxx


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list