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