#!/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 ;;
	    *)
	    echo -n "$1/$x: "
	    sh "$x" >"$TOPDIR/$noslash-$x.fail" 2>&1 && \
	    { echo "ok"; rm "$TOPDIR/$noslash-$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 -n "$1/$x: "
	{
	    "$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 "ok" || echo "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
