#!/bin/bash set -e tests=0 failed=0 H=$PWD for f in `ls test-* | grep -Ev "\.|~"` ; do echo -n "." D=`mktemp -d` if [ "$D" == "" ] ; then echo mktemp failed! fi cd $D fail=0 if ! $H/$f > .out 2>&1 ; then echo $f failed with error code $? fail=1 fi if [ -s .out -a ! -r $H/$f.out ] ; then echo $f generated unexpected output: cat .out cp .out $H/$f.err fail=1 elif ! diff -u $H/$f.out .out > /dev/null ; then echo $f output changed: diff -u $H/$f.out .out && true cp .out $H/$f.err fi cd $H rm -r $D failed=$[$failed + $fail] tests=$[$tests + 1] done echo echo Ran $tests tests, $failed failed if [ $failed -gt 0 ] ; then exit 1 fi