Files @ r21752:85aa871f9307
Branch filter:

Location: cpp/openttd-patchpack/source/bin/ai/regression/run.sh - annotation

fonsinchen
(svn r26895) -Change: Allow for multiple independent test cases for AI API regression
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10729:809061d9ab58
r10729:809061d9ab58
r21752:85aa871f9307
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10984:92bd8312420b
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r10696:8dfe83e30d01
r21752:85aa871f9307
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r17785:57cc72a3adc7
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r21752:85aa871f9307
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r17785:57cc72a3adc7
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10984:92bd8312420b
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r10696:8dfe83e30d01
r17785:57cc72a3adc7
r17785:57cc72a3adc7
#!/bin/sh

# $Id$

if ! [ -f ai/regression/run.sh ]; then
	echo "Make sure you are in the root of OpenTTD before starting this script."
	exit 1
fi

if [ -f scripts/game_start.scr ]; then
	mv scripts/game_start.scr scripts/game_start.scr.regression
fi

params=""
gdb=""
if [ "$1" != "-r" ]; then
	params="-snull -mnull -vnull:ticks=30000"
fi
if [ "$1" = "-g" ]; then
	gdb="gdb --ex run --args "
fi

if [ -d "ai/regression/tst_$1" ]; then
	tests="ai/regression/tst_$1"
elif [ -d "ai/regression/tst_$2" ]; then
	tests="ai/regression/tst_$2"
else
	tests=ai/regression/tst_*
fi

ret=0
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

if [ -z "$gdb" ]; then
	if [ -z "$res" ]; then
		echo "Regression test passed!"
	else
		echo "Regression test failed! Difference:"
		echo "$res"
		ret=1
	fi
	echo ""
	echo "Regression test done"
fi

if [ -f scripts/game_start.scr.regression ]; then
	mv scripts/game_start.scr.regression scripts/game_start.scr
fi

if [ "$1" != "-k" ]; then
	rm -f tmp.regression
fi

exit $ret