btrfs-progs: tests/convert: ensure btrfs-convert won't rollback the filesystem after...
[platform/upstream/btrfs-progs.git] / tests / convert-tests.sh
1 #!/bin/bash
2 #
3 # convert ext2/3/4 images to btrfs images, and make sure the results are
4 # clean.
5
6 LANG=C
7 SCRIPT_DIR=$(dirname $(readlink -f "$0"))
8 TOP=$(readlink -f "$SCRIPT_DIR/../")
9 TEST_DEV=${TEST_DEV:-}
10 RESULTS="$TOP/tests/convert-tests-results.txt"
11 IMAGE="$TOP/tests/test.img"
12
13 source "$TOP/tests/common"
14 source "$TOP/tests/common.convert"
15
16 export TOP
17 export RESULTS
18 export LANG
19 export IMAGE
20 export TEST_DEV
21
22 rm -f "$RESULTS"
23
24 check_kernel_support
25 check_kernel_support_reiserfs
26 # anything expected by common.convert
27 check_global_prereq getfacl
28 check_global_prereq setfacl
29 check_global_prereq md5sum
30
31 run_one_test() {
32         local testdir
33         local testname
34
35         testdir="$1"
36         testname=$(basename "$testdir")
37         echo "    [TEST/conv]   $testname"
38         cd "$testdir"
39         echo "=== Entering $testname" >> "$RESULTS"
40         if [ -x test.sh ]; then
41                 # Only support custom test scripts
42                 ./test.sh
43                 if [ $? -ne 0 ]; then
44                         if [[ $TEST_LOG =~ dump ]]; then
45                                 # the logs can be large and may exceed the
46                                 # limits, use 4MB for now
47                                 tail -c 3900000 "$RESULTS"
48                         fi
49                         _fail "test failed for case $testname"
50                 fi
51         else
52                 _fail "custom test script not found"
53         fi
54 }
55
56 # Test special images
57 for i in $(find "$TOP/tests/convert-tests" -maxdepth 1 -mindepth 1 -type d \
58            ${TEST:+-name "$TEST"} | sort)
59 do
60         run_one_test "$i"
61 done