Tests: Split test_compress.sh into separate test unit for each file.

test_compress.sh now takes one command line argument:
a filename to be tested. If it begins with "compress_generated_"
the file will be created with create_compress_files.

This will allow parallel execution of the slow tests.
This commit is contained in:
Lasse Collin 2022-05-23 21:17:47 +03:00
parent c7758ac9c7
commit 9a6dd6d46f
7 changed files with 77 additions and 40 deletions

View File

@ -11,6 +11,11 @@ EXTRA_DIST = \
tests.h \
test_files.sh \
test_compress.sh \
test_compress_prepared_bcj_sparc \
test_compress_prepared_bcj_x86 \
test_compress_generated_abc \
test_compress_generated_random \
test_compress_generated_text \
test_scripts.sh \
bcj_test.c \
compress_prepared_bcj_sparc \
@ -47,7 +52,11 @@ TESTS = \
test_index \
test_bcj_exact_size \
test_files.sh \
test_compress.sh
test_compress_prepared_bcj_sparc \
test_compress_prepared_bcj_x86 \
test_compress_generated_abc \
test_compress_generated_random \
test_compress_generated_text
if COND_SCRIPTS
TESTS += test_scripts.sh

View File

@ -26,7 +26,7 @@ if test $? != 42 ; then
fi
test_xz() {
if $XZ -c "$@" "$FILE" > tmp_compressed; then
if $XZ -c "$@" "$FILE" > "$TMP_COMP"; then
:
else
echo "Compressing failed: $* $FILE"
@ -34,7 +34,7 @@ test_xz() {
exit 1
fi
if $XZ -cd tmp_compressed > tmp_uncompressed ; then
if $XZ -cd "$TMP_COMP" > "$TMP_UNCOMP" ; then
:
else
echo "Decompressing failed: $* $FILE"
@ -42,7 +42,7 @@ test_xz() {
exit 1
fi
if cmp tmp_uncompressed "$FILE" ; then
if cmp "$TMP_UNCOMP" "$FILE" ; then
:
else
echo "Decompressed file does not match" \
@ -52,7 +52,7 @@ test_xz() {
fi
if test -n "$XZDEC" ; then
if $XZDEC tmp_compressed > tmp_uncompressed ; then
if $XZDEC "$TMP_COMP" > "$TMP_UNCOMP" ; then
:
else
echo "Decompressing failed: $* $FILE"
@ -60,7 +60,7 @@ test_xz() {
exit 1
fi
if cmp tmp_uncompressed "$FILE" ; then
if cmp "$TMP_UNCOMP" "$FILE" ; then
:
else
echo "Decompressed file does not match" \
@ -76,24 +76,38 @@ XZ="../src/xz/xz --memlimit-compress=48MiB --memlimit-decompress=5MiB \
XZDEC="../src/xzdec/xzdec" # No memory usage limiter available
test -x ../src/xzdec/xzdec || XZDEC=
# Create the required input files.
if ./create_compress_files ; then
# Create the required input file if needed.
FILE=$1
case $FILE in
compress_generated_*)
if ./create_compress_files "${FILE#compress_generated_}" ; then
:
else
rm -f compress_*
echo "Failed to create files to test compression."
rm -f "$FILE"
echo "Failed to create the file '$FILE'."
(exit 1)
exit 1
fi
;;
'')
echo "No test file was specified."
(exit 1)
exit 1
;;
esac
# Derive temporary filenames for compressed and uncompressed outputs
# from the input filename. This is needed when multiple tests are
# run in parallel.
TMP_COMP="tmp_comp_${FILE##*/}"
TMP_UNCOMP="tmp_uncomp_${FILE##*/}"
# Remove temporary now (in case they are something weird), and on exit.
rm -f tmp_compressed tmp_uncompressed
trap 'rm -f tmp_compressed tmp_uncompressed' 0
rm -f "$TMP_COMP" "$TMP_UNCOMP"
trap 'rm -f "$TMP_COMP" "$TMP_UNCOMP"' 0
# Compress and decompress each file with various filter configurations.
# This takes quite a bit of time.
for FILE in compress_generated_* "$srcdir"/compress_prepared_*
do
# Compress and decompress the file with various filter configurations.
#
# Don't test with empty arguments; it breaks some ancient
# proprietary /bin/sh versions due to $@ used in test_xz().
test_xz -1
@ -114,7 +128,6 @@ do
do
test_xz $ARGS --lzma2=dict=64KiB,nice=32,mode=fast
done
done
(exit 0)
exit 0

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec "$srcdir/test_compress.sh" compress_generated_abc

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec "$srcdir/test_compress.sh" compress_generated_random

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec "$srcdir/test_compress.sh" compress_generated_text

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec "$srcdir/test_compress.sh" "$srcdir/compress_prepared_bcj_sparc"

View File

@ -0,0 +1,3 @@
#!/bin/sh
exec "$srcdir/test_compress.sh" "$srcdir/compress_prepared_bcj_x86"