#!/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
X386)
	# After downloading the Native Client binary distribution,
	# copy build/native_client/scons-out/opt-*/obj/src/trusted/service_runtime/sel_ldr
	# into your path as "nacl"
	export A=8
	export E=nacl
	;;
*)
	echo 1>&2 run: unsupported '$GOARCH'
	exit 1
esac

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

failed=0

export PATH=/bin:/usr/bin:/usr/local/bin:${GOBIN:-$HOME/bin}:$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

for i in $(cat nacl-pass.txt)
do
	export F=$(basename $i .go)
	dir=$(dirname $i)
	export D=$dir
	sed '/^\/\//!q; s|//||g; s|./\$A.out|$E &|' $i >$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 | # 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
		/RUNFILE/ s/line 1: *[0-9][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
0)
	echo PASS
	;;
1)
	echo FAIL
esac
rm  -f $RUNFILE $TMP1FILE $TMP2FILE *.$A $A.out

exit $failed
