#!/bin/sh

test -x msh || {
    echo "No ./msh?! Perhaps you want to run 'ln -s ../../busybox msh'"
    exit
}

PATH="$PWD:$PATH" # for msh
export PATH

THIS_SH="$PWD/msh"
export THIS_SH

do_test()
{
    test -d "$1" || return 0
#   echo Running tests in directory "$1"
    (
    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
#	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"
    done
    )
}

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

if [ $# -lt 1 ]; then
    # All sub directories
    modules=`ls -d 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
