]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Write generated files during tests to CMake's build directory using the name of the...
authorNathan Moinvaziri <nathan@nathanm.com>
Sat, 27 Mar 2021 01:43:18 +0000 (18:43 -0700)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Wed, 14 Apr 2021 15:59:22 +0000 (17:59 +0200)
Co-authored-by: Vladislav Shchapov <phprus@users.noreply.github.com>
CMakeLists.txt
cmake/detect-arch.cmake
cmake/test-compress.cmake

index 2376cfc87e235659113e60b83b7828cbf29afa7b..686c0f15bbe5e224f0c08c7029124ef330cdcda2 100644 (file)
@@ -1081,7 +1081,7 @@ if(ZLIB_ENABLE_TESTS)
     add_test(NAME makefixed
         COMMAND ${CMAKE_COMMAND}
         "-DCOMMAND=${MAKEFIXED_COMMAND}"
-        -DOUTPUT=${CMAKE_CURRENT_SOURCE_DIR}/inffixed_tbl._h
+        -DOUTPUT=${CMAKE_CURRENT_BINARY_DIR}/inffixed_tbl._h
         -DCOMPARE=${CMAKE_CURRENT_SOURCE_DIR}/inffixed_tbl.h
         -DIGNORE_LINE_ENDINGS=ON
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
@@ -1093,7 +1093,7 @@ if(ZLIB_ENABLE_TESTS)
     add_test(NAME maketrees
         COMMAND ${CMAKE_COMMAND}
         "-DCOMMAND=${MAKETREES_COMMAND}"
-        -DOUTPUT=${CMAKE_CURRENT_SOURCE_DIR}/trees_tbl._h
+        -DOUTPUT=${CMAKE_CURRENT_BINARY_DIR}/trees_tbl._h
         -DCOMPARE=${CMAKE_CURRENT_SOURCE_DIR}/trees_tbl.h
         -DIGNORE_LINE_ENDINGS=ON
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
@@ -1105,7 +1105,7 @@ if(ZLIB_ENABLE_TESTS)
     add_test(NAME makecrct-crc32
         COMMAND ${CMAKE_COMMAND}
         "-DCOMMAND=${MAKECRCT_COMMAND}"
-        -DOUTPUT=${CMAKE_CURRENT_SOURCE_DIR}/crc32_tbl._h
+        -DOUTPUT=${CMAKE_CURRENT_BINARY_DIR}/crc32_tbl._h
         -DCOMPARE=${CMAKE_CURRENT_SOURCE_DIR}/crc32_tbl.h
         -DIGNORE_LINE_ENDINGS=ON
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
@@ -1114,7 +1114,7 @@ if(ZLIB_ENABLE_TESTS)
     add_test(NAME makecrct-crc32-combine
         COMMAND ${CMAKE_COMMAND}
         "-DCOMMAND=${MAKECRCT_COMMAND}"
-        -DOUTPUT=${CMAKE_CURRENT_SOURCE_DIR}/crc32_comb_tbl._h
+        -DOUTPUT=${CMAKE_CURRENT_BINARY_DIR}/crc32_comb_tbl._h
         -DCOMPARE=${CMAKE_CURRENT_SOURCE_DIR}/crc32_comb_tbl.h
         -DIGNORE_LINE_ENDINGS=ON
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/run-and-compare.cmake)
@@ -1152,7 +1152,7 @@ if(ZLIB_ENABLE_TESTS)
                 "-DCOMPRESS_ARGS=${compress_args}"
                 "-DDECOMPRESS_ARGS=-d;-c"
                 -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/${path}
-                -DOUTPUT=${CMAKE_CURRENT_SOURCE_DIR}/${path}-${test_id}.gz
+                -DTEST_NAME=${test_id}
                 -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
         endif()
     endmacro()
@@ -1181,7 +1181,7 @@ if(ZLIB_ENABLE_TESTS)
             continue()
         endif()
         foreach(TEST_CONFIG ${TEST_CONFIGS})
-            get_filename_component(TEST_NAME ${TEST_FILE_PATH} NAME_WE)
+            get_filename_component(TEST_NAME ${TEST_FILE_PATH} NAME)
             if (TEST_NAME STREQUAL "")
                 continue()
             endif()
@@ -1214,6 +1214,7 @@ if(ZLIB_ENABLE_TESTS)
         COMMAND ${CMAKE_COMMAND}
         "-DTARGET=${MINIGZIP_COMMAND}"
         "-DCOMPRESS_ARGS=-c;-k;-4"
+        -DTEST_NAME=GH-361-test-txt
         -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/GH-361/test.txt
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
 
@@ -1222,6 +1223,7 @@ if(ZLIB_ENABLE_TESTS)
         "-DCOMPRESS_TARGET=${SWITCHLEVELS_COMMAND}"
         "-DCOMPRESS_ARGS=1;5;9;3"
         "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
+        -DTEST_NAME=GH-364-test-bin
         -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/GH-364/test.bin
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
 
@@ -1231,6 +1233,7 @@ if(ZLIB_ENABLE_TESTS)
         "-DCOMPRESS_ARGS=-c;-m;1;-w;-15;-1;-s;4"
         "-DDECOMPRESS_ARGS=-c;-d;-m;1;-w;-15"
         -DGZIP_VERIFY=OFF
+        -DTEST_NAME=GH-382-defneg3-dat
         -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/GH-382/defneg3.dat
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
 
@@ -1241,6 +1244,7 @@ if(ZLIB_ENABLE_TESTS)
         "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
         -DCOMPARE=OFF
         -DGZIP_VERIFY=OFF
+        -DTEST_NAME=GH-536-segfault-lcet10-txt
         -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/data/lcet10.txt
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
 
@@ -1251,6 +1255,7 @@ if(ZLIB_ENABLE_TESTS)
         "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
         -DCOMPARE=OFF
         -DGZIP_VERIFY=OFF
+        -DTEST_NAME=GH-536-incomplete-read-lcet10-txt
         -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/data/lcet10.txt
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
 
@@ -1261,12 +1266,14 @@ if(ZLIB_ENABLE_TESTS)
         "-DDECOMPRESS_TARGET=${MINIGZIP_COMMAND}"
         -DCOMPARE=OFF
         -DGZIP_VERIFY=OFF
+        -DTEST_NAME=GH-536-zero-stored-block-lcet10-txt
         -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/data/lcet10.txt
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
 
     add_test(NAME GH-751
         COMMAND ${CMAKE_COMMAND}
         "-DTARGET=${MINIGZIP_COMMAND}"
+        -DTEST_NAME=GH-751-test-txt
         -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/test/GH-751/test.txt
         -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-compress.cmake)
 
index b80d6666f222bf4363ef5e302d69155db0fbfd7a..69475da38d84926c55b57576ee3a72f302460c4d 100644 (file)
@@ -24,7 +24,7 @@ else()
     try_run(
         run_result_unused
         compile_result_unused
-        ${CMAKE_CURRENT_SOURCE_DIR}
+        ${CMAKE_CURRENT_BINARY_DIR}
         ${CMAKE_CURRENT_SOURCE_DIR}/cmake/detect-arch.c
         COMPILE_OUTPUT_VARIABLE RAWOUTPUT
         CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
index 833aa3fc0e0ae1835d99972bf3b3d230e66fb937..e5b1f3b471fc9fd8d1326253eb4226896ce9a48b 100644 (file)
@@ -15,6 +15,7 @@
 #     DECOMPRESS_TARGET     - Command to run to decompress output file
 
 # Optional Variables
+#   TEST_NAME               - Name of test to use when constructing output file paths
 #   COMPRESS_ARGS           - Arguments to pass for compress command (default: -c -k)
 #   DECOMPRESS_ARGS         - Arguments to pass to decompress command (default: -d -c)
 
@@ -49,23 +50,25 @@ if(NOT DEFINED SUCCESS_EXIT)
     set(SUCCESS_EXIT 0)
 endif()
 
-# Generate unique output path so multiple tests can be executed at the same time
-if(NOT OUTPUT)
-    # Output name based on input and unique id
-    string(RANDOM UNIQUE_ID)
-    set(OUTPUT ${INPUT}-${UNIQUE_ID})
-else()
-    # Output name appends unique id in case multiple tests with same output name
-    string(RANDOM LENGTH 6 UNIQUE_ID)
-    set(OUTPUT ${OUTPUT}-${UNIQUE_ID})
+# Use test name from input file name
+if(NOT DEFINED TEST_NAME)
+    get_filename_component(TEST_NAME "${INPUT}" NAME)
 endif()
-string(REPLACE ".gz" "" OUTPUT "${OUTPUT}")
+
+# Generate unique output path so multiple tests can be executed at the same time
+string(RANDOM LENGTH 6 UNIQUE_ID)
+string(REPLACE "." "-" TEST_NAME "${TEST_NAME}")
+set(OUTPUT_BASE "${CMAKE_CURRENT_BINARY_DIR}/test/${TEST_NAME}-${UNIQUE_ID}")
+
+# Ensure directory exists for output files
+get_filename_component(OUTPUT_DIR "${OUTPUT_BASE}" DIRECTORY)
+file(MAKE_DIRECTORY "${OUTPUT_DIR}")
 
 macro(cleanup)
     # Cleanup temporary mingizip files
-    file(REMOVE ${OUTPUT}.gz ${OUTPUT}.out)
+    file(REMOVE ${OUTPUT_BASE}.gz ${OUTPUT_BASE}.out)
     # Cleanup temporary gzip files
-    file(REMOVE ${OUTPUT}.gzip.gz ${OUTPUT}.gzip.out)
+    file(REMOVE ${OUTPUT_BASE}.gzip.gz ${OUTPUT_BASE}.gzip.out)
 endmacro()
 
 # Compress input file
@@ -78,7 +81,7 @@ set(COMPRESS_COMMAND ${COMPRESS_TARGET} ${COMPRESS_ARGS})
 execute_process(COMMAND ${CMAKE_COMMAND}
     "-DCOMMAND=${COMPRESS_COMMAND}"
     -DINPUT=${INPUT}
-    -DOUTPUT=${OUTPUT}.gz
+    -DOUTPUT=${OUTPUT_BASE}.gz
     "-DSUCCESS_EXIT=${SUCCESS_EXIT}"
     -P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
     RESULT_VARIABLE CMD_RESULT)
@@ -89,17 +92,17 @@ if(CMD_RESULT)
 endif()
 
 # Decompress output
-if(NOT EXISTS ${OUTPUT}.gz)
+if(NOT EXISTS ${OUTPUT_BASE}.gz)
     cleanup()
-    message(FATAL_ERROR "Cannot find decompress input: ${OUTPUT}.gz")
+    message(FATAL_ERROR "Cannot find decompress input: ${OUTPUT_BASE}.gz")
 endif()
 
 set(DECOMPRESS_COMMAND ${DECOMPRESS_TARGET} ${DECOMPRESS_ARGS})
 
 execute_process(COMMAND ${CMAKE_COMMAND}
     "-DCOMMAND=${DECOMPRESS_COMMAND}"
-    -DINPUT=${OUTPUT}.gz
-    -DOUTPUT=${OUTPUT}.out
+    -DINPUT=${OUTPUT_BASE}.gz
+    -DOUTPUT=${OUTPUT_BASE}.out
     "-DSUCCESS_EXIT=${SUCCESS_EXIT}"
     -P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
     RESULT_VARIABLE CMD_RESULT)
@@ -112,7 +115,7 @@ endif()
 if(COMPARE)
     # Compare decompressed output with original input file
     execute_process(COMMAND ${CMAKE_COMMAND}
-        -E compare_files ${INPUT} ${OUTPUT}.out
+        -E compare_files ${INPUT} ${OUTPUT_BASE}.out
         RESULT_VARIABLE CMD_RESULT)
 
     if(CMD_RESULT)
@@ -125,9 +128,9 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
     # Transparent writing does not use gzip format
     find_program(GZIP gzip)
     if(GZIP)
-        if(NOT EXISTS ${OUTPUT}.gz)
+        if(NOT EXISTS ${OUTPUT_BASE}.gz)
             cleanup()
-            message(FATAL_ERROR "Cannot find gzip decompress input: ${OUTPUT}.gz")
+            message(FATAL_ERROR "Cannot find gzip decompress input: ${OUTPUT_BASE}.gz")
         endif()
 
         # Check gzip can decompress our compressed output
@@ -135,8 +138,8 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
 
         execute_process(COMMAND ${CMAKE_COMMAND}
             "-DCOMMAND=${GZ_DECOMPRESS_COMMAND}"
-            -DINPUT=${OUTPUT}.gz
-            -DOUTPUT=${OUTPUT}.gzip.out
+            -DINPUT=${OUTPUT_BASE}.gz
+            -DOUTPUT=${OUTPUT_BASE}.gzip.out
             "-DSUCCESS_EXIT=${SUCCESS_EXIT}"
             -P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
             RESULT_VARIABLE CMD_RESULT)
@@ -148,7 +151,7 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
 
         # Compare gzip output with original input file
         execute_process(COMMAND ${CMAKE_COMMAND}
-            -E compare_files ${INPUT} ${OUTPUT}.gzip.out
+            -E compare_files ${INPUT} ${OUTPUT_BASE}.gzip.out
             RESULT_VARIABLE CMD_RESULT)
 
         if(CMD_RESULT)
@@ -156,7 +159,7 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
             message(FATAL_ERROR "Compare gzip decompress failed: ${CMD_RESULT}")
         endif()
 
-        if(NOT EXISTS ${OUTPUT}.gz)
+        if(NOT EXISTS ${OUTPUT_BASE}.gz)
             cleanup()
             message(FATAL_ERROR "Cannot find gzip compress input: ${INPUT}")
         endif()
@@ -167,7 +170,7 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
         execute_process(COMMAND ${CMAKE_COMMAND}
             "-DCOMMAND=${GZ_COMPRESS_COMMAND}"
             -DINPUT=${INPUT}
-            -DOUTPUT=${OUTPUT}.gzip.gz
+            -DOUTPUT=${OUTPUT_BASE}.gzip.gz
             "-DSUCCESS_EXIT=${SUCCESS_EXIT}"
             -P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
             RESULT_VARIABLE CMD_RESULT)
@@ -177,16 +180,16 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
             message(FATAL_ERROR "Gzip compress failed: ${CMD_RESULT}")
         endif()
 
-        if(NOT EXISTS ${OUTPUT}.gz)
+        if(NOT EXISTS ${OUTPUT_BASE}.gz)
             cleanup()
-            message(FATAL_ERROR "Cannot find minigzip decompress input: ${OUTPUT}.gzip.gz")
+            message(FATAL_ERROR "Cannot find minigzip decompress input: ${OUTPUT_BASE}.gzip.gz")
         endif()
 
         # Check decompress target can handle gzip compressed output
         execute_process(COMMAND ${CMAKE_COMMAND}
             "-DCOMMAND=${DECOMPRESS_COMMAND}"
-            -DINPUT=${OUTPUT}.gzip.gz
-            -DOUTPUT=${OUTPUT}.gzip.out
+            -DINPUT=${OUTPUT_BASE}.gzip.gz
+            -DOUTPUT=${OUTPUT_BASE}.gzip.out
             "-DSUCCESS_EXIT=${SUCCESS_EXIT}"
             -P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
             RESULT_VARIABLE CMD_RESULT)
@@ -199,7 +202,7 @@ if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
         if(COMPARE)
             # Compare original input file with gzip decompressed output
             execute_process(COMMAND ${CMAKE_COMMAND}
-                -E compare_files ${INPUT} ${OUTPUT}.gzip.out
+                -E compare_files ${INPUT} ${OUTPUT_BASE}.gzip.out
                 RESULT_VARIABLE CMD_RESULT)
 
             if(CMD_RESULT)