run-tests
61 lines
| 886 B
| text/plain
|
TextLexer
/ tests / run-tests
|
r331 | #!/bin/bash | ||
set -e | ||||
tests=0 | ||||
failed=0 | ||||
H=$PWD | ||||
|
r362 | function run_one | ||
{ | ||||
|
r382 | export TZ=GMT | ||
|
r331 | D=`mktemp -d` | ||
if [ "$D" == "" ] ; then | ||||
echo mktemp failed! | ||||
fi | ||||
cd $D | ||||
fail=0 | ||||
|
r362 | |||
|
r331 | if ! $H/$f > .out 2>&1 ; then | ||
echo $f failed with error code $? | ||||
fail=1 | ||||
fi | ||||
|
r362 | |||
|
r331 | if [ -s .out -a ! -r $H/$f.out ] ; then | ||
echo $f generated unexpected output: | ||||
cat .out | ||||
cp .out $H/$f.err | ||||
fail=1 | ||||
|
r362 | elif [ -r $H/$f.out ] && ! diff -u $H/$f.out .out > /dev/null ; then | ||
|
r331 | echo $f output changed: | ||
diff -u $H/$f.out .out && true | ||||
cp .out $H/$f.err | ||||
|
r341 | fail=1 | ||
|
r331 | fi | ||
cd $H | ||||
rm -r $D | ||||
|
r362 | return $fail | ||
} | ||||
|
r331 | |||
|
r362 | 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 | ||||
|
r331 | tests=$[$tests + 1] | ||
done | ||||
echo | ||||
echo Ran $tests tests, $failed failed | ||||
if [ $failed -gt 0 ] ; then | ||||
exit 1 | ||||
fi | ||||