| #!/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 |
| then |
| echo |
| echo "===========" $i |
| cat $TMP1FILE |
| cat $TMP2FILE |
| 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/' > 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 |