#!/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.

case X"$GOARCH" in
Xamd64)
	export A=6
	;;
*)
	export A=6
	echo 1>&2 run: assuming amd64
	exit 1
esac

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

failed=0

PATH=/bin:/usr/bin:$HOME/bin:`pwd`

# don't use $$ in file names to avoid spurious diffs
RUNFILE=/tmp/gorun-$USER
TMP1FILE=/tmp/gotest1-$USER
TMP2FILE=/tmp/gotest2-$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 dir in . ken chan bugs fixedbugs
do
	for i in $dir/*.go
	do
		export F=$(basename $i .go)
		export D=$dir
		sed -n '1,/[^/]/p' $i | sed 's@//@@; $d' > $RUNFILE
		if ! sh $RUNFILE >$TMP1FILE 2>$TMP2FILE
		then
			echo
			echo "===========" $i
			cat $TMP1FILE
			cat $TMP2FILE
			echo >&2 fail: $i
		elif test -s $TMP1FILE || test -s $TMP2FILE
		then
			echo
			echo "===========" $i
			cat $TMP1FILE
			cat $TMP2FILE
		elif [ $dir = "bugs" ]
		then
			echo $i succeeded with no output.
		fi
	done
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
		/RUNFILE/ s/line 1: *[0-9]*/line 1: PID/
		/^\$RUNFILE: line 1: PID Trace\/breakpoint trap/d' > run.out

case $failed in
1)
	echo FAIL
esac
rm  -f $RUNFILE $TMP1FILE $TMP2FILE *.6 6.out
if ! diff run.out golden.out
then
	failed=1
fi

echo 2>&1 $(grep -c '^BUG' run.out) tests are behaving incorrectly

exit $failed
