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