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