shtests revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# This program runs ksh regression tests
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# shtests [ name=value ... ] a.sh b.sh ...
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinunset DISPLAY ENV FIGNORE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinLANG=C
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinLC_ALL=C
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chintime=1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinwhile :
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindo case $1 in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *=*) n=${1%%=*}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin v=${1#*=}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin eval $n=\'$v\'
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin export $n
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin -t|--t*)time=
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *) break
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin esac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin shift
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindone
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinexport LANG LC_ALL PATH PWD SHELL
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinPWD=`pwd`
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinSHELL=${SHELL-ksh}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincase $0 in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*) d=`dirname $0`;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*/*) d=$PWD/`dirname $0`;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*) d=$PWD;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinesac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chincase $SHELL in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*) ;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*/*) SHELL=$d/$SHELL;;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin*) SHELL=$(whence $SHELL);;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinesac
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinPATH=/bin:/usr/bin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ -d /usr/ucb ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen PATH=$PATH:/usr/ucb
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinPATH=$PATH:$d
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinif [[ $INSTALLROOT && -r $INSTALLROOT/bin/.paths ]]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinthen PATH=$INSTALLROOT/bin:$PATH
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinfor i in ${*-*.sh}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindo echo test $i begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"}
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin t=$(grep -c err_exit $i)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (( $t ))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then (( t = $t - 1 ))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin fi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin T=test
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (( $t != 1 ))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then T=${T}s
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin fi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin E=error
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if $SHELL $i
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then echo test $i passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 ${E}s ]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else e=$?
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin E=error
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (( $e != 1 ))
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin then E=${E}s
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin fi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin echo test $i failed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T $e $E ]"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin fi
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chindone