1*63d4abf0Sagc#! /bin/sh
2*63d4abf0Sagc
3*63d4abf0Sagcset -e
4*63d4abf0Sagc
5*63d4abf0Sagcagrep="$top_builddir/src/agrep"
6*63d4abf0Sagc
7*63d4abf0Sagcecho "$builddir $top_builddir $srcdir"
8*63d4abf0Sagc
9*63d4abf0Sagcnum_cases=0
10*63d4abf0Sagcnum_expanded=0
11*63d4abf0Sagcnum_tests=0
12*63d4abf0Sagcnum_fail=0
13*63d4abf0Sagcnum_ok=0
14*63d4abf0Sagc
15*63d4abf0SagcSIFS="$IFS"
16*63d4abf0Sagc
17*63d4abf0Sagcfor args in $srcdir/*.args; do
18*63d4abf0Sagc  dir=`dirname $args`
19*63d4abf0Sagc  base=`basename $args .args`
20*63d4abf0Sagc  orig_input=$dir/$base.input
21*63d4abf0Sagc  input=$base.in
22*63d4abf0Sagc  ok=$dir/$base.ok
23*63d4abf0Sagc  out=$base.out
24*63d4abf0Sagc
25*63d4abf0Sagc  rm -f $out
26*63d4abf0Sagc  IFS="
27*63d4abf0Sagc"
28*63d4abf0Sagc  for arg in `cat $args`; do
29*63d4abf0Sagc    IFS="$SIFS"
30*63d4abf0Sagc    case "$arg" in
31*63d4abf0Sagc      \#*) continue;;
32*63d4abf0Sagc    esac
33*63d4abf0Sagc
34*63d4abf0Sagc    num_cases=`expr $num_cases + 1`
35*63d4abf0Sagc    cp "$orig_input" $input
36*63d4abf0Sagc
37*63d4abf0Sagc    for extra in "" -c -H -l -n -s -M --show-position --color \
38*63d4abf0Sagc                 "-H -n -s --color --show-position"; do
39*63d4abf0Sagc      num_expanded=`expr $num_expanded + 1`
40*63d4abf0Sagc      # Note that `echo' cannot be used since it works differently on
41*63d4abf0Sagc      # different platforms with regards to expanding \n (IRIX expands
42*63d4abf0Sagc      # it, others typically do not).  `cat' doesn't process its output.
43*63d4abf0Sagc      cat >> $out <<EOF
44*63d4abf0Sagc#### TEST: agrep $extra $arg $input
45*63d4abf0SagcEOF
46*63d4abf0Sagc      cat <<EOF
47*63d4abf0Sagcagrep $extra $arg $input
48*63d4abf0SagcEOF
49*63d4abf0Sagc      set +e
50*63d4abf0Sagc      $agrep $extra $arg $input >> $out
51*63d4abf0Sagc      status=$?
52*63d4abf0Sagc      set -e
53*63d4abf0Sagc      cat >> $out <<EOF
54*63d4abf0Sagc
55*63d4abf0SagcExit status $status.
56*63d4abf0SagcEOF
57*63d4abf0Sagc
58*63d4abf0Sagc      num_expanded=`expr $num_expanded + 1`
59*63d4abf0Sagc      cat >> $out <<EOF
60*63d4abf0Sagc#### TEST: agrep $extra $arg < $input
61*63d4abf0SagcEOF
62*63d4abf0Sagc      cat <<EOF
63*63d4abf0Sagcagrep $extra $arg < $input
64*63d4abf0SagcEOF
65*63d4abf0Sagc      set +e
66*63d4abf0Sagc      $agrep $extra $arg < $input >> $out
67*63d4abf0Sagc      status=$?
68*63d4abf0Sagc      set -e
69*63d4abf0Sagc      cat >> $out <<EOF
70*63d4abf0Sagc
71*63d4abf0SagcExit status $status.
72*63d4abf0SagcEOF
73*63d4abf0Sagc    done
74*63d4abf0Sagc  done
75*63d4abf0Sagc  num_tests=`expr $num_tests + 1`
76*63d4abf0Sagc  case $host_triplet in
77*63d4abf0Sagc    *-mingw*)
78*63d4abf0Sagc      # On MinGW something causes \r\n newlines to be output to $out,
79*63d4abf0Sagc      # and our reference results don't have them.
80*63d4abf0Sagc      tr -d '\015' < $out > $out.tmp
81*63d4abf0Sagc      mv $out.tmp $out
82*63d4abf0Sagc      ;;
83*63d4abf0Sagc  esac
84*63d4abf0Sagc  if diff $ok $out; then
85*63d4abf0Sagc    num_ok=`expr $num_ok + 1`
86*63d4abf0Sagc  else
87*63d4abf0Sagc    echo "FAILED (see above)"
88*63d4abf0Sagc    num_fail=`expr $num_fail + 1`
89*63d4abf0Sagc  fi
90*63d4abf0Sagcdone
91*63d4abf0Sagc
92*63d4abf0Sagcecho "Ran $num_cases tests ($num_expanded expanded) from $num_tests suites."
93*63d4abf0Sagcecho "$num_ok/$num_tests tests OK"
94*63d4abf0Sagc
95*63d4abf0Sagctest $num_fail -eq 0
96*63d4abf0Sagcexit $?
97