blob: 8b3bc4149c7390405849eff3cf1336a8722a7f25 [file] [log] [blame]
Rob Pike83c9d972009-08-17 14:16:25 -07001#!/bin/sh
Rob Pike27fb2ab2008-06-06 12:57:00 -07002# Copyright 2009 The Go Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style
4# license that can be found in the LICENSE file.
5
Kai Backman1c71ab12009-09-18 19:09:12 -07006export E=""
Rob Pike27fb2ab2008-06-06 12:57:00 -07007case X"$GOARCH" in
8Xamd64)
9 export A=6
10 ;;
Russ Coxead9f8b2009-05-31 12:35:11 -070011X386)
12 export A=8
13 ;;
14Xarm)
15 export A=5
Kai Backman1c71ab12009-09-18 19:09:12 -070016 export E="qemu-arm -cpu cortex-a8 "
Russ Coxead9f8b2009-05-31 12:35:11 -070017 ;;
Rob Pike27fb2ab2008-06-06 12:57:00 -070018*)
Russ Coxead9f8b2009-05-31 12:35:11 -070019 echo 1>&2 run: unsupported '$GOARCH'
Rob Pike27fb2ab2008-06-06 12:57:00 -070020 exit 1
21esac
22
Russ Cox567673f2009-09-22 16:56:28 -070023case X"$GOOS" in
24Xnacl)
25 export E="nacl"
26esac
27
Rob Pike27fb2ab2008-06-06 12:57:00 -070028export G=${A}g
29export L=${A}l
Russ Coxfb40f882008-09-22 13:47:53 -070030export GOTRACEBACK=0
Rob Pike27fb2ab2008-06-06 12:57:00 -070031
32failed=0
33
Kai Backman1c71ab12009-09-18 19:09:12 -070034PATH=/bin:/usr/bin:/usr/local/bin:${GOBIN:-$HOME/bin}:`pwd`
Ian Lance Taylor66b261a2008-09-19 14:39:49 -070035
Russ Cox410ba582009-06-17 13:21:01 -070036RUNFILE=/tmp/gorun-$$-$USER
37TMP1FILE=/tmp/gotest1-$$-$USER
38TMP2FILE=/tmp/gotest2-$$-$USER
Rob Pike3963fe32008-08-08 10:57:23 -070039
Russ Cox46eb0f72008-09-08 15:22:45 -070040# don't run the machine out of memory: limit individual processes to 4GB.
41# on thresher, 3GB suffices to run the tests; with 2GB, peano fails.
42ulimit -v 4000000
43
Russ Coxebd27d62009-10-09 11:18:32 -070044true >pass.out >times.out
Russ Cox567673f2009-09-22 16:56:28 -070045
Russ Cox1ff58972009-07-29 15:11:19 -070046for dir in . ken chan interface fixedbugs bugs
Rob Pike27fb2ab2008-06-06 12:57:00 -070047do
Russ Cox1ff58972009-07-29 15:11:19 -070048 echo
49 echo '==' $dir'/'
Rob Pikeab34d152008-06-06 14:27:34 -070050 for i in $dir/*.go
51 do
Rob Pikeab34d152008-06-06 14:27:34 -070052 export F=$(basename $i .go)
53 export D=$dir
Russ Cox567673f2009-09-22 16:56:28 -070054 sed '/^\/\//!q' $i | sed 's@//@@; $d' |sed 's|./\$A.out|$E &|' >$RUNFILE
Rob Pikef6d67c92009-10-13 22:48:03 -070055 if ! /usr/bin/time -p sh -c "sh $RUNFILE >$TMP1FILE 2>&1" 2>$TMP2FILE
Rob Pikeab34d152008-06-06 14:27:34 -070056 then
Rob Pike3963fe32008-08-08 10:57:23 -070057 echo
58 echo "===========" $i
59 cat $TMP1FILE
Rob Pikeab34d152008-06-06 14:27:34 -070060 echo >&2 fail: $i
Rob Pikef6d67c92009-10-13 22:48:03 -070061 elif test -s $TMP1FILE
Rob Pike3963fe32008-08-08 10:57:23 -070062 then
63 echo
64 echo "===========" $i
65 cat $TMP1FILE
Russ Cox869c3f42008-11-17 12:44:22 -080066 elif [ $dir = "bugs" ]
67 then
68 echo $i succeeded with no output.
Russ Cox567673f2009-09-22 16:56:28 -070069 else
70 echo $i >>pass.out
Rob Pikeab34d152008-06-06 14:27:34 -070071 fi
Rob Pikef6d67c92009-10-13 22:48:03 -070072 echo $(awk 'NR==1{print $2}' $TMP2FILE) $D/$F >>times.out
Rob Pikeab34d152008-06-06 14:27:34 -070073 done
Rob Pikebf14ef62008-07-07 10:03:10 -070074done | # clean up some stack noise
Rob Pike3963fe32008-08-08 10:57:23 -070075 egrep -v '^(r[0-9a-z]+|[cfg]s) +0x' |
Russ Cox32556ef2008-09-02 14:26:59 -070076 sed '/tmp.*Bus error/s/.*Bus/Bus/; /tmp.*Trace.BPT/s/.*Trace/Trace/
77 s!'$RUNFILE'!$RUNFILE!g
Russ Coxfb40f882008-09-22 13:47:53 -070078 s/ PC=0x[0-9a-f]*/ PC=xxx/
79 s/^pc: 0x[0-9a-f]*/pc: xxx/
80 /^Trace\/breakpoint trap/d
Russ Coxb014be72009-06-05 10:59:37 -070081 /^Trace\/BPT trap/d
Ian Lance Taylor07c54422008-11-11 10:01:51 -080082 /RUNFILE/ s/line 1: *[0-9]*/line 1: PID/
Kai Backman1c71ab12009-09-18 19:09:12 -070083 /^\$RUNFILE: line 1: PID Trace\/breakpoint trap/d
84 /^qemu: uncaught target signal 11 (Segmentation fault) - exiting/d' > run.out
Rob Pike126150d2008-06-06 13:28:03 -070085
Rob Pike27fb2ab2008-06-06 12:57:00 -070086case $failed in
871)
88 echo FAIL
89esac
Rob Pikef6d67c92009-10-13 22:48:03 -070090rm -f $RUNFILE $TMP1FILE $TMP2FILE *.$A $A.out
Russ Cox3314f8c2009-07-29 15:30:54 -070091diffmsg=""
Rob Pike27fb2ab2008-06-06 12:57:00 -070092if ! diff run.out golden.out
93then
Russ Cox3314f8c2009-07-29 15:30:54 -070094 diffmsg="; test output differs"
Rob Pike27fb2ab2008-06-06 12:57:00 -070095 failed=1
96fi
Rob Pike17ee7812008-06-06 13:38:16 -070097
Russ Cox1ff58972009-07-29 15:11:19 -070098notinbugs=$(sed '/^== bugs/q' run.out | grep -c '^BUG')
99inbugs=$(sed '1,/^== bugs/d' run.out | grep -c '^BUG')
100
Russ Cox3314f8c2009-07-29 15:30:54 -0700101echo 2>&1 $inbugs known bugs';' $notinbugs unexpected bugs$diffmsg
Rob Pike17ee7812008-06-06 13:38:16 -0700102
Rob Pike27fb2ab2008-06-06 12:57:00 -0700103exit $failed