Whamcloud - gitweb
b7ac86e3df6081b56a4c57aa0783292dd0a10839
[tools/e2fsprogs.git] / tests / test_script.in
1 #!/bin/sh
2 #
3 # Test script for e2fsck
4 #
5
6 LC_ALL=C
7 export LC_ALL
8
9 case "$1" in 
10     --valgrind)
11         export USE_VALGRIND="valgrind -q --sim-hints=lax-ioctls"
12         shift;
13         ;;
14     --valgrind-leakcheck)
15         export USE_VALGRIND="valgrind --sim-hints=lax-ioctls --leak-check=full --show-reachable=yes --log-file=/tmp/valgrind-%p.log"
16         shift;
17         ;;
18 esac
19
20 if test "$1"x = x ; then
21   TESTS=`ls -d $SRCDIR/[a-zA-Z]_* | $EGREP -v "\.failed|\.new"`
22 else
23   TESTS=
24   for i 
25   do
26     case $i in
27         *.failed|*.new) continue ;;
28         [a-zA-Z])       TESTS="$TESTS $SRCDIR/${i}_*" ;;
29         *)              TESTS="$TESTS $SRCDIR/$i" ;;
30     esac
31   done
32 fi
33
34 cmd_dir=$SRCDIR
35
36 if test "$TEST_CONFIG"x = x; then
37         TEST_CONFIG=$SRCDIR/test_config
38 fi
39
40 . $TEST_CONFIG
41
42 TMPFILE=$(mktemp)
43
44 for test_dir in $TESTS
45 do
46         test_name=`echo $test_dir | sed -e 's;.*/;;'`
47         if [ -f $test_dir ] ; then
48             continue;
49         fi
50         if [ ! -d $test_dir ] ; then
51                 echo "The test '$test_name' does not exist."
52                 continue;
53         fi
54         if [ -z "`ls $test_dir`" ]; then
55                 continue
56         fi
57         if [ -f $test_dir/name ]; then
58                 test_description=`cat $test_dir/name`
59                 printf "%s: %s: " "$test_name" "$test_description"
60         else
61                 printf "%s: " "$test_name"
62         fi
63         if [ -f $test_dir/script ]; then
64                 . $test_dir/script
65         else
66                 test_base=`echo $test_name | sed -e 's/_.*//'`
67                 default_script=$SRCDIR/defaults/${test_base}_script
68                 if [ -f $default_script ]; then
69                         . $SRCDIR/defaults/${test_base}_script
70                 else
71                         echo "Missing test script!"
72                 fi
73         fi
74 done
75
76 num_ok=`ls *.ok 2>/dev/null | wc -l`
77 num_failed=`ls *.failed 2>/dev/null | wc -l`
78
79 echo "$num_ok tests succeeded   $num_failed tests failed"
80
81 test "$num_failed" -eq 0 && exit 0
82
83 echo -n "Tests failed: "
84 for fname in $(ls *.failed); do
85         echo -n "${fname%%.failed} "
86 done
87 echo ""
88
89 exit 1