blob: 37a36c29ef22a8e388087608192ae7af7378d11a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# This program runs ksh regression tests
# shtests [ name=value ... ] [ --all | --compile ] [ --time ] [ a.sh b.sh ... ]
timesensitive='*@(options|sigchld|subshell).sh'
unset DISPLAY ENV FIGNORE HISTFILE
LANG=C
LC_ALL=C
compile=1
script=1
time=1
vmdebug=a
while :
do case $1 in
-a|--a*)compile=2
script=2
;;
-c|--c*)compile=2
script=
;;
-s|--s*)compile=
script=2
;;
-t|--not*)time=
;;
-v|--nov*)vmdebug=
;;
-*) echo $0: $1: invalid option >&2
exit 2
;;
*=*) n=${1%%=*}
v=${1#*=}
eval $n=\'$v\'
export $n
;;
*) break
;;
esac
shift
done
if [[ ! $vmdebug ]]
then unset VMDEBUG
elif [[ $VMDEBUG ]]
then vmdebug=$VMDEBUG
else export VMDEBUG=$vmdebug
fi
[[ $VMDEBUG ]] || timesensitive=.
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
if [[ $compile ]]
then SHCOMP=${SHCOMP:-shcomp}
if whence $SHCOMP > /dev/null
then tmp=$(mktemp -dt) || { echo mktemp -dt failed >&2; exit 1; }
trap "cd /; rm -rf $tmp" EXIT
elif [[ $compile != 1 ]]
then echo $0: --compile: $SHCOMP not found >&2
exit 1
else compile=
fi
fi
typeset -A tests
for i in ${*-*.sh}
do t=$(grep -c err_exit $i)
if (( $t > 2 ))
then (( t = $t - 2 ))
fi
tests[$i]=$t
T=test
if (( $t != 1 ))
then T=${T}s
fi
E=error
if [[ $script ]]
then echo test $i begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"}
if [[ $i == $timesensitive ]]
then unset VMDEBUG
fi
if $SHELL $i
then echo test $i passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 ${E}s ]"
else e=$?
if (( e > 256 ))
then e=1
E=signal
fi
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
if [[ $i == $timesensitive ]]
then export VMDEBUG=$vmdebug
fi
fi
done
if [[ $compile ]]
then for i in ${*-*.sh}
do t=${tests[$i]}
T=test
if (( $t != 1 ))
then T=${T}s
fi
o=${i##*/}
o=shcomp-${o%.sh}.ksh
echo test $o begins ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"}
E=error
if $SHCOMP $i > $tmp/$o
then if [[ $i == $timesensitive ]]
then unset VMDEBUG
fi
if $SHELL $tmp/$o
then echo test $o passed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} "[ $t $T 0 ${E}s ]"
else e=$?
if (( e > 256 ))
then e=1
E=signal
fi
if (( $e != 1 ))
then E=${E}s
fi
echo test $o failed ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T $e $E ]"
fi
if [[ $i == $timesensitive ]]
then export VMDEBUG=$vmdebug
fi
else e=$?
t=1
T=test
echo test $o failed to compile ${time:+"at $(date +%Y-%m-%d+%H:%M:%S)"} with exit code $e "[ $t $T 1 $E ]"
fi
done
fi
|