unset LC_TIME
unset LC_ALL
-test -x hush || {
- echo "No ./hush - creating a link to ../../busybox"
- ln -s ../../busybox hush
-}
+if test ! -x hush; then
+ if test ! -x ../../busybox; then
+ echo "Can't run tests. Put hush binary into this directory (`pwd`)"
+ exit 1
+ fi
+ echo "No ./hush - creating a link to ../../busybox"
+ ln -s ../../busybox hush
+fi
+if test ! -f .config; then
+ if test ! -f ../../.config; then
+ echo "Missing .config file"
+ exit 1
+ fi
+ cp ../../.config . || exit 1
+fi
+
+eval $(sed -e '/^#/d' -e '/^$/d' -e 's:^:export :' .config)
-PATH="$PWD:$PATH" # for hush and recho/zecho/printenv
+PATH="`pwd`:$PATH" # for hush and recho/zecho/printenv
export PATH
-THIS_SH="$PWD/hush"
+THIS_SH="`pwd`/hush"
export THIS_SH
do_test()
{
- test -d "$1" || return 0
-# echo Running tests in directory "$1"
- (
- tret=0
- cd "$1" || { echo "cannot cd $1!"; exit 1; }
- for x in run-*; do
- test -f "$x" || continue
- case "$x" in
- "$0"|run-minimal|run-gprof) ;;
- *.orig|*~) ;;
- #*) echo $x ; sh $x ;;
- *)
- sh "$x" >"../$1-$x.fail" 2>&1 && \
- { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
- ;;
- esac
- done
- # Many bash run-XXX scripts just do this,
- # no point in duplication it all over the place
- for x in *.tests; do
+ test -d "$1" || return 0
+ d=${d%/}
+# echo Running tests in directory "$1"
+ (
+ tret=0
+ cd "$1" || { echo "cannot cd $1!"; exit 1; }
+ for x in run-*; do
+ test -f "$x" || continue
+ case "$x" in
+ "$0"|run-minimal|run-gprof) ;;
+ *.orig|*~) ;;
+ #*) echo $x ; sh $x ;;
+ *)
+ echo -n "$1/$x:"
+ sh "$x" >"../$1-$x.fail" 2>&1 && \
+ { { echo " ok"; rm "../$1-$x.fail"; } || echo " fail"; }
+ ;;
+ esac
+ done
+ # Many bash run-XXX scripts just do this,
+ # no point in duplication it all over the place
+ for x in *.tests; do
test -x "$x" || continue
name="${x%%.tests}"
test -f "$name.right" || continue
-# echo Running test: "$name.right"
- {
- "$THIS_SH" "./$x" >"$name.xx" 2>&1
- diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
- } && echo "$1/$x: ok" || { echo "$1/$x: fail"; tret=1; }
- done
- exit ${tret}
- )
+# echo Running test: "$x"
+ echo -n "$1/$x:"
+ (
+ "$THIS_SH" "./$x" >"$name.xx" 2>&1
+ r=$?
+ # filter C library differences
+ sed -i \
+ -e "/: invalid option /s:'::g" \
+ "$name.xx"
+ test $r -eq 77 && rm -f "../$1-$x.fail" && exit 77
+ diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
+ )
+ case $? in
+ 0) echo " ok";;
+ 77) echo " skip (feature disabled)";;
+ *) echo " fail"; tret=1;;
+ esac
+ done
+ exit ${tret}
+ )
}
# Main part of this script
ret=0
if [ $# -lt 1 ]; then
- # All sub directories
- modules=`ls -d hush-*`
+ # All sub directories
+ modules=`ls -d hush-*`
- for module in $modules; do
+ for module in $modules; do
do_test $module || ret=1
- done
+ done
else
- while [ $# -ge 1 ]; do
+ while [ $# -ge 1 ]; do
if [ -d $1 ]; then
- do_test $1 || ret=1
+ do_test $1 || ret=1
fi
shift
- done
+ done
fi
exit ${ret}