summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Moinvaziri <nathan@nathanm.com>2021-03-26 18:43:18 -0700
committerHans Kristian Rosbach <hk-github@circlestorm.org>2021-04-14 17:59:22 +0200
commit70288f1b8a2f27fba440ae02bef583972045bb65 (patch)
tree71f16e870ea23d86d9e4924134da499d858bcf32
parentb82d3497a5afc46dec3c5d07e4b163b169f251d7 (diff)
Write generated files during tests to CMake's build directory using the name of the test.
Co-authored-by: Vladislav Shchapov <phprus@users.noreply.github.com>
-rw-r--r--CMakeLists.txt19
-rw-r--r--cmake/detect-arch.cmake2
-rw-r--r--cmake/test-compress.cmake63
3 files changed, 47 insertions, 37 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2376cfc..686c0f1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -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)
diff --git a/cmake/detect-arch.cmake b/cmake/detect-arch.cmake
index b80d666..69475da 100644
--- a/cmake/detect-arch.cmake
+++ b/cmake/detect-arch.cmake
@@ -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}
diff --git a/cmake/test-compress.cmake b/cmake/test-compress.cmake
index 833aa3f..e5b1f3b 100644
--- a/cmake/test-compress.cmake
+++ b/cmake/test-compress.cmake
@@ -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)