diff options
author | Nathan Moinvaziri <nathan@nathanm.com> | 2021-03-26 18:43:18 -0700 |
---|---|---|
committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2021-04-14 17:59:22 +0200 |
commit | 70288f1b8a2f27fba440ae02bef583972045bb65 (patch) | |
tree | 71f16e870ea23d86d9e4924134da499d858bcf32 | |
parent | b82d3497a5afc46dec3c5d07e4b163b169f251d7 (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.txt | 19 | ||||
-rw-r--r-- | cmake/detect-arch.cmake | 2 | ||||
-rw-r--r-- | cmake/test-compress.cmake | 63 |
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) |