2013-04-06 16:48:33 +02:00

97 lines
1.9 KiB
Bash
Executable File

#! /bin/sh
set -e
agrep="$top_builddir/src/agrep"
echo "$builddir $top_builddir $srcdir"
num_cases=0
num_expanded=0
num_tests=0
num_fail=0
num_ok=0
SIFS="$IFS"
for args in $srcdir/*.args; do
dir=`dirname $args`
base=`basename $args .args`
orig_input=$dir/$base.input
input=$base.in
ok=$dir/$base.ok
out=$base.out
rm -f $out
IFS="
"
for arg in `cat $args`; do
IFS="$SIFS"
case "$arg" in
\#*) continue;;
esac
num_cases=`expr $num_cases + 1`
cp "$orig_input" $input
for extra in "" -c -H -l -n -s -M --show-position --color \
"-H -n -s --color --show-position"; do
num_expanded=`expr $num_expanded + 1`
# Note that `echo' cannot be used since it works differently on
# different platforms with regards to expanding \n (IRIX expands
# it, others typically do not). `cat' doesn't process its output.
cat >> $out <<EOF
#### TEST: agrep $extra $arg $input
EOF
cat <<EOF
agrep $extra $arg $input
EOF
set +e
$agrep $extra $arg $input >> $out
status=$?
set -e
cat >> $out <<EOF
Exit status $status.
EOF
num_expanded=`expr $num_expanded + 1`
cat >> $out <<EOF
#### TEST: agrep $extra $arg < $input
EOF
cat <<EOF
agrep $extra $arg < $input
EOF
set +e
$agrep $extra $arg < $input >> $out
status=$?
set -e
cat >> $out <<EOF
Exit status $status.
EOF
done
done
num_tests=`expr $num_tests + 1`
case $host_triplet in
*-mingw*)
# On MinGW something causes \r\n newlines to be output to $out,
# and our reference results don't have them.
tr -d '\015' < $out > $out.tmp
mv $out.tmp $out
;;
esac
if diff $ok $out; then
num_ok=`expr $num_ok + 1`
else
echo "FAILED (see above)"
num_fail=`expr $num_fail + 1`
fi
done
echo "Ran $num_cases tests ($num_expanded expanded) from $num_tests suites."
echo "$num_ok/$num_tests tests OK"
test $num_fail -eq 0
exit $?