blob: 837b3f7da100d64b585ffd1a7cd3e048b578b259
1 | #!/bin/sh |
2 | |
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 |
11 | |
12 | if test ! -x hush; then |
13 | if test ! -x ../../busybox; then |
14 | echo "Can't run tests. Put hush binary into this directory (`pwd`)" |
15 | exit 1 |
16 | fi |
17 | echo "No ./hush - creating a link to ../../busybox" |
18 | ln -s ../../busybox hush |
19 | fi |
20 | if test ! -f .config; then |
21 | if test ! -f ../../.config; then |
22 | echo "Missing .config file" |
23 | exit 1 |
24 | fi |
25 | cp ../../.config . || exit 1 |
26 | fi |
27 | |
28 | eval $(sed -e '/^#/d' -e '/^$/d' -e 's:^:export :' .config) |
29 | |
30 | PATH="`pwd`:$PATH" # for hush and recho/zecho/printenv |
31 | export PATH |
32 | |
33 | THIS_SH="`pwd`/hush" |
34 | export THIS_SH |
35 | |
36 | do_test() |
37 | { |
38 | test -d "$1" || return 0 |
39 | d=${d%/} |
40 | # echo Running tests in directory "$1" |
41 | ( |
42 | tret=0 |
43 | cd "$1" || { echo "cannot cd $1!"; exit 1; } |
44 | for x in run-*; do |
45 | test -f "$x" || continue |
46 | case "$x" in |
47 | "$0"|run-minimal|run-gprof) ;; |
48 | *.orig|*~) ;; |
49 | #*) echo $x ; sh $x ;; |
50 | *) |
51 | echo -n "$1/$x:" |
52 | sh "$x" >"../$1-$x.fail" 2>&1 && \ |
53 | { { echo " ok"; rm "../$1-$x.fail"; } || echo " fail"; } |
54 | ;; |
55 | esac |
56 | done |
57 | # Many bash run-XXX scripts just do this, |
58 | # no point in duplication it all over the place |
59 | for x in *.tests; do |
60 | test -x "$x" || continue |
61 | name="${x%%.tests}" |
62 | test -f "$name.right" || continue |
63 | # echo Running test: "$x" |
64 | echo -n "$1/$x:" |
65 | ( |
66 | "$THIS_SH" "./$x" >"$name.xx" 2>&1 |
67 | r=$? |
68 | # filter C library differences |
69 | sed -i \ |
70 | -e "/: invalid option /s:'::g" \ |
71 | "$name.xx" |
72 | test $r -eq 77 && rm -f "../$1-$x.fail" && exit 77 |
73 | diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail" |
74 | ) |
75 | case $? in |
76 | 0) echo " ok";; |
77 | 77) echo " skip (feature disabled)";; |
78 | *) echo " fail"; tret=1;; |
79 | esac |
80 | done |
81 | exit ${tret} |
82 | ) |
83 | } |
84 | |
85 | # Main part of this script |
86 | # Usage: run-all [directories] |
87 | |
88 | ret=0 |
89 | |
90 | if [ $# -lt 1 ]; then |
91 | # All sub directories |
92 | modules=`ls -d hush-*` |
93 | |
94 | for module in $modules; do |
95 | do_test $module || ret=1 |
96 | done |
97 | else |
98 | while [ $# -ge 1 ]; do |
99 | if [ -d $1 ]; then |
100 | do_test $1 || ret=1 |
101 | fi |
102 | shift |
103 | done |
104 | fi |
105 | |
106 | exit ${ret} |
107 |