#!/bin/sh

test -x ash || { echo "No ./ash?!"; exit; }
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
    (
    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 -x "$x" || continue
	name="${x%%.tests}"
	test -f "$name.right" || continue
	{
	    "$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"
    done
    )
}

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

if [ $# -lt 1 ]; then
    # All sub directories
    modules=`ls -d ash-*`

    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
