xref: /netbsd-src/external/gpl3/gcc.old/dist/contrib/test_recheck (revision 1debfc3d3fad8af6f31804271c18e67f77b4d718)
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