summaryrefslogtreecommitdiff
path: root/bin/ai/regression/run.sh
blob: c104852bf2b4a63bede5a9e2ba47d0fec7397416 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh

# $Id$

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

cp ai/regression/regression.nut ai/regression/main.nut
cp ai/regression/regression_info.nut ai/regression/info.nut

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 [ -n "$gdb" ]; then
	$gdb ./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav
else
	./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav -d script=2 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; }' > tmp.regression
fi

ret=0
if [ -z "$gdb" ]; then
	res="`diff -ub ai/regression/regression.txt tmp.regression`"
	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

rm -f ai/regression/main.nut ai/regression/info.nut

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