#!/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="qemu-arm -cpu cortex-a8 "
	;;
*)
	echo 1>&2 run: unsupported '$GOARCH'
	exit 1
esac

case X"$GOOS" in
Xnacl)
	export E="nacl"
esac

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

failed=0

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

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

true >pass.out >times.out

for dir in . ken chan interface nilptr fixedbugs bugs
do
	echo
	echo '==' $dir'/'
	for i in $(ls $dir/*.go 2>/dev/null)
	do
		export F=$(basename $i .go)
		export D=$dir
		sed '/^\/\//!q' $i | sed 's@//@@; $d' |sed 's|./\$A.out|$E &|' >$RUNFILE
		if ! /usr/bin/time -p sh -c "sh $RUNFILE >$TMP1FILE 2>&1" 2>$TMP2FILE
		then
			echo
			echo "===========" $i
			cat $TMP1FILE
			echo >&2 fail: $i
		elif test -s $TMP1FILE
		then
			echo
			echo "===========" $i
			cat $TMP1FILE
		elif [ $dir = "bugs" ]
		then
			echo $i succeeded with no output.
		else
			echo $i >>pass.out
		fi
		echo $(awk 'NR==1{print $2}' $TMP2FILE) $D/$F >>times.out
	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/
		s/PC=0x[0-9a-f]*/PC=xxx/
		/^Trace\/breakpoint trap/d
		/^Trace\/BPT trap/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

case $failed in
1)
	echo FAIL
esac
rm  -f $RUNFILE $TMP1FILE $TMP2FILE *.$A $A.out
diffmsg=""
if ! diff run.out golden.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

exit $failed
