btrfs-progs/tests/cli-tests.sh
David Sterba 2726a83952 btrfs-progs: tests: scan test results
Some errors may be reported in the logs only, scan the file each time
there are fresh results. The scanning script will return error that is
supposed to be caught by the testsuite environment.

Signed-off-by: David Sterba <dsterba@suse.com>
2023-09-12 23:18:35 +02:00

82 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
#
# command line interface coverage tests
LANG=C
SCRIPT_DIR=$(dirname $(readlink -f "$0"))
if [ -z "$TOP" ]; then
TOP=$(readlink -f "$SCRIPT_DIR/../")
if [ -f "$TOP/configure.ac" ]; then
# inside git
TEST_TOP="$TOP/tests"
INTERNAL_BIN="$TOP"
else
# external, defaults to system binaries
TOP=$(dirname `type -p btrfs`)
TEST_TOP="$SCRIPT_DIR"
INTERNAL_BIN="$TEST_TOP"
fi
else
# assume external, TOP set from commandline
TEST_TOP="$SCRIPT_DIR"
INTERNAL_BIN="$TEST_TOP"
fi
if ! [ -x "$TOP/btrfs" ]; then
echo "ERROR: cannot execute btrfs from TOP=$TOP"
exit 1
fi
TEST_DEV=${TEST_DEV:-}
RESULTS="$TEST_TOP/cli-tests-results.txt"
IMAGE="$TEST_TOP/test.img"
source "$TEST_TOP/common"
export INTERNAL_BIN
export TEST_TOP
export TOP
export RESULTS
export LANG
export IMAGE
export TEST_DEV
rm -f "$RESULTS"
check_prereq btrfs
check_kernel_support
# The tests are driven by their custom script called 'test.sh'
test_found=0
for i in $(find "$TEST_TOP/cli-tests" -maxdepth 1 -mindepth 1 -type d \
${TEST:+-name "$TEST"} | sort)
do
name=$(basename "$i")
if ! [ -z "$TEST_FROM" ]; then
if [ "$test_found" == 0 ]; then
case "$name" in
$TEST_FROM) test_found=1;;
esac
fi
if [ "$test_found" == 0 ]; then
printf " [TEST/cli] %-32s (SKIPPED)\n" "$name"
continue
fi
fi
cd "$i"
if [ -x test.sh ]; then
echo "=== START TEST $i" >> "$RESULTS"
echo " [TEST/cli] $name"
./test.sh
if [ $? -ne 0 ]; then
if [[ $TEST_LOG =~ dump ]]; then
cat "$RESULTS"
fi
_fail "test failed for case $name"
fi
fi
cd "$TEST_TOP"
done
"$TEST_TOP/scan-results.sh" "$RESULTS"