btrfs-progs/tests/convert-tests.sh
David Sterba e44f595dd7 btrfs-progs: tests: unify test drivers, make ready for extenral testsuite
Make the TOP variable more configurable, allow to set it to any path
where to find binaries when the testsuite is exported, or fallback to
system binaries.

There's now more code duplication, the logic is now more complex so it's
left open coded for clarity. Further cleanups are possible.

Signed-off-by: David Sterba <dsterba@suse.com>
2018-02-13 16:19:48 +01:00

84 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
#
# convert ext2/3/4 images to btrfs images, and make sure the results are
# clean.
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 `which 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/convert-tests-results.txt"
IMAGE="$TEST_TOP/test.img"
source "$TEST_TOP/common"
source "$TEST_TOP/common.convert"
export INTERNAL_BIN
export TEST_TOP
export TOP
export RESULTS
export LANG
export IMAGE
export TEST_DEV
rm -f "$RESULTS"
check_kernel_support
check_kernel_support_reiserfs
# anything expected by common.convert
check_global_prereq getfacl
check_global_prereq setfacl
check_global_prereq md5sum
run_one_test() {
local testdir
local testname
testdir="$1"
testname=$(basename "$testdir")
echo " [TEST/conv] $testname"
cd "$testdir"
echo "=== Entering $testname" >> "$RESULTS"
if [ -x test.sh ]; then
# Only support custom test scripts
./test.sh
if [ $? -ne 0 ]; then
if [[ $TEST_LOG =~ dump ]]; then
# the logs can be large and may exceed the
# limits, use 4MB for now
tail -c 3900000 "$RESULTS"
fi
_fail "test failed for case $testname"
fi
else
_fail "custom test script not found"
fi
}
# Test special images
for i in $(find "$TEST_TOP/convert-tests" -maxdepth 1 -mindepth 1 -type d \
${TEST:+-name "$TEST"} | sort)
do
run_one_test "$i"
done