shtests   [plain text]


# This program runs ksh regression tests
# shtests [ name=value ... ] a.sh b.sh ...

unset DISPLAY ENV FIGNORE
LANG=C
LC_ALL=C
time=1
while	:
do	case $1 in
	*=*)	n=${1%%=*}
		v=${1#*=}
		eval $n=\'$v\'
		export $n
		;;
	-t|--t*)time=
		;;
	*)	break
		;;
	esac
	shift
done
export LANG LC_ALL PATH PWD SHELL
PWD=`pwd`
SHELL=${SHELL-ksh}
case $0 in
/*)	d=`dirname $0`;;
*/*)	d=$PWD/`dirname $0`;;
*)	d=$PWD;;
esac
case $SHELL in
/*)	;;
*/*)	SHELL=$d/$SHELL;;
*)	SHELL=$(whence $SHELL);;
esac
PATH=/bin:/usr/bin
if	[[ -d /usr/ucb ]]
then	PATH=$PATH:/usr/ucb
fi
PATH=$PATH:$d
if [[ $INSTALLROOT && -r $INSTALLROOT/bin/.paths ]]
then	PATH=$INSTALLROOT/bin:$PATH
fi
for i in ${*-*.sh}
do	echo test $i begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"}
	t=$(grep -c err_exit $i)
	if	(( $t ))
	then	(( t = $t - 1 ))
	fi
	T=test
	if	(( $t != 1 ))
	then	T=${T}s
	fi
	E=error
	if	$SHELL $i
	then	echo test $i passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 ${E}s ]"
	else	e=$?
		E=error
		if	(( $e != 1 ))
		then	E=${E}s
		fi
		echo test $i failed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T $e $E ]"
	fi
done