89aba3985015c0cacdcc8f86130f32f4b787bd1a
[platform/upstream/busybox.git] / testsuite / runtest
1 #!/bin/sh
2
3 PATH=$(dirname $(pwd)):$PATH
4
5 run_applet_testcase ()
6 {
7         local applet=$1
8         local testcase=$2
9
10         local status=0
11         local RES=
12
13         local uc_applet=$(echo $applet | tr a-z A-Z)
14         local testname=$(basename $testcase)
15
16         if grep -q "^# CONFIG_${uc_applet} is not set$" ../.config; then
17                 echo UNTESTED: $testname
18                 return 0
19         fi
20
21         if grep -q "^# FEATURE: " $testcase; then
22                 local feature=`sed -ne 's/^# FEATURE: //p' $testcase`
23
24                 if grep -q "^# ${feature} is not set$" ../.config; then
25                         echo UNTESTED: $testname
26                         return 0
27                 fi
28         fi
29
30         rm -rf tmp
31         mkdir -p tmp
32         pushd tmp >/dev/null
33
34         sh -x -e ../$testcase >.logfile.txt 2>&1
35
36         if [ $? != 0 ] ; then
37                 echo FAIL: $testname
38                 if [ "$verbose" = 1 ]; then
39                         cat .logfile.txt
40                         #exit 1;
41                 fi;
42                 status=$?
43         else
44                 echo PASS: $testname
45                 rm -f .logfile.txt
46                 status=$?
47         fi
48
49         popd >/dev/null
50         rm -rf tmp
51
52         return $status
53 }
54
55 run_applet_tests ()
56 {
57         local applet=$1
58
59         local status=0
60
61         for testcase in $applet/*; do
62                 if [ "$testcase" = "$applet/CVS" ]; then
63                         continue
64                 fi
65
66                 if run_applet_testcase $applet $testcase; then
67                         :
68                 else
69                         status=1
70                 fi
71         done
72
73         return $status
74 }
75
76
77 status=0
78
79 if [ x"$1" = x"-v" ]; then
80         verbose=1
81         shift
82 fi
83
84 if [ $# -ne 0 ]; then
85         applets="$@"
86 else
87         applets="*"
88 fi
89
90 for applet in $applets; do
91         if [ "$applet" != CVS -a -d "$applet" ]; then
92                 if run_applet_tests $applet; then
93                         :
94                 else
95                         status=1
96                 fi
97         fi
98 done
99
100 exit $status