blob: b8c6c77cb66c41505fab0615c675a19dc1c37a0e [file] [log] [blame]
Matt Kraai38890782001-10-30 23:11:20 +00001#!/bin/sh
2
Eric Andersen7daa0762004-10-08 07:46:08 +00003[ -n "$srcdir" ] || srcdir=$(pwd)
4[ -n "$bindir" ] || bindir=$(dirname $(pwd))
5PATH=$bindir:$PATH
Matt Kraai38890782001-10-30 23:11:20 +00006
Rob Landley2824ded2006-03-16 16:02:06 +00007# Run old-style test.
8
9function run_applet_testcase
Matt Kraai38890782001-10-30 23:11:20 +000010{
11 local applet=$1
12 local testcase=$2
13
14 local status=0
Eric Andersenc354f6e2004-04-06 00:41:39 +000015 local RES=
Matt Kraai38890782001-10-30 23:11:20 +000016
17 local uc_applet=$(echo $applet | tr a-z A-Z)
18 local testname=$(basename $testcase)
19
Eric Andersen7daa0762004-10-08 07:46:08 +000020 if grep -q "^# CONFIG_${uc_applet} is not set$" $bindir/.config; then
Eric Andersen650fe632004-04-06 11:10:30 +000021 echo UNTESTED: $testname
Matt Kraai38890782001-10-30 23:11:20 +000022 return 0
23 fi
24
Matt Kraai6b140ea2002-02-19 23:43:08 +000025 if grep -q "^# FEATURE: " $testcase; then
26 local feature=`sed -ne 's/^# FEATURE: //p' $testcase`
Matt Kraai38890782001-10-30 23:11:20 +000027
Eric Andersen7daa0762004-10-08 07:46:08 +000028 if grep -q "^# ${feature} is not set$" $bindir/.config; then
Eric Andersen650fe632004-04-06 11:10:30 +000029 echo UNTESTED: $testname
Matt Kraai38890782001-10-30 23:11:20 +000030 return 0
31 fi
32 fi
33
Eric Andersenc354f6e2004-04-06 00:41:39 +000034 rm -rf tmp
35 mkdir -p tmp
Matt Kraai38890782001-10-30 23:11:20 +000036 pushd tmp >/dev/null
37
Eric Andersen7daa0762004-10-08 07:46:08 +000038 d=$srcdir sh -x -e $testcase >.logfile.txt 2>&1
Eric Andersenc354f6e2004-04-06 00:41:39 +000039
40 if [ $? != 0 ] ; then
Eric Andersen650fe632004-04-06 11:10:30 +000041 echo FAIL: $testname
Bernhard Reutner-Fischere34e8782005-10-06 12:48:03 +000042 if [ $verbose -gt 0 ]; then
Eric Andersenc354f6e2004-04-06 00:41:39 +000043 cat .logfile.txt
Eric Andersen650fe632004-04-06 11:10:30 +000044 #exit 1;
Eric Andersenc354f6e2004-04-06 00:41:39 +000045 fi;
Matt Kraai35d60422002-03-27 17:33:31 +000046 status=$?
Matt Kraai38890782001-10-30 23:11:20 +000047 else
Eric Andersen650fe632004-04-06 11:10:30 +000048 echo PASS: $testname
Eric Andersenc354f6e2004-04-06 00:41:39 +000049 rm -f .logfile.txt
Matt Kraai35d60422002-03-27 17:33:31 +000050 status=$?
Matt Kraai38890782001-10-30 23:11:20 +000051 fi
52
53 popd >/dev/null
54 rm -rf tmp
55
56 return $status
57}
58
59run_applet_tests ()
60{
61 local applet=$1
62
63 local status=0
64
Eric Andersen7daa0762004-10-08 07:46:08 +000065 for testcase in $srcdir/$applet/*; do
66 if [ "$testcase" = "$srcdir/$applet/CVS" ]; then
Matt Kraai38890782001-10-30 23:11:20 +000067 continue
68 fi
69
70 if run_applet_testcase $applet $testcase; then
71 :
72 else
73 status=1
74 fi
75 done
76
77 return $status
78}
79
80
81status=0
Bernhard Reutner-Fischere34e8782005-10-06 12:48:03 +000082verbose=0
Matt Kraai38890782001-10-30 23:11:20 +000083
Matt Kraai01d2ea92002-01-02 20:37:59 +000084if [ x"$1" = x"-v" ]; then
85 verbose=1
Bernhard Reutner-Fischere34e8782005-10-06 12:48:03 +000086 export VERBOSE=$verbose
Matt Kraai01d2ea92002-01-02 20:37:59 +000087 shift
88fi
89
Matt Kraai38890782001-10-30 23:11:20 +000090if [ $# -ne 0 ]; then
Bernhard Reutner-Fischere34e8782005-10-06 12:48:03 +000091 applets=$(cd $srcdir ; for i in $@; do ls ${i}* ; done)
Matt Kraai38890782001-10-30 23:11:20 +000092else
Eric Andersen7daa0762004-10-08 07:46:08 +000093 applets=$(ls $srcdir)
Matt Kraai38890782001-10-30 23:11:20 +000094fi
95
Rob Landley2824ded2006-03-16 16:02:06 +000096# Populate a directory with links to all busybox applets
97
98LINKSDIR="${bindir}/runtest-tempdir-links"
99rm -rf "$LINKSDIR" 2>/dev/null
100mkdir "$LINKSDIR"
101for i in $(sed 's@/[a-z0-9/\[]*/@@' $bindir/busybox.links)
102do
103 ln -s $bindir/busybox "$LINKSDIR"/$i
104done
105
Rob Landley48c61572005-11-07 08:50:53 +0000106# Set up option flags so tests can be selective.
107
108configfile=${bindir:-../../}/.config
Rob Landley5c1cd5f2006-02-16 09:25:31 +0000109export OPTIONFLAGS=:$(echo $(sed -nr 's/^CONFIG_(.*)=.*/\1/p' $configfile) | sed 's/ /:/g')
Rob Landley48c61572005-11-07 08:50:53 +0000110
Matt Kraai38890782001-10-30 23:11:20 +0000111for applet in $applets; do
Bernhard Reutner-Fischerb47a74f2005-09-23 15:44:46 +0000112 if [ "$applet" = "links" ]; then continue; fi
113 if [ "$applet" != "CVS" -a -d "$srcdir/$applet" ]; then
Matt Kraai38890782001-10-30 23:11:20 +0000114 if run_applet_tests $applet; then
115 :
116 else
117 status=1
118 fi
119 fi
Rob Landley48c61572005-11-07 08:50:53 +0000120
121 # Is this a new-style test?
Bernhard Reutner-Fischerb47a74f2005-09-23 15:44:46 +0000122 applet=$(echo "$applet" | sed -n 's/\.tests$//p')
123 if [ ${#applet} -ne 0 ]
Rob Landley16890752005-09-02 00:41:53 +0000124 then
Rob Landley2824ded2006-03-16 16:02:06 +0000125 if [ ! -h "$LINKSDIR/$applet" ]
Rob Landley48c61572005-11-07 08:50:53 +0000126 then
Rob Landley2824ded2006-03-16 16:02:06 +0000127 echo "SKIPPED: $applet (not built)"
Rob Landley48c61572005-11-07 08:50:53 +0000128 continue
129 fi
Rob Landley2824ded2006-03-16 16:02:06 +0000130 PATH="$LINKSDIR":$srcdir:$bindir:$PATH \
Bernhard Reutner-Fischerb47a74f2005-09-23 15:44:46 +0000131 "${srcdir:-.}/$applet".tests
Rob Landley16890752005-09-02 00:41:53 +0000132 if [ $? -ne 0 ]; then status=1; fi
133 fi
134
Matt Kraai38890782001-10-30 23:11:20 +0000135done
Rob Landley2824ded2006-03-16 16:02:06 +0000136rm -rf "$LINKSDIR"
Matt Kraai38890782001-10-30 23:11:20 +0000137exit $status