Russ Cox | 43bcf47 | 2009-11-18 09:11:17 -0800 | [diff] [blame] | 1 | #!/usr/bin/env bash |
Rob Pike | f7a506b | 2008-09-17 12:14:52 -0700 | [diff] [blame] | 2 | # 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 | |
Russ Cox | 00f9f0c | 2010-03-30 10:34:57 -0700 | [diff] [blame] | 6 | set -e |
| 7 | |
Andrew Gerrand | d2d7de9 | 2012-03-13 11:55:16 +1100 | [diff] [blame] | 8 | goos=$(go env GOOS) |
| 9 | |
Andrew Gerrand | 49d82b4 | 2011-12-12 13:15:29 +1100 | [diff] [blame] | 10 | defer_panic_recover=" |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 11 | defer |
| 12 | defer2 |
Andrew Gerrand | 49d82b4 | 2011-12-12 13:15:29 +1100 | [diff] [blame] | 13 | " |
| 14 | |
| 15 | effective_go=" |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 16 | eff_bytesize |
| 17 | eff_qr |
| 18 | eff_sequence |
Rob Pike | 9e329a0 | 2013-03-08 10:41:20 -0800 | [diff] [blame] | 19 | eff_unused2 |
Andrew Gerrand | 49d82b4 | 2011-12-12 13:15:29 +1100 | [diff] [blame] | 20 | " |
| 21 | |
Andrew Gerrand | c400a0b | 2011-12-13 09:44:06 +1100 | [diff] [blame] | 22 | error_handling=" |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 23 | error |
| 24 | error2 |
| 25 | error3 |
| 26 | error4 |
Andrew Gerrand | c400a0b | 2011-12-13 09:44:06 +1100 | [diff] [blame] | 27 | " |
| 28 | |
Shenghou Ma | efbd79c | 2012-03-07 08:05:10 +1100 | [diff] [blame] | 29 | law_of_reflection=" |
| 30 | interface |
| 31 | interface2 |
| 32 | " |
| 33 | |
Francisco Souza | 60b98d6 | 2012-03-13 09:07:37 +1100 | [diff] [blame] | 34 | c_go_cgo=" |
Andrew Gerrand | d2d7de9 | 2012-03-13 11:55:16 +1100 | [diff] [blame] | 35 | cgo1 |
| 36 | cgo2 |
| 37 | cgo3 |
| 38 | cgo4 |
Francisco Souza | 60b98d6 | 2012-03-13 09:07:37 +1100 | [diff] [blame] | 39 | " |
Andrew Gerrand | d2d7de9 | 2012-03-13 11:55:16 +1100 | [diff] [blame] | 40 | # cgo1 and cgo2 don't run on freebsd, srandom has a different signature |
| 41 | if [ "$goos" == "freebsd" ]; then |
| 42 | c_go_cgo="cgo3 cgo4" |
| 43 | fi |
Joel Sing | 5131dee | 2012-06-05 01:43:04 +1000 | [diff] [blame] | 44 | # cgo1 and cgo2 don't run on netbsd, srandom has a different signature |
| 45 | # cgo3 and cgo4 don't run on netbsd, since cgo cannot handle stdout correctly |
| 46 | if [ "$goos" == "netbsd" ]; then |
| 47 | c_go_cgo="" |
| 48 | fi |
Joel Sing | 708db79 | 2012-12-21 01:43:19 +1100 | [diff] [blame] | 49 | # cgo3 and cgo4 don't run on openbsd, since cgo cannot handle stdout correctly |
| 50 | if [ "$goos" == "openbsd" ]; then |
| 51 | c_go_cgo="cgo1 cgo2" |
| 52 | fi |
Ian Lance Taylor | db3374e | 2013-10-11 08:55:13 -0700 | [diff] [blame] | 53 | if [ "$CGO_ENABLED" != 1 ]; then |
| 54 | c_go_cgo="" |
| 55 | fi |
Francisco Souza | 60b98d6 | 2012-03-13 09:07:37 +1100 | [diff] [blame] | 56 | |
Francisco Souza | 5659826 | 2012-03-14 13:03:11 +1100 | [diff] [blame] | 57 | timeout=" |
| 58 | timeout1 |
| 59 | timeout2 |
| 60 | " |
| 61 | |
Francisco Souza | 9e03dcb | 2012-03-16 08:21:13 +1100 | [diff] [blame] | 62 | gobs=" |
| 63 | gobs1 |
| 64 | gobs2 |
| 65 | " |
| 66 | |
Francisco Souza | 289a357 | 2012-03-22 18:25:40 +1100 | [diff] [blame] | 67 | json=" |
| 68 | json1 |
| 69 | json2 |
| 70 | json3 |
| 71 | json4 |
| 72 | json5 |
| 73 | " |
| 74 | |
Francisco Souza | 18f1a71 | 2012-03-28 14:20:51 +1100 | [diff] [blame] | 75 | image_package=" |
| 76 | image_package1 |
| 77 | image_package2 |
| 78 | image_package3 |
| 79 | image_package4 |
| 80 | image_package5 |
| 81 | image_package6 |
| 82 | " |
| 83 | |
| 84 | all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection $c_go_cgo $timeout $gobs $json $image_package slices go1) |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 85 | |
| 86 | for i in $all; do |
| 87 | go build $i.go |
Rob Pike | f7a506b | 2008-09-17 12:14:52 -0700 | [diff] [blame] | 88 | done |
| 89 | |
Jaroslavas Počepko | ff866c4 | 2011-10-14 20:37:07 +0100 | [diff] [blame] | 90 | # Write to temporary file to avoid mingw bash bug. |
Shenghou Ma | efbd79c | 2012-03-07 08:05:10 +1100 | [diff] [blame] | 91 | TMPFILE="${TMPDIR:-/tmp}/gotest3.$USER" |
Jaroslavas Počepko | ff866c4 | 2011-10-14 20:37:07 +0100 | [diff] [blame] | 92 | |
Rob Pike | f7a506b | 2008-09-17 12:14:52 -0700 | [diff] [blame] | 93 | function testit { |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 94 | ./$1 >"$TMPFILE" 2>&1 || true |
Jaroslavas Počepko | ff866c4 | 2011-10-14 20:37:07 +0100 | [diff] [blame] | 95 | x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 96 | if ! echo "$x" | grep "$2" > /dev/null |
Rob Pike | f7a506b | 2008-09-17 12:14:52 -0700 | [diff] [blame] | 97 | then |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 98 | echo $1 failed: '"'$x'"' is not '"'$2'"' |
Rob Pike | f7a506b | 2008-09-17 12:14:52 -0700 | [diff] [blame] | 99 | fi |
| 100 | } |
| 101 | |
Rob Pike | f7a506b | 2008-09-17 12:14:52 -0700 | [diff] [blame] | 102 | |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 103 | testit defer '^0 3210 2$' |
| 104 | testit defer2 '^Calling g. Printing in g 0 Printing in g 1 Printing in g 2 Printing in g 3 Panicking! Defer in g 3 Defer in g 2 Defer in g 1 Defer in g 0 Recovered in f 4 Returned normally from f.$' |
Rob Pike | f7a506b | 2008-09-17 12:14:52 -0700 | [diff] [blame] | 105 | |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 106 | testit eff_bytesize '^1.00YB 9.09TB$' |
| 107 | testit eff_sequence '^\[-1 2 6 16 44\]$' |
Rob Pike | 18b21c7 | 2011-08-22 22:46:59 +1000 | [diff] [blame] | 108 | |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 109 | testit go1 '^Christmas is a holiday: true Sleeping for 0.123s.*go1.go already exists$' |
Rob Pike | 2fa987b | 2011-12-07 16:11:17 -0800 | [diff] [blame] | 110 | |
Shenghou Ma | efbd79c | 2012-03-07 08:05:10 +1100 | [diff] [blame] | 111 | testit interface2 "^type: float64$" |
Francisco Souza | 18f1a71 | 2012-03-28 14:20:51 +1100 | [diff] [blame] | 112 | |
Francisco Souza | 289a357 | 2012-03-22 18:25:40 +1100 | [diff] [blame] | 113 | testit json1 "^$" |
| 114 | testit json2 "the reciprocal of i is" |
| 115 | testit json3 "Age is int 6" |
| 116 | testit json4 "^$" |
Shenghou Ma | efbd79c | 2012-03-07 08:05:10 +1100 | [diff] [blame] | 117 | |
Francisco Souza | 18f1a71 | 2012-03-28 14:20:51 +1100 | [diff] [blame] | 118 | testit image_package1 "^X is 2 Y is 1$" |
| 119 | testit image_package2 "^3 4 false$" |
| 120 | testit image_package3 "^3 4 true$" |
| 121 | testit image_package4 "^image.Point{X:2, Y:1}$" |
| 122 | testit image_package5 "^{255 0 0 255}$" |
| 123 | testit image_package6 "^8 4 true$" |
| 124 | |
Rob Pike | f5a1dd8 | 2012-03-05 12:49:31 +1100 | [diff] [blame] | 125 | rm -f $all "$TMPFILE" |