#!/bin/sh
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

export E=""
case X"$GOARCH" in
Xamd64)
	export A=6
	;;
X386)
	export A=8
	;;
Xarm)
	export A=5
	export E="${GORUN:-qemu-arm -cpu cortex-a8}"
	;;
*)
	echo 1>&2 run: unsupported '$GOARCH'
	exit 1
esac

export G=${A}g
export L=${A}l
export GOTRACEBACK=0

PATH=/bin:/usr/bin:/usr/local/bin:${GOBIN:-$HOME/bin}:`pwd`

RUNFILE=/tmp/gorun-$$-$USER
TMP1FILE=/tmp/gotest1-$$-$USER
TMP2FILE=/tmp/gotest2-$$-$USER
FAILEDFILE=/tmp/gotest3-$$-$USER

# don't run the machine out of memory: limit individual processes to 4GB.
# on thresher, 3GB suffices to run the tests; with 2GB, peano fails.
ulimit -v 4000000


for i in $(cat arm-pass.txt | sed 's/#.*//')
do
	export F=$(basename $i .go)
	dir=$(dirname $i)
	export D=$dir
	sed '/^\/\//!q' $i | sed 's@//@@; $d' |sed 's|./\$A.out|$E &|' >$RUNFILE
	if ! sh $RUNFILE >$TMP1FILE 2>&1
	then
		echo
		echo "===========" $i
		cat $TMP1FILE
		echo >&2 fail: $i
		touch $FAILEDFILE
	elif test -s $TMP1FILE
	then
		echo
		echo "===========" $i
		cat $TMP1FILE
	elif [ $dir = "bugs" ]
	then
		echo $i succeeded with no output.
	fi
done | # clean up some stack noise
	egrep -v '^(r[0-9a-z]+|[cfg]s)  +0x'  |
	sed '/tmp.*Bus error/s/.*Bus/Bus/; /tmp.*Trace.BPT/s/.*Trace/Trace/
		s!'$RUNFILE'!$RUNFILE!g
		s/ PC=0x[0-9a-f]*/ PC=xxx/
		s/^pc: 0x[0-9a-f]*/pc: xxx/
		/^Trace\/breakpoint trap/d
		/^Trace\/BPT trap/d
		s!'$GOROOT'!$GOROOT!g
		/Segmentation fault/d
		/RUNFILE/ s/line 1: *[0-9]*/line 1: PID/
		/^\$RUNFILE: line 1: PID Trace\/breakpoint trap/d
		/^qemu: uncaught target signal 11 (Segmentation fault) - exiting/d' > run.out

failed=0
rm  -f $RUNFILE $TMP1FILE $TMP2FILE *.$A $A.out
diffmsg=""
if ! diff run.out golden-arm.out
then
	diffmsg="; test output differs"
	failed=1
fi

notinbugs=$(sed '/^== bugs/q' run.out | grep -c '^BUG')
inbugs=$(sed '1,/^== bugs/d' run.out | grep -c '^BUG')

echo 2>&1 $inbugs known bugs';' $notinbugs unexpected bugs$diffmsg

if [ "$failed" != "0" ]; then
	echo FAILED
fi

exit $failed
