liblzma/tests/test_files.sh
Lasse Collin 424ac91c7e Tests: Skip tests in test_*.sh if encoders and/or decoders are disabled.
This isn't perfect as the scripts can still fail if only
certain filters are disabled. This is still an improvement
as now "make check" has better behavior when all encoders
or decoders are disabled.

Grepping ../config.h is simple and fairly clean but it only
works if config.h was created. CMake builds don't create
config.h but they don't use these test scripts either.

Thanks to Sebastian Andrzej Siewior for reporting the problem.
Thanks to Jia Tan for the original patch which grepped xz
error messages instead of config.h.
2022-10-19 19:39:35 +03:00

88 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
###############################################################################
#
# Author: Lasse Collin
#
# This file has been put into the public domain.
# You can do whatever you want with this file.
#
###############################################################################
# If both xz and xzdec were not build, skip this test.
XZ=../src/xz/xz
XZDEC=../src/xzdec/xzdec
test -x "$XZ" || XZ=
test -x "$XZDEC" || XZDEC=
if test -z "$XZ$XZDEC"; then
exit 77
fi
# If decompression support is missing, this test is skipped.
# This isn't perfect as if only some decompressors are disabled
# then some good files might not decompress and the test fails
# for a (kind of) wrong reason.
if grep 'define HAVE_DECODERS' ../config.h > /dev/null ; then
:
else
echo "Decompression support is disabled, skipping this test."
exit 77
fi
for I in "$srcdir"/files/good-*.xz
do
if test -z "$XZ" || "$XZ" -dc "$I" > /dev/null; then
:
else
echo "Good file failed: $I"
exit 1
fi
if test -z "$XZDEC" || "$XZDEC" "$I" > /dev/null; then
:
else
echo "Good file failed: $I"
exit 1
fi
done
for I in "$srcdir"/files/bad-*.xz
do
if test -n "$XZ" && "$XZ" -dc "$I" > /dev/null 2>&1; then
echo "Bad file succeeded: $I"
exit 1
fi
if test -n "$XZDEC" && "$XZDEC" "$I" > /dev/null 2>&1; then
echo "Bad file succeeded: $I"
exit 1
fi
done
# Testing for the lzma_index_append() bug in <= 5.2.6 needs "xz -l":
I="$srcdir/files/bad-3-index-uncomp-overflow.xz"
if test -n "$XZ" && "$XZ" -l "$I" > /dev/null 2>&1; then
echo "Bad file succeeded with xz -l: $I"
exit 1
fi
for I in "$srcdir"/files/good-*.lzma
do
if test -z "$XZ" || "$XZ" -dc "$I" > /dev/null; then
:
else
echo "Good file failed: $I"
exit 1
fi
done
for I in "$srcdir"/files/bad-*.lzma
do
if test -n "$XZ" && "$XZ" -dc "$I" > /dev/null 2>&1; then
echo "Bad file succeeded: $I"
exit 1
fi
done
exit 0