72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 -n "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
 | 
						|
		res="`diff -ub $tst/result.txt tmp.regression`"
 | 
						|
		if [ -z "$res" ]; then
 | 
						|
			echo "passed!"
 | 
						|
		else
 | 
						|
			echo "failed! Difference:"
 | 
						|
			echo "$res"
 | 
						|
			ret=1
 | 
						|
		fi
 | 
						|
	fi
 | 
						|
 | 
						|
	rm $tst/info.nut
 | 
						|
done
 | 
						|
 | 
						|
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
 |