mirror of
https://github.com/golang/go
synced 2024-11-23 15:30:05 -07:00
db3374e24d
R=golang-dev, jsing, r CC=golang-dev https://golang.org/cl/14523056
126 lines
2.4 KiB
Bash
Executable File
126 lines
2.4 KiB
Bash
Executable File
#!/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"
|