2009-01-12 18:11:45 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
2009-01-13 17:30:24 +01:00
|
|
|
# $Id$
|
|
|
|
|
2014-09-21 18:41:03 +02:00
|
|
|
if ! [ -f ai/regression/run.sh ]; then
|
2009-01-12 18:11:45 +01:00
|
|
|
echo "Make sure you are in the root of OpenTTD before starting this script."
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f scripts/game_start.scr ]; then
|
2009-02-03 18:33:43 +01:00
|
|
|
mv scripts/game_start.scr scripts/game_start.scr.regression
|
2009-01-12 18:11:45 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
params=""
|
|
|
|
gdb=""
|
|
|
|
if [ "$1" != "-r" ]; then
|
|
|
|
params="-snull -mnull -vnull:ticks=30000"
|
|
|
|
fi
|
|
|
|
if [ "$1" = "-g" ]; then
|
|
|
|
gdb="gdb --ex run --args "
|
|
|
|
fi
|
2014-09-21 18:41:03 +02:00
|
|
|
|
|
|
|
if [ -d "ai/regression/tst_$1" ]; then
|
|
|
|
tests="ai/regression/tst_$1"
|
|
|
|
elif [ -d "ai/regression/tst_$2" ]; then
|
|
|
|
tests="ai/regression/tst_$2"
|
2009-01-12 18:11:45 +01:00
|
|
|
else
|
2014-09-21 18:41:03 +02:00
|
|
|
tests=ai/regression/tst_*
|
2009-01-12 18:11:45 +01:00
|
|
|
fi
|
|
|
|
|
2011-06-13 12:09:59 +02:00
|
|
|
ret=0
|
2014-09-21 18:41:03 +02:00
|
|
|
for tst in $tests; do
|
|
|
|
echo "running $tst"
|
|
|
|
|
|
|
|
# Make sure that only one info.nut is present for each test run. Otherwise openttd gets confused.
|
|
|
|
cp ai/regression/regression_info.nut $tst/info.nut
|
|
|
|
|
|
|
|
sav=$tst/test.sav
|
|
|
|
if ! [ -f $sav ]; then
|
|
|
|
sav=ai/regression/empty.sav
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "$gdb" ]; then
|
|
|
|
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g $sav
|
|
|
|
else
|
|
|
|
./openttd -x -c ai/regression/regression.cfg $params -g $sav -d script=2 -d misc=9 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)(x0)?", "0x00000000", $0); gsub("^dbg: \\[script\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' | grep -v '^dbg: \[.*\]' > tmp.regression
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$gdb" ]; then
|
|
|
|
# Ugly newline insertion, but it says /bin/sh above ...
|
|
|
|
res="$res
|
|
|
|
`diff -ub $tst/result.txt tmp.regression`"
|
|
|
|
fi
|
|
|
|
|
|
|
|
rm $tst/info.nut
|
|
|
|
done
|
|
|
|
|
2009-01-12 18:11:45 +01:00
|
|
|
if [ -z "$gdb" ]; then
|
|
|
|
if [ -z "$res" ]; then
|
|
|
|
echo "Regression test passed!"
|
|
|
|
else
|
|
|
|
echo "Regression test failed! Difference:"
|
|
|
|
echo "$res"
|
2011-06-13 12:09:59 +02:00
|
|
|
ret=1
|
2009-01-12 18:11:45 +01:00
|
|
|
fi
|
|
|
|
echo ""
|
|
|
|
echo "Regression test done"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -f scripts/game_start.scr.regression ]; then
|
2009-02-03 18:33:43 +01:00
|
|
|
mv scripts/game_start.scr.regression scripts/game_start.scr
|
2009-01-12 18:11:45 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$1" != "-k" ]; then
|
|
|
|
rm -f tmp.regression
|
|
|
|
fi
|
2011-06-13 12:09:59 +02:00
|
|
|
|
|
|
|
exit $ret
|