X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Fconvert-tests.sh;h=4bc915db9b3d651eac8aef38ce93f23683b892fc;hb=7a8d5d50145e6f3898bb382360857dcc080a4a78;hp=6094287b5dd24830093a5cd45e108ef8f07ac90c;hpb=ca7b429f263ab19acf606846dd560be7e8519302;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/tests/convert-tests.sh b/tests/convert-tests.sh old mode 100644 new mode 100755 index 6094287..4bc915d --- a/tests/convert-tests.sh +++ b/tests/convert-tests.sh @@ -2,36 +2,82 @@ # # convert ext2/3/4 images to btrfs images, and make sure the results are # clean. -# - -here=`pwd` -_fail() -{ - echo "$*" | tee -a convert-tests-results.txt +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 -rm -f convert-tests-results.txt - -test(){ - echo " [TEST] $1" - shift - echo "creating ext image with: $*" >> convert-tests-results.txt - # 256MB is the smallest acceptable btrfs image. - rm -f $here/test.img >> convert-tests-results.txt 2>&1 \ - || _fail "could not remove test image file" - truncate -s 256M $here/test.img >> convert-tests-results.txt 2>&1 \ - || _fail "could not create test image file" - $* -F $here/test.img >> convert-tests-results.txt 2>&1 \ - || _fail "filesystem create failed" - $here/btrfs-convert $here/test.img >> convert-tests-results.txt 2>&1 \ - || _fail "btrfs-convert failed" - $here/btrfs check $here/test.img >> convert-tests-results.txt 2>&1 \ - || _fail "btrfs check detected errors" + 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 } -# btrfs-convert requires 4k blocksize. -test "ext2" mke2fs -b 4096 -test "ext3" mke2fs -j -b 4096 -test "ext4" mke2fs -t ext4 -b 4096 +# 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