#! /bin/sh # (C) 2010 Free Software Foundation # Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>. # This script is Free Software, and it can be copied, distributed and # modified as defined in the GNU General Public License. A copy of # its license can be downloaded from http://www.gnu.org/copyleft/gpl.html PROGNAME=test_recheck usage () { cat <<EOF Usage: $PROGNAME [-h] [-n] DIR|FILE.sum... Rerun unsuccessful tests for testsuites below DIR or for FILE.sum. -h display this help and exit -n dry run, only show what would be run EOF exit $? } error () { echo "$@" >&2 exit 1 } dry= for arg do case $arg in -h | \?) usage ;; -n) dry=:; shift ;; -*) error "unknown argument $arg" ;; *) break ;; esac done test $# -gt 0 || usage # Find a good awk. if test -z "$AWK" ; then for AWK in gawk nawk awk do if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then : else break fi done fi : ${MAKE=make} : ${filesuffix=} cwd=`pwd` files=`find "$@" -name \*.sum$filesuffix -print | grep testsuite | sort` st=0 for file in $files; do dir=`echo $file | sed 's,/[^/]*$,,'` base=`echo $file | sed 's,.*/,,; s,\.sum$,,'` flags=`$AWK ' /^Running .*\.exp \.\.\./ { if (expfile != "" && tests != "") printf (" %s=\"%s\"", expfile, tests) expfile = $2 sub (/^[^ ]*\//, "", expfile) sep = "" tests = "" } /^(FAIL|XPASS|UNRESOLVED|WARNING|ERROR): / { if (test != $2 "" && $2 != "" ) { test = $2 tests = tests sep test sep = " " } } END { if (expfile != "" && tests != "") printf (" %s=\"%s\"", expfile, tests) }' $file` if test -n "$flags"; then cd $dir amflags= if grep '^AM_RUNTESTFLAGS =' Makefile >/dev/null 2>&1; then amflags=`echo 'print-runtestflags: ; @echo $(AM_RUNTESTFLAGS)' \ | ${MAKE} -s -f Makefile -f - print-runtestflags` fi echo "(cd $dir && runtest $amflags --tool $base $flags)" if test -z "$dry"; then eval runtest --tool $base $flags || st=$? fi cd "$cwd" fi done exit $st |