Files
uc2/tests/test_cli_bigfile.cmake
T

52 lines
1.8 KiB
CMake
Raw Normal View History

# CLI round-trip test for files larger than the 64KB sliding window.
# Regression test for the window-edge bugs fixed 2026-06-11 (git-bug
# d747658): linear chunk loads crossing the circular-buffer edge
# corrupted archives at every level, and the rANS decoder could not
# flush more than one window of output. Content must be varied, not
# uniform: all-zeros hides reordering corruption.
file(REMOVE_RECURSE "${TEST_DIR}")
file(MAKE_DIRECTORY "${TEST_DIR}/input")
# ~200KB of deterministic varied text (seeded string(RANDOM)), with a
# compressible refrain so both literal and match paths are exercised.
set(BIG "")
foreach(i RANGE 1 180)
string(RANDOM LENGTH 1024 RANDOM_SEED ${i} CHUNK)
string(APPEND BIG "${CHUNK}\nThe quick brown fox jumps over the lazy dog ${i}\n")
endforeach()
file(WRITE "${TEST_DIR}/input/bigfile.txt" "${BIG}")
foreach(LEVEL 5 6)
set(WORK "${TEST_DIR}/L${LEVEL}")
file(MAKE_DIRECTORY "${WORK}/output")
execute_process(
COMMAND "${UC2_CLI}" -q -w -L ${LEVEL} "${WORK}/big.uc2"
"${TEST_DIR}/input/bigfile.txt"
RESULT_VARIABLE RC
)
if(NOT RC EQUAL 0)
message(FATAL_ERROR "uc2 -w -L ${LEVEL} failed: ${RC}")
endif()
execute_process(
COMMAND "${UC2_CLI}" -q -d "${WORK}/output" "${WORK}/big.uc2"
RESULT_VARIABLE RC
)
if(NOT RC EQUAL 0)
message(FATAL_ERROR "uc2 -d failed at -L ${LEVEL}: ${RC}")
endif()
execute_process(
COMMAND "${CMAKE_COMMAND}" -E compare_files
"${TEST_DIR}/input/bigfile.txt" "${WORK}/output/bigfile.txt"
RESULT_VARIABLE RC
)
if(NOT RC EQUAL 0)
message(FATAL_ERROR "bigfile round-trip mismatch at -L ${LEVEL}")
endif()
message(STATUS "bigfile round-trip OK at -L ${LEVEL}")
endforeach()