| #!/usr/bin/env bash |
| # 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. |
| |
| set -e |
| |
| goos=$(go env GOOS) |
| |
| defer_panic_recover=" |
| defer |
| defer2 |
| " |
| |
| effective_go=" |
| eff_bytesize |
| eff_qr |
| eff_sequence |
| eff_unused2 |
| " |
| |
| error_handling=" |
| error |
| error2 |
| error3 |
| error4 |
| " |
| |
| law_of_reflection=" |
| interface |
| interface2 |
| " |
| |
| c_go_cgo=" |
| cgo1 |
| cgo2 |
| cgo3 |
| cgo4 |
| " |
| # cgo1 and cgo2 don't run on freebsd, srandom has a different signature |
| if [ "$goos" == "freebsd" ]; then |
| c_go_cgo="cgo3 cgo4" |
| fi |
| # cgo1 and cgo2 don't run on netbsd, srandom has a different signature |
| # cgo3 and cgo4 don't run on netbsd, since cgo cannot handle stdout correctly |
| if [ "$goos" == "netbsd" ]; then |
| c_go_cgo="" |
| fi |
| # cgo3 and cgo4 don't run on openbsd, since cgo cannot handle stdout correctly |
| if [ "$goos" == "openbsd" ]; then |
| c_go_cgo="cgo1 cgo2" |
| fi |
| if [ "$CGO_ENABLED" != 1 ]; then |
| c_go_cgo="" |
| fi |
| |
| timeout=" |
| timeout1 |
| timeout2 |
| " |
| |
| gobs=" |
| gobs1 |
| gobs2 |
| " |
| |
| json=" |
| json1 |
| json2 |
| json3 |
| json4 |
| json5 |
| " |
| |
| image_package=" |
| image_package1 |
| image_package2 |
| image_package3 |
| image_package4 |
| image_package5 |
| image_package6 |
| " |
| |
| all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection $c_go_cgo $timeout $gobs $json $image_package slices go1) |
| |
| for i in $all; do |
| go build $i.go |
| done |
| |
| # Write to temporary file to avoid mingw bash bug. |
| TMPFILE="${TMPDIR:-/tmp}/gotest3.$USER" |
| |
| function testit { |
| ./$1 >"$TMPFILE" 2>&1 || true |
| x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes |
| if ! echo "$x" | grep "$2" > /dev/null |
| then |
| echo $1 failed: '"'$x'"' is not '"'$2'"' |
| fi |
| } |
| |
| |
| testit defer '^0 3210 2$' |
| 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.$' |
| |
| testit eff_bytesize '^1.00YB 9.09TB$' |
| testit eff_sequence '^\[-1 2 6 16 44\]$' |
| |
| testit go1 '^Christmas is a holiday: true Sleeping for 0.123s.*go1.go already exists$' |
| |
| testit interface2 "^type: float64$" |
| |
| testit json1 "^$" |
| testit json2 "the reciprocal of i is" |
| testit json3 "Age is int 6" |
| testit json4 "^$" |
| |
| testit image_package1 "^X is 2 Y is 1$" |
| testit image_package2 "^3 4 false$" |
| testit image_package3 "^3 4 true$" |
| testit image_package4 "^image.Point{X:2, Y:1}$" |
| testit image_package5 "^{255 0 0 255}$" |
| testit image_package6 "^8 4 true$" |
| |
| rm -f $all "$TMPFILE" |