qemu/tests/check-block.sh
Thomas Huth 0f3231bfb5 tests/check-block: Do not run the iotests with old versions of bash
macOS is shipped with a very old version of the bash (3.2), which
is currently not suitable for running the iotests anymore (e.g.
it is missing support for "readarray" which is used in the file
tests/qemu-iotests/common.filter). Add a check to skip the iotests
in this case - if someone still wants to run the iotests on macOS,
they can install a newer version from homebrew, for example.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20200918153514.330705-1-thuth@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2020-10-02 15:46:40 +02:00

72 lines
1.8 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 SafeStack
CFLAGS=$( grep "CFLAGS.*-fsanitize" config-host.mak 2>/dev/null )
SANITIZE_FLAGS=""
#Remove all occurrencies of -fsanitize=safe-stack
for i in ${CFLAGS}; do
if [ "${i}" != "-fsanitize=safe-stack" ]; then
SANITIZE_FLAGS="${SANITIZE_FLAGS} ${i}"
fi
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
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