Tomato 1.28
[tomato.git] / release / src / router / busybox / shell / hush_test / run-all
blob57a5c253b16950d6066aa714d20f3b523a97940c
1 #!/bin/sh
3 unset LANG LANGUAGE
4 unset LC_COLLATE
5 unset LC_CTYPE
6 unset LC_MONETARY
7 unset LC_MESSAGES
8 unset LC_NUMERIC
9 unset LC_TIME
10 unset LC_ALL
12 test -x hush || {
13 echo "No ./hush - creating a link to ../../busybox"
14 ln -s ../../busybox hush
16 if test -e ../../.config ; then
17 eval $(sed -e '/^#/d' -e '/^$/d' -e 's:^:export :' ../../.config)
20 PATH="$PWD:$PATH" # for hush and recho/zecho/printenv
21 export PATH
23 THIS_SH="$PWD/hush"
24 export THIS_SH
26 do_test()
28 test -d "$1" || return 0
29 d=${d%/}
30 # echo Running tests in directory "$1"
32 tret=0
33 cd "$1" || { echo "cannot cd $1!"; exit 1; }
34 for x in run-*; do
35 test -f "$x" || continue
36 case "$x" in
37 "$0"|run-minimal|run-gprof) ;;
38 *.orig|*~) ;;
39 #*) echo $x ; sh $x ;;
41 sh "$x" >"../$1-$x.fail" 2>&1 && \
42 { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
44 esac
45 done
46 # Many bash run-XXX scripts just do this,
47 # no point in duplication it all over the place
48 for x in *.tests; do
49 test -x "$x" || continue
50 name="${x%%.tests}"
51 test -f "$name.right" || continue
52 # echo Running test: "$x"
54 "$THIS_SH" "./$x" >"$name.xx" 2>&1
55 test $? -eq 77 && rm -f "../$1-$x.fail" && exit 77
56 diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
58 case $? in
59 0) echo "$1/$x: ok";;
60 77) echo "$1/$x: skip (feature disabled)";;
61 *) echo "$1/$x: fail"; tret=1;;
62 esac
63 done
64 exit ${tret}
68 # Main part of this script
69 # Usage: run-all [directories]
71 ret=0
73 if [ $# -lt 1 ]; then
74 # All sub directories
75 modules=`ls -d hush-*`
77 for module in $modules; do
78 do_test $module || ret=1
79 done
80 else
81 while [ $# -ge 1 ]; do
82 if [ -d $1 ]; then
83 do_test $1 || ret=1
85 shift
86 done
89 exit ${ret}