stop using __u32 etc. uint32_t is there for a reason
[oweals/busybox.git] / testsuite / runtest
1 #!/bin/sh
2
3 [ -n "$srcdir" ] || srcdir=$(pwd)
4 [ -n "$bindir" ] || bindir=$(dirname $(pwd))
5 PATH=$bindir:$PATH
6
7 # Run old-style test.
8
9 function run_applet_testcase
10 {
11         local applet=$1
12         local testcase=$2
13
14         local status=0
15         local RES=
16
17         local uc_applet=$(echo $applet | tr a-z A-Z)
18         local testname=$(basename $testcase)
19
20         if grep -q "^# CONFIG_${uc_applet} is not set$" $bindir/.config; then
21                 echo UNTESTED: $testname
22                 return 0
23         fi
24
25         if grep -q "^# FEATURE: " $testcase; then
26                 local feature=`sed -ne 's/^# FEATURE: //p' $testcase`
27
28                 if grep -q "^# ${feature} is not set$" $bindir/.config; then
29                         echo UNTESTED: $testname
30                         return 0
31                 fi
32         fi
33
34         rm -rf tmp
35         mkdir -p tmp
36         pushd tmp > /dev/null
37
38         d=$srcdir sh -x -e $testcase >.logfile.txt 2>&1 || status=$?
39
40         if [ $status -ne 0 ] ; then
41                 echo FAIL: $testname
42                 if [ $verbose -gt 0 ]; then
43                         cat .logfile.txt
44                 fi
45                 status=$?
46         else
47                 echo PASS: $testname
48                 rm -f .logfile.txt
49                 status=$?
50         fi
51
52         popd > /dev/null
53         rm -rf tmp
54
55         return $status
56 }
57
58 run_applet_tests ()
59 {
60         local applet=$1
61
62         local status=0
63
64         for testcase in $srcdir/$applet/*; do
65                 if [ "$testcase" = "$srcdir/$applet/CVS" ]; then
66                         continue
67                 fi
68
69                 if run_applet_testcase $applet $testcase; then
70                         :
71                 else
72                         status=1
73                 fi
74         done
75
76         return $status
77 }
78
79
80 status=0
81 verbose=0
82
83 if [ x"$1" = x"-v" ]; then
84         verbose=1
85         export VERBOSE=$verbose
86         shift
87 fi
88
89 if [ $# -ne 0 ]; then
90         applets=$(cd $srcdir ; for i in $@; do ls ${i}* ; done)
91 else
92         applets=$(ls $srcdir)
93 fi
94
95 # Populate a directory with links to all busybox applets
96
97 LINKSDIR="${bindir}/runtest-tempdir-links"
98 rm -rf "$LINKSDIR" 2>/dev/null
99 mkdir "$LINKSDIR"
100 for i in $(sed 's@/[a-z0-9/\[]*/@@' $bindir/busybox.links 2>/dev/null)
101 do
102         ln -s $bindir/busybox "$LINKSDIR"/$i
103 done
104
105 # Set up option flags so tests can be selective.
106
107 configfile=${bindir:-../../}/.config
108 export OPTIONFLAGS=:$(echo $(sed -nr 's/^CONFIG_(.*)=.*/\1/p' $configfile) | sed 's/ /:/g')
109
110 for applet in $applets; do
111         if [ "$applet" = "links" ]; then continue; fi
112         if [ "$applet" != "CVS" -a -d "$srcdir/$applet" ]; then
113                 if run_applet_tests $applet; then
114                         :
115                 else
116                         status=1
117                 fi
118         fi
119
120         # Is this a new-style test?
121         applet=$(echo "$applet" | sed -n 's/\.tests$//p')
122         if [ ${#applet} -ne 0 ]
123         then
124                 if [ ! -h "$LINKSDIR/$applet" ] && [ "${applet:0:4}" != "all_" ]
125                 then
126                         echo "SKIPPED: $applet (not built)"
127                         continue
128                 fi
129                 if PATH="$LINKSDIR":$srcdir:$bindir:$PATH \
130                         "${srcdir:-.}/$applet".tests
131                 then
132                   :
133                 else
134                   status=1
135                 fi
136         fi
137
138 done
139 rm -rf "$LINKSDIR"
140 exit $status