#!/bin/sh

unset LANG LANGUAGE
unset LC_COLLATE
unset LC_CTYPE
unset LC_MONETARY
unset LC_MESSAGES
unset LC_NUMERIC
unset LC_TIME
unset LC_ALL

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
export PATH

THIS_SH="`pwd`/hush"
export THIS_SH

do_test()
{
	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: "$x"
	echo -n "$1/$x:"
	(
		"$THIS_SH" "./$x" >"$name.xx" 2>&1
		# filter C library differences
		sed -i \
			-e "/: invalid option /s:'::g" \
			"$name.xx"
		test $? -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
# Usage: run-all [directories]

ret=0

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

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

exit ${ret}
