#!/bin/sh

TOPDIR=$PWD

test -x ash || {
    echo "No ./ash - creating a link to ../../busybox"
    ln -s ../../busybox ash
}
test -x printenv || gcc -O2 -o printenv printenv.c || exit $?
test -x recho    || gcc -O2 -o recho    recho.c    || exit $?
test -x zecho    || gcc -O2 -o zecho    zecho.c    || exit $?

PATH="$PWD:$PATH" # for ash and recho/zecho/printenv
export PATH

THIS_SH="$PWD/ash"
export THIS_SH

do_test()
{
    test -d "$1" || return 0
#   echo do_test "$1"
    # $1 but with / replaced by # so that it can be used as filename part
    noslash=`echo "$1" | sed 's:/:#:g'`
    (
    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" >"$TOPDIR/$noslash-$x.fail" 2>&1 && \
	    { echo "$1/$x: ok"; rm "$TOPDIR/$noslash-$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 -x "$x" || continue
	name="${x%%.tests}"
	test -f "$name.right" || continue
	{
	    "$THIS_SH" "./$x" >"$name.xx" 2>&1
	    diff -u "$name.xx" "$name.right" >"$TOPDIR/$noslash-$x.fail" \
	    && rm -f "$name.xx" "$TOPDIR/$noslash-$x.fail"
	} && echo "$1/$x: ok" || echo "$1/$x: fail"
    done
    )
}

# main part of this script
# Usage: run-all [directories]

if [ $# -lt 1 ]; then
    # All sub directories
    modules=`ls -d ash-*`
    # If you want to test ash against hush and msh testsuites
    # (have to copy hush_test and msh_test dirs to current dir first):
    #modules=`ls -d ash-* hush_test/hush-* msh_test/msh-*`

    for module in $modules; do
	do_test $module
    done
else
    while [ $# -ge 1 ]; do
	if [ -d $1 ]; then
	    do_test $1
	fi
	shift
    done
fi
