qemu/tests/check-block.sh
Thomas Huth 872cda9c5e tests/check-block.sh: Refuse to run the iotests with BusyBox' sed
BusyBox' sed reports itself as "This is not GNU sed version 4.0"
when being run with the --version parameter. However, the iotests
really need GNU sed, they do not work with the BusyBox version.
So let's make sure that we really have GNU sed and refuse to run
the tests with BusyBox' sed.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20210119134749.401311-1-thuth@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2021-01-20 10:46:54 +01:00

83 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
# Honor the SPEED environment variable, just like we do it for the qtests.
if [ "$SPEED" = "slow" ]; then
format_list="raw qcow2"
group=
elif [ "$SPEED" = "thorough" ]; then
format_list="raw qcow2 qed vmdk vpc"
group=
else
format_list=qcow2
group="-g auto"
fi
if [ "$#" -ne 0 ]; then
format_list="$@"
fi
if grep -q "CONFIG_GPROF=y" config-host.mak 2>/dev/null ; then
echo "GPROF is enabled ==> Not running the qemu-iotests."
exit 0
fi
# Disable tests with any sanitizer except for specific ones
SANITIZE_FLAGS=$( grep "CFLAGS.*-fsanitize" config-host.mak 2>/dev/null )
ALLOWED_SANITIZE_FLAGS="safe-stack cfi-icall"
#Remove all occurrencies of allowed Sanitize flags
for j in ${ALLOWED_SANITIZE_FLAGS}; do
TMP_FLAGS=${SANITIZE_FLAGS}
SANITIZE_FLAGS=""
for i in ${TMP_FLAGS}; do
if ! echo ${i} | grep -q "${j}" 2>/dev/null; then
SANITIZE_FLAGS="${SANITIZE_FLAGS} ${i}"
fi
done
done
if echo ${SANITIZE_FLAGS} | grep -q "\-fsanitize" 2>/dev/null; then
# Have a sanitize flag that is not allowed, stop
echo "Sanitizers are enabled ==> Not running the qemu-iotests."
exit 0
fi
if [ -z "$(find . -name 'qemu-system-*' -print)" ]; then
echo "No qemu-system binary available ==> Not running the qemu-iotests."
exit 0
fi
if ! command -v bash >/dev/null 2>&1 ; then
echo "bash not available ==> Not running the qemu-iotests."
exit 0
fi
if LANG=C bash --version | grep -q 'GNU bash, version [123]' ; then
echo "bash version too old ==> Not running the qemu-iotests."
exit 0
fi
if ! (sed --version | grep 'GNU sed') > /dev/null 2>&1 ; then
if ! command -v gsed >/dev/null 2>&1; then
echo "GNU sed not available ==> Not running the qemu-iotests."
exit 0
fi
else
# Double-check that we're not using BusyBox' sed which says
# that "This is not GNU sed version 4.0" ...
if sed --version | grep -q 'not GNU sed' ; then
echo "BusyBox sed not supported ==> Not running the qemu-iotests."
exit 0
fi
fi
cd tests/qemu-iotests
# QEMU_CHECK_BLOCK_AUTO is used to disable some unstable sub-tests
export QEMU_CHECK_BLOCK_AUTO=1
ret=0
for fmt in $format_list ; do
./check -makecheck -$fmt $group || ret=1
done
exit $ret