Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 1 | #!/bin/sh |
2 | |||||
Eric Andersen | 7daa076 | 2004-10-08 07:46:08 +0000 | [diff] [blame] | 3 | [ -n "$srcdir" ] || srcdir=$(pwd) |
4 | [ -n "$bindir" ] || bindir=$(dirname $(pwd)) | ||||
5 | PATH=$bindir:$PATH | ||||
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 6 | |
Rob Landley | 2824ded | 2006-03-16 16:02:06 +0000 | [diff] [blame] | 7 | # Run old-style test. |
8 | |||||
9 | function run_applet_testcase | ||||
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 10 | { |
11 | local applet=$1 | ||||
12 | local testcase=$2 | ||||
13 | |||||
14 | local status=0 | ||||
Eric Andersen | c354f6e | 2004-04-06 00:41:39 +0000 | [diff] [blame] | 15 | local RES= |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 16 | |
17 | local uc_applet=$(echo $applet | tr a-z A-Z) | ||||
18 | local testname=$(basename $testcase) | ||||
19 | |||||
Eric Andersen | 7daa076 | 2004-10-08 07:46:08 +0000 | [diff] [blame] | 20 | if grep -q "^# CONFIG_${uc_applet} is not set$" $bindir/.config; then |
Eric Andersen | 650fe63 | 2004-04-06 11:10:30 +0000 | [diff] [blame] | 21 | echo UNTESTED: $testname |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 22 | return 0 |
23 | fi | ||||
24 | |||||
Matt Kraai | 6b140ea | 2002-02-19 23:43:08 +0000 | [diff] [blame] | 25 | if grep -q "^# FEATURE: " $testcase; then |
26 | local feature=`sed -ne 's/^# FEATURE: //p' $testcase` | ||||
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 27 | |
Eric Andersen | 7daa076 | 2004-10-08 07:46:08 +0000 | [diff] [blame] | 28 | if grep -q "^# ${feature} is not set$" $bindir/.config; then |
Eric Andersen | 650fe63 | 2004-04-06 11:10:30 +0000 | [diff] [blame] | 29 | echo UNTESTED: $testname |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 30 | return 0 |
31 | fi | ||||
32 | fi | ||||
33 | |||||
Eric Andersen | c354f6e | 2004-04-06 00:41:39 +0000 | [diff] [blame] | 34 | rm -rf tmp |
35 | mkdir -p tmp | ||||
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 36 | pushd tmp > /dev/null |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 37 | |
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 38 | d=$srcdir sh -x -e $testcase >.logfile.txt 2>&1 || status=$? |
Eric Andersen | c354f6e | 2004-04-06 00:41:39 +0000 | [diff] [blame] | 39 | |
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 40 | if [ $status -ne 0 ] ; then |
Eric Andersen | 650fe63 | 2004-04-06 11:10:30 +0000 | [diff] [blame] | 41 | echo FAIL: $testname |
Bernhard Reutner-Fischer | e34e878 | 2005-10-06 12:48:03 +0000 | [diff] [blame] | 42 | if [ $verbose -gt 0 ]; then |
Eric Andersen | c354f6e | 2004-04-06 00:41:39 +0000 | [diff] [blame] | 43 | cat .logfile.txt |
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 44 | fi |
Matt Kraai | 35d6042 | 2002-03-27 17:33:31 +0000 | [diff] [blame] | 45 | status=$? |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 46 | else |
Eric Andersen | 650fe63 | 2004-04-06 11:10:30 +0000 | [diff] [blame] | 47 | echo PASS: $testname |
Eric Andersen | c354f6e | 2004-04-06 00:41:39 +0000 | [diff] [blame] | 48 | rm -f .logfile.txt |
Matt Kraai | 35d6042 | 2002-03-27 17:33:31 +0000 | [diff] [blame] | 49 | status=$? |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 50 | fi |
51 | |||||
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 52 | popd > /dev/null |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 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 | |||||
Eric Andersen | 7daa076 | 2004-10-08 07:46:08 +0000 | [diff] [blame] | 64 | for testcase in $srcdir/$applet/*; do |
65 | if [ "$testcase" = "$srcdir/$applet/CVS" ]; then | ||||
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 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 | ||||
Bernhard Reutner-Fischer | e34e878 | 2005-10-06 12:48:03 +0000 | [diff] [blame] | 81 | verbose=0 |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 82 | |
Matt Kraai | 01d2ea9 | 2002-01-02 20:37:59 +0000 | [diff] [blame] | 83 | if [ x"$1" = x"-v" ]; then |
84 | verbose=1 | ||||
Bernhard Reutner-Fischer | e34e878 | 2005-10-06 12:48:03 +0000 | [diff] [blame] | 85 | export VERBOSE=$verbose |
Matt Kraai | 01d2ea9 | 2002-01-02 20:37:59 +0000 | [diff] [blame] | 86 | shift |
87 | fi | ||||
88 | |||||
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 89 | if [ $# -ne 0 ]; then |
Bernhard Reutner-Fischer | e34e878 | 2005-10-06 12:48:03 +0000 | [diff] [blame] | 90 | applets=$(cd $srcdir ; for i in $@; do ls ${i}* ; done) |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 91 | else |
Eric Andersen | 7daa076 | 2004-10-08 07:46:08 +0000 | [diff] [blame] | 92 | applets=$(ls $srcdir) |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 93 | fi |
94 | |||||
Rob Landley | 2824ded | 2006-03-16 16:02:06 +0000 | [diff] [blame] | 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" | ||||
Mike Frysinger | 2cf3852 | 2006-04-01 01:35:33 +0000 | [diff] [blame] | 100 | for i in $(sed 's@/[a-z0-9/\[]*/@@' $bindir/busybox.links 2>/dev/null) |
Rob Landley | 2824ded | 2006-03-16 16:02:06 +0000 | [diff] [blame] | 101 | do |
102 | ln -s $bindir/busybox "$LINKSDIR"/$i | ||||
103 | done | ||||
104 | |||||
Rob Landley | 48c6157 | 2005-11-07 08:50:53 +0000 | [diff] [blame] | 105 | # Set up option flags so tests can be selective. |
106 | |||||
107 | configfile=${bindir:-../../}/.config | ||||
Rob Landley | 5c1cd5f | 2006-02-16 09:25:31 +0000 | [diff] [blame] | 108 | export OPTIONFLAGS=:$(echo $(sed -nr 's/^CONFIG_(.*)=.*/\1/p' $configfile) | sed 's/ /:/g') |
Rob Landley | 48c6157 | 2005-11-07 08:50:53 +0000 | [diff] [blame] | 109 | |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 110 | for applet in $applets; do |
Bernhard Reutner-Fischer | b47a74f | 2005-09-23 15:44:46 +0000 | [diff] [blame] | 111 | if [ "$applet" = "links" ]; then continue; fi |
112 | if [ "$applet" != "CVS" -a -d "$srcdir/$applet" ]; then | ||||
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 113 | if run_applet_tests $applet; then |
114 | : | ||||
115 | else | ||||
116 | status=1 | ||||
117 | fi | ||||
118 | fi | ||||
Rob Landley | 48c6157 | 2005-11-07 08:50:53 +0000 | [diff] [blame] | 119 | |
120 | # Is this a new-style test? | ||||
Bernhard Reutner-Fischer | b47a74f | 2005-09-23 15:44:46 +0000 | [diff] [blame] | 121 | applet=$(echo "$applet" | sed -n 's/\.tests$//p') |
122 | if [ ${#applet} -ne 0 ] | ||||
Rob Landley | 1689075 | 2005-09-02 00:41:53 +0000 | [diff] [blame] | 123 | then |
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 124 | if [ ! -h "$LINKSDIR/$applet" ] && [ "${applet:0:4}" != "all_" ] |
Rob Landley | 48c6157 | 2005-11-07 08:50:53 +0000 | [diff] [blame] | 125 | then |
Rob Landley | 2824ded | 2006-03-16 16:02:06 +0000 | [diff] [blame] | 126 | echo "SKIPPED: $applet (not built)" |
Rob Landley | 48c6157 | 2005-11-07 08:50:53 +0000 | [diff] [blame] | 127 | continue |
128 | fi | ||||
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 129 | if PATH="$LINKSDIR":$srcdir:$bindir:$PATH \ |
Bernhard Reutner-Fischer | b47a74f | 2005-09-23 15:44:46 +0000 | [diff] [blame] | 130 | "${srcdir:-.}/$applet".tests |
Bernhard Reutner-Fischer | 89a22ea | 2006-05-25 13:24:02 +0000 | [diff] [blame] | 131 | then |
132 | : | ||||
133 | else | ||||
134 | status=1 | ||||
135 | fi | ||||
Rob Landley | 1689075 | 2005-09-02 00:41:53 +0000 | [diff] [blame] | 136 | fi |
137 | |||||
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 138 | done |
Rob Landley | 2824ded | 2006-03-16 16:02:06 +0000 | [diff] [blame] | 139 | rm -rf "$LINKSDIR" |
Matt Kraai | 3889078 | 2001-10-30 23:11:20 +0000 | [diff] [blame] | 140 | exit $status |