xref: /illumos-gate/usr/src/contrib/ast/src/cmd/INIT/rt.sh (revision b30d1939)
1*b30d1939SAndy Fiddaman########################################################################
2*b30d1939SAndy Fiddaman#                                                                      #
3*b30d1939SAndy Fiddaman#               This software is part of the ast package               #
4*b30d1939SAndy Fiddaman#          Copyright (c) 1994-2011 AT&T Intellectual Property          #
5*b30d1939SAndy Fiddaman#                      and is licensed under the                       #
6*b30d1939SAndy Fiddaman#                 Eclipse Public License, Version 1.0                  #
7*b30d1939SAndy Fiddaman#                    by AT&T Intellectual Property                     #
8*b30d1939SAndy Fiddaman#                                                                      #
9*b30d1939SAndy Fiddaman#                A copy of the License is available at                 #
10*b30d1939SAndy Fiddaman#          http://www.eclipse.org/org/documents/epl-v10.html           #
11*b30d1939SAndy Fiddaman#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
12*b30d1939SAndy Fiddaman#                                                                      #
13*b30d1939SAndy Fiddaman#              Information and Software Systems Research               #
14*b30d1939SAndy Fiddaman#                            AT&T Research                             #
15*b30d1939SAndy Fiddaman#                           Florham Park NJ                            #
16*b30d1939SAndy Fiddaman#                                                                      #
17*b30d1939SAndy Fiddaman#                 Glenn Fowler <gsf@research.att.com>                  #
18*b30d1939SAndy Fiddaman#                                                                      #
19*b30d1939SAndy Fiddaman########################################################################
20*b30d1939SAndy Fiddaman: rt - nmake test output filter
21*b30d1939SAndy Fiddaman
22*b30d1939SAndy Fiddamancommand=rt
23*b30d1939SAndy Fiddamanflags='--silent --keepgoing'
24*b30d1939SAndy Fiddamanfailed=0
25*b30d1939SAndy Fiddamanheading=1
26*b30d1939SAndy Fiddamanverbose=0
27*b30d1939SAndy Fiddaman
28*b30d1939SAndy Fiddamancase `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in
29*b30d1939SAndy Fiddaman0123)	ARGV0="-a $command"
30*b30d1939SAndy Fiddaman	USAGE=$'
31*b30d1939SAndy Fiddaman[-?
32*b30d1939SAndy Fiddaman@(#)$Id: rt (AT&T Research) 2010-07-27 $
33*b30d1939SAndy Fiddaman]
34*b30d1939SAndy Fiddaman'$USAGE_LICENSE$'
35*b30d1939SAndy Fiddaman[+NAME?rt - run "nmake test" and filter output]
36*b30d1939SAndy Fiddaman[+DESCRIPTION?\brt\b runs \vnmake test\v and filters the regression
37*b30d1939SAndy Fiddaman	test output to contain only test summary lines. If no \atest\a
38*b30d1939SAndy Fiddaman	operands are specified then \btest\b is assumed. If \b-\b is
39*b30d1939SAndy Fiddaman	specified then the \afile\a operands, or the standard input
40*b30d1939SAndy Fiddaman	if no \afile\a operands are specified, are filtered instead
41*b30d1939SAndy Fiddaman	of the output from \bnmake\b.]
42*b30d1939SAndy Fiddaman[f:failed?Only list failed test results.]
43*b30d1939SAndy Fiddaman[h!:heading?Enable per-file heading when more than one \afile\a operand
44*b30d1939SAndy Fiddaman	follows \b-\b.]
45*b30d1939SAndy Fiddaman[v:verbose?Run with \vREGRESSFLAGS=-v\v.]
46*b30d1939SAndy Fiddaman
47*b30d1939SAndy Fiddaman[ test ... | - [ file ... ] ]
48*b30d1939SAndy Fiddaman
49*b30d1939SAndy Fiddaman[+SEE ALSO?\bnmake\b(1), \bregress\b(1)]
50*b30d1939SAndy Fiddaman[+CAVEATS?\brt\b guesses the regression test output style. Garbled
51*b30d1939SAndy Fiddaman	output indicates a bad guess.]
52*b30d1939SAndy Fiddaman'
53*b30d1939SAndy Fiddaman	;;
54*b30d1939SAndy Fiddaman*)	ARGV0=""
55*b30d1939SAndy Fiddaman	USAGE="fhv"
56*b30d1939SAndy Fiddaman	;;
57*b30d1939SAndy Fiddamanesac
58*b30d1939SAndy Fiddaman
59*b30d1939SAndy Fiddamanfunction usage
60*b30d1939SAndy Fiddaman{
61*b30d1939SAndy Fiddaman	OPTIND=0
62*b30d1939SAndy Fiddaman	getopts $ARGV0 "$USAGE" OPT '-?'
63*b30d1939SAndy Fiddaman	exit 2
64*b30d1939SAndy Fiddaman}
65*b30d1939SAndy Fiddaman
66*b30d1939SAndy Fiddamanwhile	getopts $ARGV0 "$USAGE" OPT
67*b30d1939SAndy Fiddamando	case $OPT in
68*b30d1939SAndy Fiddaman	f)	failed=1 ;;
69*b30d1939SAndy Fiddaman	h)	heading=0 ;;
70*b30d1939SAndy Fiddaman	v)	(( verbose=$OPTARG )) && flags="$flags REGRESSFLAGS=-v" ;;
71*b30d1939SAndy Fiddaman	esac
72*b30d1939SAndy Fiddamandone
73*b30d1939SAndy Fiddamanshift `expr $OPTIND - 1`
74*b30d1939SAndy Fiddaman
75*b30d1939SAndy Fiddamanifs=${IFS:-$' \t\n'}
76*b30d1939SAndy Fiddamanset -o noglob
77*b30d1939SAndy Fiddamancomponent=
78*b30d1939SAndy Fiddamandots='............................................'
79*b30d1939SAndy Fiddamanbad=' ***'
80*b30d1939SAndy Fiddamanstyle=unknown
81*b30d1939SAndy Fiddamaninteger tests errors signals lineno=0 skip=0
82*b30d1939SAndy Fiddamantypeset -l lower
83*b30d1939SAndy Fiddaman
84*b30d1939SAndy Fiddamanfunction results # tests errors signals
85*b30d1939SAndy Fiddaman{
86*b30d1939SAndy Fiddaman	integer t=$1 e=$2 s=$3
87*b30d1939SAndy Fiddaman	typeset label note
88*b30d1939SAndy Fiddaman	if	[[ $style != unknown ]] && (( errors >= 0 ))
89*b30d1939SAndy Fiddaman	then	style=unknown
90*b30d1939SAndy Fiddaman		if	(( !failed || errors ))
91*b30d1939SAndy Fiddaman		then	if	(( failed ))
92*b30d1939SAndy Fiddaman			then	print -r -n -- "$unit"
93*b30d1939SAndy Fiddaman			fi
94*b30d1939SAndy Fiddaman			if	(( t >= 0 ))
95*b30d1939SAndy Fiddaman			then	if	(( t == 1))
96*b30d1939SAndy Fiddaman				then	label="test "
97*b30d1939SAndy Fiddaman				else	label=tests
98*b30d1939SAndy Fiddaman				fi
99*b30d1939SAndy Fiddaman				printf $'%s%5d %s' "$prefix" "$t" "$label"
100*b30d1939SAndy Fiddaman				prefix=
101*b30d1939SAndy Fiddaman			else	prefix="$prefix..........."
102*b30d1939SAndy Fiddaman			fi
103*b30d1939SAndy Fiddaman			if	(( s ))
104*b30d1939SAndy Fiddaman			then	label=signal
105*b30d1939SAndy Fiddaman				(( e=s ))
106*b30d1939SAndy Fiddaman			else	label=error
107*b30d1939SAndy Fiddaman			fi
108*b30d1939SAndy Fiddaman			if	(( e != 1))
109*b30d1939SAndy Fiddaman			then	label=${label}s
110*b30d1939SAndy Fiddaman			fi
111*b30d1939SAndy Fiddaman			if	(( e == 1 ))
112*b30d1939SAndy Fiddaman			then	note=" $bad"
113*b30d1939SAndy Fiddaman			elif	(( e > 1 ))
114*b30d1939SAndy Fiddaman			then	note=$bad
115*b30d1939SAndy Fiddaman			fi
116*b30d1939SAndy Fiddaman			printf $'%s%5d %s%s\n' "$prefix" "$e" "$label" "$note"
117*b30d1939SAndy Fiddaman		fi
118*b30d1939SAndy Fiddaman	fi
119*b30d1939SAndy Fiddaman}
120*b30d1939SAndy Fiddaman
121*b30d1939SAndy Fiddamanfunction unit
122*b30d1939SAndy Fiddaman{
123*b30d1939SAndy Fiddaman	typeset x
124*b30d1939SAndy Fiddaman	if	[[ $component ]]
125*b30d1939SAndy Fiddaman	then	x=${component##*/}
126*b30d1939SAndy Fiddaman		if	[[ " $x " != *' '$unit' '* && " $unit " != *' '$x' '* ]]
127*b30d1939SAndy Fiddaman		then	if	[[ $component == cmd/?*lib/* ]]
128*b30d1939SAndy Fiddaman			then	unit="$unit $x"
129*b30d1939SAndy Fiddaman			else	unit="$x $unit"
130*b30d1939SAndy Fiddaman			fi
131*b30d1939SAndy Fiddaman		fi
132*b30d1939SAndy Fiddaman	fi
133*b30d1939SAndy Fiddaman	unit="$unit ${dots:1:${#dots}-${#unit}}"
134*b30d1939SAndy Fiddaman	if	[[ $1 ]]
135*b30d1939SAndy Fiddaman	then	unit="$unit..........."
136*b30d1939SAndy Fiddaman	fi
137*b30d1939SAndy Fiddaman	if	(( ! failed ))
138*b30d1939SAndy Fiddaman	then	print -r -n -- "$unit"
139*b30d1939SAndy Fiddaman	fi
140*b30d1939SAndy Fiddaman}
141*b30d1939SAndy Fiddaman
142*b30d1939SAndy Fiddamanif	[[ $1 == - ]]
143*b30d1939SAndy Fiddamanthen	shift
144*b30d1939SAndy Fiddaman	if	(( $# <= 1 ))
145*b30d1939SAndy Fiddaman	then	heading=0
146*b30d1939SAndy Fiddaman	fi
147*b30d1939SAndy Fiddaman	if	(( heading ))
148*b30d1939SAndy Fiddaman	then	for i
149*b30d1939SAndy Fiddaman		do	print test heading $i
150*b30d1939SAndy Fiddaman			cat -- "$i"
151*b30d1939SAndy Fiddaman		done
152*b30d1939SAndy Fiddaman	else	cat "$@"
153*b30d1939SAndy Fiddaman	fi
154*b30d1939SAndy Fiddamanelse	if	[[ $1 == *=* ]]
155*b30d1939SAndy Fiddaman	then	set test "$@"
156*b30d1939SAndy Fiddaman	elif	(( ! $# ))
157*b30d1939SAndy Fiddaman	then	set test
158*b30d1939SAndy Fiddaman	fi
159*b30d1939SAndy Fiddaman	nmake "$@" $flags 2>&1
160*b30d1939SAndy Fiddamanfi |
161*b30d1939SAndy Fiddamanwhile	read -r line
162*b30d1939SAndy Fiddamando	set '' $line
163*b30d1939SAndy Fiddaman	shift
164*b30d1939SAndy Fiddaman	case $line in
165*b30d1939SAndy Fiddaman	TEST[' 	']*', '*' error'*)
166*b30d1939SAndy Fiddaman		IFS=${IFS}","
167*b30d1939SAndy Fiddaman		set '' $line
168*b30d1939SAndy Fiddaman		IFS=$ifs
169*b30d1939SAndy Fiddaman		set '' $*
170*b30d1939SAndy Fiddaman		while	:
171*b30d1939SAndy Fiddaman		do	case $2 in
172*b30d1939SAndy Fiddaman			'')	break
173*b30d1939SAndy Fiddaman				;;
174*b30d1939SAndy Fiddaman			error|errors)
175*b30d1939SAndy Fiddaman				errors=$1
176*b30d1939SAndy Fiddaman				break
177*b30d1939SAndy Fiddaman				;;
178*b30d1939SAndy Fiddaman			test|tests)
179*b30d1939SAndy Fiddaman				tests=$1
180*b30d1939SAndy Fiddaman				;;
181*b30d1939SAndy Fiddaman			esac
182*b30d1939SAndy Fiddaman			shift
183*b30d1939SAndy Fiddaman		done
184*b30d1939SAndy Fiddaman		results $tests $errors
185*b30d1939SAndy Fiddaman		continue
186*b30d1939SAndy Fiddaman		;;
187*b30d1939SAndy Fiddaman	TEST[' 	']*)
188*b30d1939SAndy Fiddaman		results $tests $errors
189*b30d1939SAndy Fiddaman		IFS=${IFS}","
190*b30d1939SAndy Fiddaman		set '' $line
191*b30d1939SAndy Fiddaman		IFS=$ifs
192*b30d1939SAndy Fiddaman		set '' $*
193*b30d1939SAndy Fiddaman		unit=${3##*/}
194*b30d1939SAndy Fiddaman		case $4 in
195*b30d1939SAndy Fiddaman		[a-zA-Z]*)	unit="$unit $4" ;;
196*b30d1939SAndy Fiddaman		esac
197*b30d1939SAndy Fiddaman		unit
198*b30d1939SAndy Fiddaman		prefix=
199*b30d1939SAndy Fiddaman		errors=0
200*b30d1939SAndy Fiddaman		signals=0
201*b30d1939SAndy Fiddaman		style=regress
202*b30d1939SAndy Fiddaman		continue
203*b30d1939SAndy Fiddaman		;;
204*b30d1939SAndy Fiddaman	'pathname and options of item under test')
205*b30d1939SAndy Fiddaman		read -r line || break
206*b30d1939SAndy Fiddaman		results $tests $errors $signals
207*b30d1939SAndy Fiddaman		set '' $line
208*b30d1939SAndy Fiddaman		unit=${2##*/}
209*b30d1939SAndy Fiddaman		unit
210*b30d1939SAndy Fiddaman		tests=0
211*b30d1939SAndy Fiddaman		errors=0
212*b30d1939SAndy Fiddaman		signals=0
213*b30d1939SAndy Fiddaman		style=script
214*b30d1939SAndy Fiddaman		continue
215*b30d1939SAndy Fiddaman		;;
216*b30d1939SAndy Fiddaman	'test heading '*)
217*b30d1939SAndy Fiddaman		if	(( heading ))
218*b30d1939SAndy Fiddaman		then	if	(( heading > 1 ))
219*b30d1939SAndy Fiddaman			then	print
220*b30d1939SAndy Fiddaman			else	heading=2
221*b30d1939SAndy Fiddaman			fi
222*b30d1939SAndy Fiddaman			set '' $line
223*b30d1939SAndy Fiddaman			shift 3
224*b30d1939SAndy Fiddaman			print -r -- "==> $* <=="
225*b30d1939SAndy Fiddaman		fi
226*b30d1939SAndy Fiddaman		continue
227*b30d1939SAndy Fiddaman		;;
228*b30d1939SAndy Fiddaman	'test '*' begins at '????-??-??+??:??:??|'test '*' begins at '*' '*' '*' '*' '*)
229*b30d1939SAndy Fiddaman		results $tests $errors $signals
230*b30d1939SAndy Fiddaman		unit=${2##*/}
231*b30d1939SAndy Fiddaman		unit=${unit%.sh}
232*b30d1939SAndy Fiddaman		unit
233*b30d1939SAndy Fiddaman		prefix=
234*b30d1939SAndy Fiddaman		tests=-1
235*b30d1939SAndy Fiddaman		errors=0
236*b30d1939SAndy Fiddaman		signals=0
237*b30d1939SAndy Fiddaman		style=shell
238*b30d1939SAndy Fiddaman		continue
239*b30d1939SAndy Fiddaman		;;
240*b30d1939SAndy Fiddaman	'test '*' at '????-??-??+??:??:??' [ '*' ]'|'test '*' at '*' '*' '*' '*' '*)
241*b30d1939SAndy Fiddaman		case $line in
242*b30d1939SAndy Fiddaman		*' [ '*test*error*' ]')
243*b30d1939SAndy Fiddaman			while	:
244*b30d1939SAndy Fiddaman			do	case $1 in
245*b30d1939SAndy Fiddaman				'[')	tests=$2
246*b30d1939SAndy Fiddaman					errors=$4
247*b30d1939SAndy Fiddaman					if	(( errors > 256 ))
248*b30d1939SAndy Fiddaman					then	(( signals++ ))
249*b30d1939SAndy Fiddaman					fi
250*b30d1939SAndy Fiddaman					break
251*b30d1939SAndy Fiddaman					;;
252*b30d1939SAndy Fiddaman				esac
253*b30d1939SAndy Fiddaman				shift
254*b30d1939SAndy Fiddaman			done
255*b30d1939SAndy Fiddaman			;;
256*b30d1939SAndy Fiddaman		*' [ '*test*signal*' ]')
257*b30d1939SAndy Fiddaman			while	:
258*b30d1939SAndy Fiddaman			do	case $1 in
259*b30d1939SAndy Fiddaman				'[')	tests=$2
260*b30d1939SAndy Fiddaman					signals=$4
261*b30d1939SAndy Fiddaman					if	(( signals ))
262*b30d1939SAndy Fiddaman					then	(( errors++ ))
263*b30d1939SAndy Fiddaman					fi
264*b30d1939SAndy Fiddaman					break
265*b30d1939SAndy Fiddaman					;;
266*b30d1939SAndy Fiddaman				esac
267*b30d1939SAndy Fiddaman				shift
268*b30d1939SAndy Fiddaman			done
269*b30d1939SAndy Fiddaman			;;
270*b30d1939SAndy Fiddaman		*)	if	[[ $3 != passed ]]
271*b30d1939SAndy Fiddaman			then	(( errors )) || (( errors++ ))
272*b30d1939SAndy Fiddaman			fi
273*b30d1939SAndy Fiddaman			;;
274*b30d1939SAndy Fiddaman		esac
275*b30d1939SAndy Fiddaman		results $tests $errors $signals
276*b30d1939SAndy Fiddaman		continue
277*b30d1939SAndy Fiddaman		;;
278*b30d1939SAndy Fiddaman	'## ---'*(-)'--- ##')
279*b30d1939SAndy Fiddaman		(( ++lineno > skip )) || continue
280*b30d1939SAndy Fiddaman		read -r line || break
281*b30d1939SAndy Fiddaman		lower=$line
282*b30d1939SAndy Fiddaman		set '' $lower
283*b30d1939SAndy Fiddaman		case $lower in
284*b30d1939SAndy Fiddaman		'##'*'test suite:'*'##')
285*b30d1939SAndy Fiddaman			results $tests $errors $signals
286*b30d1939SAndy Fiddaman			set -- ${lower//*suite:}
287*b30d1939SAndy Fiddaman			set -- ${*//[.#]/}
288*b30d1939SAndy Fiddaman			unit=$*
289*b30d1939SAndy Fiddaman			if	[[ $unit == *' tests' ]]
290*b30d1939SAndy Fiddaman			then	unit=${unit/' tests'/}
291*b30d1939SAndy Fiddaman			fi
292*b30d1939SAndy Fiddaman			main=$unit
293*b30d1939SAndy Fiddaman			prefix=
294*b30d1939SAndy Fiddaman			tests=0
295*b30d1939SAndy Fiddaman			errors=0
296*b30d1939SAndy Fiddaman			signals=0
297*b30d1939SAndy Fiddaman			category=
298*b30d1939SAndy Fiddaman			style=autotest
299*b30d1939SAndy Fiddaman			(( skip = lineno + 1 ))
300*b30d1939SAndy Fiddaman			unit
301*b30d1939SAndy Fiddaman			continue
302*b30d1939SAndy Fiddaman			;;
303*b30d1939SAndy Fiddaman		esac
304*b30d1939SAndy Fiddaman		;;
305*b30d1939SAndy Fiddaman	+(-))	case $style in
306*b30d1939SAndy Fiddaman		regress)	continue ;;
307*b30d1939SAndy Fiddaman		esac
308*b30d1939SAndy Fiddaman		(( ++lineno > skip )) || continue
309*b30d1939SAndy Fiddaman		read -r line || break
310*b30d1939SAndy Fiddaman		set '' $line
311*b30d1939SAndy Fiddaman		case $line in
312*b30d1939SAndy Fiddaman		'Running tests for '*)
313*b30d1939SAndy Fiddaman			results $tests $errors $signals
314*b30d1939SAndy Fiddaman			shift 4
315*b30d1939SAndy Fiddaman			unit=
316*b30d1939SAndy Fiddaman			while	(( $# ))
317*b30d1939SAndy Fiddaman			do	if	[[ $1 == on ]]
318*b30d1939SAndy Fiddaman				then	break
319*b30d1939SAndy Fiddaman				fi
320*b30d1939SAndy Fiddaman				if	[[ $unit ]]
321*b30d1939SAndy Fiddaman				then	unit="$unit "
322*b30d1939SAndy Fiddaman				fi
323*b30d1939SAndy Fiddaman				unit=$unit${1##*/}
324*b30d1939SAndy Fiddaman				shift
325*b30d1939SAndy Fiddaman			done
326*b30d1939SAndy Fiddaman			main=$unit
327*b30d1939SAndy Fiddaman			prefix=
328*b30d1939SAndy Fiddaman			tests=-1
329*b30d1939SAndy Fiddaman			errors=-1
330*b30d1939SAndy Fiddaman			category=
331*b30d1939SAndy Fiddaman			style=perl
332*b30d1939SAndy Fiddaman			(( skip = lineno + 1 ))
333*b30d1939SAndy Fiddaman			continue
334*b30d1939SAndy Fiddaman			;;
335*b30d1939SAndy Fiddaman		*' : '*)results $tests $errors $signals
336*b30d1939SAndy Fiddaman			unit=${2##*/}
337*b30d1939SAndy Fiddaman			unit=${unit%.sh}
338*b30d1939SAndy Fiddaman			unit
339*b30d1939SAndy Fiddaman			prefix=
340*b30d1939SAndy Fiddaman			tests=0
341*b30d1939SAndy Fiddaman			errors=0
342*b30d1939SAndy Fiddaman			signals=0
343*b30d1939SAndy Fiddaman			style=timing
344*b30d1939SAndy Fiddaman			(( skip = lineno + 1 ))
345*b30d1939SAndy Fiddaman			continue
346*b30d1939SAndy Fiddaman			;;
347*b30d1939SAndy Fiddaman		esac
348*b30d1939SAndy Fiddaman		;;
349*b30d1939SAndy Fiddaman	+([0-9])*([a-zA-Z0-9])' '*)
350*b30d1939SAndy Fiddaman		case $style in
351*b30d1939SAndy Fiddaman		script)	case $line in
352*b30d1939SAndy Fiddaman			*FAILED*|*failed*)
353*b30d1939SAndy Fiddaman				(( errors++ ))
354*b30d1939SAndy Fiddaman				;;
355*b30d1939SAndy Fiddaman			*)	(( tests++ ))
356*b30d1939SAndy Fiddaman				;;
357*b30d1939SAndy Fiddaman			esac
358*b30d1939SAndy Fiddaman			;;
359*b30d1939SAndy Fiddaman		esac
360*b30d1939SAndy Fiddaman		;;
361*b30d1939SAndy Fiddaman	make:*|'make ['*']:'*)
362*b30d1939SAndy Fiddaman		case $line in
363*b30d1939SAndy Fiddaman		*': warning:'*|*'making test'*|*'action'?(s)' failed'*|*': *** '*)
364*b30d1939SAndy Fiddaman			;;
365*b30d1939SAndy Fiddaman		*)	results $tests $errors $signals
366*b30d1939SAndy Fiddaman			print -r -u2 -- "$line"
367*b30d1939SAndy Fiddaman			;;
368*b30d1939SAndy Fiddaman		esac
369*b30d1939SAndy Fiddaman		continue
370*b30d1939SAndy Fiddaman		;;
371*b30d1939SAndy Fiddaman	+([/a-zA-Z_0-9]):)
372*b30d1939SAndy Fiddaman		component=${line%:}
373*b30d1939SAndy Fiddaman		;;
374*b30d1939SAndy Fiddaman	'')	continue
375*b30d1939SAndy Fiddaman		;;
376*b30d1939SAndy Fiddaman	esac
377*b30d1939SAndy Fiddaman	case $style in
378*b30d1939SAndy Fiddaman	autotest)
379*b30d1939SAndy Fiddaman		case $line in
380*b30d1939SAndy Fiddaman		+([0-9]):*ok)
381*b30d1939SAndy Fiddaman			(( tests++ ))
382*b30d1939SAndy Fiddaman			;;
383*b30d1939SAndy Fiddaman		+([0-9]):*FAILED*)
384*b30d1939SAndy Fiddaman			(( tests++ ))
385*b30d1939SAndy Fiddaman			(( errors++ ))
386*b30d1939SAndy Fiddaman			if	(( $verbose ))
387*b30d1939SAndy Fiddaman			then	if	[[ ! $prefix ]]
388*b30d1939SAndy Fiddaman				then	prefix=$unit
389*b30d1939SAndy Fiddaman					print
390*b30d1939SAndy Fiddaman				fi
391*b30d1939SAndy Fiddaman				print -r -- "	${line//*'FAILED '/}"
392*b30d1939SAndy Fiddaman			fi
393*b30d1939SAndy Fiddaman			;;
394*b30d1939SAndy Fiddaman		esac
395*b30d1939SAndy Fiddaman		continue
396*b30d1939SAndy Fiddaman		;;
397*b30d1939SAndy Fiddaman	perl)	case $line in
398*b30d1939SAndy Fiddaman		*'........ '*)
399*b30d1939SAndy Fiddaman			if	[[ $1 == */* ]]
400*b30d1939SAndy Fiddaman			then	cat=${1%%/*}
401*b30d1939SAndy Fiddaman				if	[[ $cat != $category ]]
402*b30d1939SAndy Fiddaman				then	results $tests $errors $signals
403*b30d1939SAndy Fiddaman					category=$cat
404*b30d1939SAndy Fiddaman					unit="$main $category"
405*b30d1939SAndy Fiddaman					unit
406*b30d1939SAndy Fiddaman					prefix=
407*b30d1939SAndy Fiddaman					tests=0
408*b30d1939SAndy Fiddaman					errors=0
409*b30d1939SAndy Fiddaman					signals=0
410*b30d1939SAndy Fiddaman				fi
411*b30d1939SAndy Fiddaman				(( tests++ ))
412*b30d1939SAndy Fiddaman				case $line in
413*b30d1939SAndy Fiddaman				*' ok')	;;
414*b30d1939SAndy Fiddaman				*)	(( errors++ ))
415*b30d1939SAndy Fiddaman					if	(( $verbose ))
416*b30d1939SAndy Fiddaman					then	if	[[ ! $prefix ]]
417*b30d1939SAndy Fiddaman						then	prefix=$unit
418*b30d1939SAndy Fiddaman							print
419*b30d1939SAndy Fiddaman						fi
420*b30d1939SAndy Fiddaman						print -r -- "$line"
421*b30d1939SAndy Fiddaman					fi
422*b30d1939SAndy Fiddaman					;;
423*b30d1939SAndy Fiddaman				esac
424*b30d1939SAndy Fiddaman			else	results $tests $errors $signals
425*b30d1939SAndy Fiddaman				case $line in
426*b30d1939SAndy Fiddaman				*' ok')	errors=0 ;;
427*b30d1939SAndy Fiddaman				*)	errors=1 ;;
428*b30d1939SAndy Fiddaman				esac
429*b30d1939SAndy Fiddaman				unit="$main $1"
430*b30d1939SAndy Fiddaman				unit
431*b30d1939SAndy Fiddaman				if	(( $verbose && errors ))
432*b30d1939SAndy Fiddaman				then	prefix=$unit
433*b30d1939SAndy Fiddaman					print
434*b30d1939SAndy Fiddaman					shift 2
435*b30d1939SAndy Fiddaman					print -r -- "$@"
436*b30d1939SAndy Fiddaman				else	prefix=
437*b30d1939SAndy Fiddaman				fi
438*b30d1939SAndy Fiddaman				results $tests $errors $signals
439*b30d1939SAndy Fiddaman				tests=-1
440*b30d1939SAndy Fiddaman				errors=-1
441*b30d1939SAndy Fiddaman				category=
442*b30d1939SAndy Fiddaman			fi
443*b30d1939SAndy Fiddaman			style=perl
444*b30d1939SAndy Fiddaman			;;
445*b30d1939SAndy Fiddaman		esac
446*b30d1939SAndy Fiddaman		continue
447*b30d1939SAndy Fiddaman		;;
448*b30d1939SAndy Fiddaman	esac
449*b30d1939SAndy Fiddaman	case $line in
450*b30d1939SAndy Fiddaman	*FAILED*|*failed*)
451*b30d1939SAndy Fiddaman		(( errors++ ))
452*b30d1939SAndy Fiddaman		;;
453*b30d1939SAndy Fiddaman	*)	case $style in
454*b30d1939SAndy Fiddaman		regress)case $line in
455*b30d1939SAndy Fiddaman			['<>']*);;
456*b30d1939SAndy Fiddaman			*)	continue ;;
457*b30d1939SAndy Fiddaman			esac
458*b30d1939SAndy Fiddaman			;;
459*b30d1939SAndy Fiddaman		script)	continue
460*b30d1939SAndy Fiddaman			;;
461*b30d1939SAndy Fiddaman		shell)	((errors++ ))
462*b30d1939SAndy Fiddaman			;;
463*b30d1939SAndy Fiddaman		timing)	(( tests++ ))
464*b30d1939SAndy Fiddaman			continue
465*b30d1939SAndy Fiddaman			;;
466*b30d1939SAndy Fiddaman		unknown)continue
467*b30d1939SAndy Fiddaman			;;
468*b30d1939SAndy Fiddaman		esac
469*b30d1939SAndy Fiddaman		;;
470*b30d1939SAndy Fiddaman	esac
471*b30d1939SAndy Fiddaman	if	(( $verbose ))
472*b30d1939SAndy Fiddaman	then	if	[[ ! $prefix ]]
473*b30d1939SAndy Fiddaman		then	prefix=$unit
474*b30d1939SAndy Fiddaman			print
475*b30d1939SAndy Fiddaman		fi
476*b30d1939SAndy Fiddaman		print -r -- "$line"
477*b30d1939SAndy Fiddaman	fi
478*b30d1939SAndy Fiddamandone
479*b30d1939SAndy Fiddamanresults $tests $errors $signals
480