#!/bin/bash set -e tests=0 failed=0 H=$PWD function run_one { 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 [ -r $H/$f.out ] && ! 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 fail=1 fi cd $H rm -r $D return $fail } TESTS=$@ if [ "$TESTS" == "" ] ; then TESTS=`ls test-* | grep -Ev "\.|~"` fi for f in $TESTS ; do echo -n "." if ! run_one $f ; then failed=$[$failed + 1] fi tests=$[$tests + 1] done echo echo Ran $tests tests, $failed failed if [ $failed -gt 0 ] ; then exit 1 fi