btrfs-progs: tests: check if kernel has btrfs support
[platform/upstream/btrfs-progs.git] / tests / fsck-tests.sh
1 #!/bin/bash
2 #
3 # loop through all of our bad images and make sure fsck repairs them properly
4
5 LANG=C
6 SCRIPT_DIR=$(dirname $(readlink -f $0))
7 TOP=$(readlink -f $SCRIPT_DIR/../)
8 TEST_DEV=${TEST_DEV:-}
9 RESULTS="$TOP/tests/fsck-tests-results.txt"
10 IMAGE="$TOP/tests/test.img"
11
12 source $TOP/tests/common
13
14 export TOP
15 export RESULTS
16 export LANG
17 export IMAGE
18 export TEST_DEV
19
20 rm -f $RESULTS
21
22 # test rely on corrupting blocks tool
23 check_prereq btrfs-corrupt-block
24 check_prereq btrfs-image
25 check_prereq btrfs
26 check_kernel_support
27
28 run_one_test() {
29         local testname
30
31         testname="$1"
32         echo "    [TEST/fsck]   $(basename $testname)"
33         cd $testname
34         echo "=== Entering $testname" >> $RESULTS
35         if [ -x test.sh ]; then
36                 # Type 2
37                 ./test.sh
38                 if [ $? -ne 0 ]; then
39                         _fail "test failed for case $(basename $testname)"
40                 fi
41         else
42                 # Type 1
43                 check_all_images `pwd`
44         fi
45         cd $TOP
46 }
47
48 # Each dir contains one type of error for btrfsck test.
49 # Each dir must be one of the following 2 types:
50 # 1) Only btrfs-image dump
51 #    Only contains one or several btrfs-image dumps (.img)
52 #    Each image will be tested by generic test routine
53 #    (btrfsck --repair and btrfsck).
54 #    This is for case that btree-healthy images.
55 # 2) Custom test script
56 #    This dir contains test.sh which will do custom image
57 #    generation/check/verification.
58 #    This is for case btrfs-image can't dump or case needs extra
59 #    check/verify
60
61 for i in $(find $TOP/tests/fsck-tests -maxdepth 1 -mindepth 1 -type d   \
62         ${TEST:+-name "$TEST"} | sort)
63 do
64         run_one_test "$i"
65 done