1*1debfc3dSmrg#! /bin/sh 2*1debfc3dSmrg 3*1debfc3dSmrg# (C) 2010 Free Software Foundation 4*1debfc3dSmrg# Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>. 5*1debfc3dSmrg 6*1debfc3dSmrg# This script is Free Software, and it can be copied, distributed and 7*1debfc3dSmrg# modified as defined in the GNU General Public License. A copy of 8*1debfc3dSmrg# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html 9*1debfc3dSmrg 10*1debfc3dSmrgPROGNAME=test_recheck 11*1debfc3dSmrg 12*1debfc3dSmrgusage () 13*1debfc3dSmrg{ 14*1debfc3dSmrg cat <<EOF 15*1debfc3dSmrgUsage: $PROGNAME [-h] [-n] DIR|FILE.sum... 16*1debfc3dSmrg 17*1debfc3dSmrgRerun unsuccessful tests for testsuites below DIR or for FILE.sum. 18*1debfc3dSmrg 19*1debfc3dSmrg -h display this help and exit 20*1debfc3dSmrg -n dry run, only show what would be run 21*1debfc3dSmrgEOF 22*1debfc3dSmrg exit $? 23*1debfc3dSmrg} 24*1debfc3dSmrg 25*1debfc3dSmrgerror () 26*1debfc3dSmrg{ 27*1debfc3dSmrg echo "$@" >&2 28*1debfc3dSmrg exit 1 29*1debfc3dSmrg} 30*1debfc3dSmrg 31*1debfc3dSmrgdry= 32*1debfc3dSmrgfor arg 33*1debfc3dSmrgdo 34*1debfc3dSmrg case $arg in 35*1debfc3dSmrg -h | \?) usage ;; 36*1debfc3dSmrg -n) dry=:; shift ;; 37*1debfc3dSmrg -*) error "unknown argument $arg" ;; 38*1debfc3dSmrg *) break ;; 39*1debfc3dSmrg esac 40*1debfc3dSmrgdone 41*1debfc3dSmrgtest $# -gt 0 || usage 42*1debfc3dSmrg 43*1debfc3dSmrg# Find a good awk. 44*1debfc3dSmrgif test -z "$AWK" ; then 45*1debfc3dSmrg for AWK in gawk nawk awk 46*1debfc3dSmrg do 47*1debfc3dSmrg if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then 48*1debfc3dSmrg : 49*1debfc3dSmrg else 50*1debfc3dSmrg break 51*1debfc3dSmrg fi 52*1debfc3dSmrg done 53*1debfc3dSmrgfi 54*1debfc3dSmrg 55*1debfc3dSmrg: ${MAKE=make} 56*1debfc3dSmrg: ${filesuffix=} 57*1debfc3dSmrgcwd=`pwd` 58*1debfc3dSmrgfiles=`find "$@" -name \*.sum$filesuffix -print | grep testsuite | sort` 59*1debfc3dSmrgst=0 60*1debfc3dSmrg 61*1debfc3dSmrgfor file in $files; do 62*1debfc3dSmrg dir=`echo $file | sed 's,/[^/]*$,,'` 63*1debfc3dSmrg base=`echo $file | sed 's,.*/,,; s,\.sum$,,'` 64*1debfc3dSmrg flags=`$AWK ' 65*1debfc3dSmrg/^Running .*\.exp \.\.\./ { 66*1debfc3dSmrg if (expfile != "" && tests != "") 67*1debfc3dSmrg printf (" %s=\"%s\"", expfile, tests) 68*1debfc3dSmrg expfile = $2 69*1debfc3dSmrg sub (/^[^ ]*\//, "", expfile) 70*1debfc3dSmrg sep = "" 71*1debfc3dSmrg tests = "" 72*1debfc3dSmrg} 73*1debfc3dSmrg/^(FAIL|XPASS|UNRESOLVED|WARNING|ERROR): / { 74*1debfc3dSmrg if (test != $2 "" && $2 != "" ) { 75*1debfc3dSmrg test = $2 76*1debfc3dSmrg tests = tests sep test 77*1debfc3dSmrg sep = " " 78*1debfc3dSmrg } 79*1debfc3dSmrg} 80*1debfc3dSmrgEND { 81*1debfc3dSmrg if (expfile != "" && tests != "") 82*1debfc3dSmrg printf (" %s=\"%s\"", expfile, tests) 83*1debfc3dSmrg}' $file` 84*1debfc3dSmrg if test -n "$flags"; then 85*1debfc3dSmrg cd $dir 86*1debfc3dSmrg amflags= 87*1debfc3dSmrg if grep '^AM_RUNTESTFLAGS =' Makefile >/dev/null 2>&1; then 88*1debfc3dSmrg amflags=`echo 'print-runtestflags: ; @echo $(AM_RUNTESTFLAGS)' \ 89*1debfc3dSmrg | ${MAKE} -s -f Makefile -f - print-runtestflags` 90*1debfc3dSmrg fi 91*1debfc3dSmrg echo "(cd $dir && runtest $amflags --tool $base $flags)" 92*1debfc3dSmrg if test -z "$dry"; then 93*1debfc3dSmrg eval runtest --tool $base $flags || st=$? 94*1debfc3dSmrg fi 95*1debfc3dSmrg cd "$cwd" 96*1debfc3dSmrg fi 97*1debfc3dSmrgdone 98*1debfc3dSmrgexit $st 99