blob: 07013355a3e501a555f8185b067b0db58f8adb75 [file] [log] [blame]
# test-data.cmake - Tests targeting data files in the data directory
# Test compress and verify test against data file using extra args
macro(test_minigzip name path)
# Construct compression arguments for minigzip
set(compress_args -k -c)
foreach(extra_arg IN ITEMS "${ARGN}")
list(APPEND compress_args ${extra_arg})
endforeach()
# Create unique friendly string for test
string(REPLACE ";" "" arg_list "${ARGN}")
string(REPLACE " " "" arg_list "${arg_list}")
string(REPLACE "-" "" arg_list "${arg_list}")
set(test_id minigzip-${name}-${arg_list})
if(NOT TEST ${test_id})
add_test(NAME ${test_id}
COMMAND ${CMAKE_COMMAND}
"-DTARGET=${MINIGZIP_COMMAND}"
"-DCOMPRESS_ARGS=${compress_args}"
"-DDECOMPRESS_ARGS=-d;-c"
-DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/${path}
-DTEST_NAME=${test_id}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compress-and-verify.cmake)
endif()
endmacro()
# List of arg combinations to use during compression
set(TEST_CONFIGS
-R # Z_RLE
-h # Z_HUFFMAN_ONLY
-T # Direct store
-0 # No compression
-1 # Deflate quick
-4 # Deflate medium (lazy matches)
"-5;-F" # Deflate medium (Z_FIXED)
-6 # Deflate medium
-9 # Deflate slow
"-9;-f" # Deflate slow (Z_FILTERED)
)
# Enumerate all files in data directory to run tests against
file(GLOB_RECURSE TEST_FILE_PATHS
LIST_DIRECTORIES false
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/data/*)
# For all files in the data directory, run tests against them
foreach(test_file_path ${TEST_FILE_PATHS})
if("${test_file_path}" MATCHES ".gz$" OR "${test_file_path}" MATCHES ".out$" OR
"${test_file_path}" MATCHES "/.git/" OR "${test_file_path}" MATCHES ".md$")
continue()
endif()
foreach(test_config ${TEST_CONFIGS})
get_filename_component(test_name ${test_file_path} NAME)
if (test_name STREQUAL "")
continue()
endif()
test_minigzip(${test_name} ${test_file_path} ${test_config})
endforeach()
endforeach()
# Additional tests to verify with automatic data type detection arg
test_minigzip("detect-text" "data/lcet10.txt" -A)
test_minigzip("detect-binary" "data/paper-100k.pdf" -A)