14887Schin# This program runs ksh regression tests 28462SApril.Chin@Sun.COM# shtests [ name=value ... ] [ --all | --compile ] [ --time ] [ a.sh b.sh ... ] 34887Schin 410898Sroland.mainz@nrubsig.orgtimesensitive='*@(options|sigchld|subshell).sh' 510898Sroland.mainz@nrubsig.org 610898Sroland.mainz@nrubsig.orgunset DISPLAY ENV FIGNORE HISTFILE 74887SchinLANG=C 84887SchinLC_ALL=C 98462SApril.Chin@Sun.COMcompile=1 108462SApril.Chin@Sun.COMscript=1 114887Schintime=1 12*12068SRoger.Faulkner@Oracle.COMvmalloc_options=abort 134887Schinwhile : 144887Schindo case $1 in 158462SApril.Chin@Sun.COM -a|--a*)compile=2 168462SApril.Chin@Sun.COM script=2 178462SApril.Chin@Sun.COM ;; 188462SApril.Chin@Sun.COM -c|--c*)compile=2 198462SApril.Chin@Sun.COM script= 208462SApril.Chin@Sun.COM ;; 218462SApril.Chin@Sun.COM -s|--s*)compile= 228462SApril.Chin@Sun.COM script=2 238462SApril.Chin@Sun.COM ;; 248462SApril.Chin@Sun.COM -t|--not*)time= 258462SApril.Chin@Sun.COM ;; 26*12068SRoger.Faulkner@Oracle.COM -v|--nov*)vmalloc_options= 278462SApril.Chin@Sun.COM ;; 288462SApril.Chin@Sun.COM -*) echo $0: $1: invalid option >&2 298462SApril.Chin@Sun.COM exit 2 308462SApril.Chin@Sun.COM ;; 314887Schin *=*) n=${1%%=*} 324887Schin v=${1#*=} 334887Schin eval $n=\'$v\' 344887Schin export $n 354887Schin ;; 364887Schin *) break 374887Schin ;; 384887Schin esac 394887Schin shift 404887Schindone 41*12068SRoger.Faulkner@Oracle.COMif [[ $VMALLOC_OPTIONS ]] 42*12068SRoger.Faulkner@Oracle.COMthen vmalloc_options=$VMALLOC_OPTIONS 43*12068SRoger.Faulkner@Oracle.COMelse VMALLOC_OPTIONS=$vmalloc_options 448462SApril.Chin@Sun.COMfi 45*12068SRoger.Faulkner@Oracle.COM[[ $VMALLOC_OPTIONS ]] || timesensitive=. 46*12068SRoger.Faulkner@Oracle.COMexport LANG LC_ALL PATH PWD SHELL VMALLOC_OPTIONS 474887SchinPWD=`pwd` 484887SchinSHELL=${SHELL-ksh} 494887Schincase $0 in 504887Schin/*) d=`dirname $0`;; 514887Schin*/*) d=$PWD/`dirname $0`;; 524887Schin*) d=$PWD;; 534887Schinesac 544887Schincase $SHELL in 554887Schin/*) ;; 564887Schin*/*) SHELL=$d/$SHELL;; 574887Schin*) SHELL=$(whence $SHELL);; 584887Schinesac 594887SchinPATH=/bin:/usr/bin 604887Schinif [[ -d /usr/ucb ]] 614887Schinthen PATH=$PATH:/usr/ucb 624887Schinfi 634887SchinPATH=$PATH:$d 648462SApril.Chin@Sun.COMif [[ $INSTALLROOT && -r $INSTALLROOT/bin/.paths ]] 654887Schinthen PATH=$INSTALLROOT/bin:$PATH 664887Schinfi 678462SApril.Chin@Sun.COMif [[ $compile ]] 688462SApril.Chin@Sun.COMthen SHCOMP=${SHCOMP:-shcomp} 698462SApril.Chin@Sun.COM if whence $SHCOMP > /dev/null 7010898Sroland.mainz@nrubsig.org then tmp=$(mktemp -dt) || { echo mktemp -dt failed >&2; exit 1; } 7110898Sroland.mainz@nrubsig.org trap "cd /; rm -rf $tmp" EXIT 728462SApril.Chin@Sun.COM elif [[ $compile != 1 ]] 738462SApril.Chin@Sun.COM then echo $0: --compile: $SHCOMP not found >&2 748462SApril.Chin@Sun.COM exit 1 758462SApril.Chin@Sun.COM else compile= 768462SApril.Chin@Sun.COM fi 778462SApril.Chin@Sun.COMfi 788462SApril.Chin@Sun.COMtypeset -A tests 794887Schinfor i in ${*-*.sh} 80*12068SRoger.Faulkner@Oracle.COMdo if [[ ! -r $i ]] 81*12068SRoger.Faulkner@Oracle.COM then echo $0: $i: not found >&2 82*12068SRoger.Faulkner@Oracle.COM continue 83*12068SRoger.Faulkner@Oracle.COM fi 84*12068SRoger.Faulkner@Oracle.COM t=$(grep -c err_exit $i) 858462SApril.Chin@Sun.COM if (( $t > 2 )) 868462SApril.Chin@Sun.COM then (( t = $t - 2 )) 874887Schin fi 888462SApril.Chin@Sun.COM tests[$i]=$t 894887Schin T=test 904887Schin if (( $t != 1 )) 914887Schin then T=${T}s 924887Schin fi 934887Schin E=error 948462SApril.Chin@Sun.COM if [[ $script ]] 958462SApril.Chin@Sun.COM then echo test $i begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} 9610898Sroland.mainz@nrubsig.org if [[ $i == $timesensitive ]] 97*12068SRoger.Faulkner@Oracle.COM then VMALLOC_OPTIONS= 9810898Sroland.mainz@nrubsig.org fi 998462SApril.Chin@Sun.COM if $SHELL $i 1008462SApril.Chin@Sun.COM then echo test $i passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 ${E}s ]" 1018462SApril.Chin@Sun.COM else e=$? 1028462SApril.Chin@Sun.COM if (( e > 256 )) 1038462SApril.Chin@Sun.COM then e=1 1048462SApril.Chin@Sun.COM E=signal 1058462SApril.Chin@Sun.COM fi 1068462SApril.Chin@Sun.COM if (( $e != 1 )) 1078462SApril.Chin@Sun.COM then E=${E}s 1088462SApril.Chin@Sun.COM fi 1098462SApril.Chin@Sun.COM echo test $i failed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T $e $E ]" 1104887Schin fi 11110898Sroland.mainz@nrubsig.org if [[ $i == $timesensitive ]] 112*12068SRoger.Faulkner@Oracle.COM then VMALLOC_OPTIONS=$vmalloc_options 11310898Sroland.mainz@nrubsig.org fi 1144887Schin fi 1154887Schindone 1168462SApril.Chin@Sun.COMif [[ $compile ]] 1178462SApril.Chin@Sun.COMthen for i in ${*-*.sh} 118*12068SRoger.Faulkner@Oracle.COM do if [[ ! -r $i ]] 119*12068SRoger.Faulkner@Oracle.COM then continue 120*12068SRoger.Faulkner@Oracle.COM fi 121*12068SRoger.Faulkner@Oracle.COM t=${tests[$i]} 1228462SApril.Chin@Sun.COM T=test 1238462SApril.Chin@Sun.COM if (( $t != 1 )) 1248462SApril.Chin@Sun.COM then T=${T}s 1258462SApril.Chin@Sun.COM fi 1268462SApril.Chin@Sun.COM o=${i##*/} 1278462SApril.Chin@Sun.COM o=shcomp-${o%.sh}.ksh 1288462SApril.Chin@Sun.COM echo test $o begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} 1298462SApril.Chin@Sun.COM E=error 1308462SApril.Chin@Sun.COM if $SHCOMP $i > $tmp/$o 13110898Sroland.mainz@nrubsig.org then if [[ $i == $timesensitive ]] 132*12068SRoger.Faulkner@Oracle.COM then VMALLOC_OPTIONS= 13310898Sroland.mainz@nrubsig.org fi 13410898Sroland.mainz@nrubsig.org if $SHELL $tmp/$o 1358462SApril.Chin@Sun.COM then echo test $o passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 ${E}s ]" 1368462SApril.Chin@Sun.COM else e=$? 1378462SApril.Chin@Sun.COM if (( e > 256 )) 1388462SApril.Chin@Sun.COM then e=1 1398462SApril.Chin@Sun.COM E=signal 1408462SApril.Chin@Sun.COM fi 1418462SApril.Chin@Sun.COM if (( $e != 1 )) 1428462SApril.Chin@Sun.COM then E=${E}s 1438462SApril.Chin@Sun.COM fi 1448462SApril.Chin@Sun.COM echo test $o failed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T $e $E ]" 1458462SApril.Chin@Sun.COM fi 14610898Sroland.mainz@nrubsig.org if [[ $i == $timesensitive ]] 147*12068SRoger.Faulkner@Oracle.COM then VMALLOC_OPTIONS=$vmalloc_options 14810898Sroland.mainz@nrubsig.org fi 1498462SApril.Chin@Sun.COM else e=$? 1508462SApril.Chin@Sun.COM t=1 1518462SApril.Chin@Sun.COM T=test 1528462SApril.Chin@Sun.COM echo test $o failed to compile ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T 1 $E ]" 1538462SApril.Chin@Sun.COM fi 1548462SApril.Chin@Sun.COM done 1558462SApril.Chin@Sun.COMfi 156