| #!/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 |
| |
| eval $(gomake --no-print-directory -f ../../src/Make.inc go-env) |
| |
| if [ -z "$O" ]; then |
| echo 'missing $O - maybe no Make.$GOARCH?' 1>&2 |
| exit 1 |
| fi |
| |
| rm -f *.$O |
| |
| if [ "$GOOS" = "windows" ];then |
| $GC -o file.$O file_windows.go |
| else |
| $GC file.go |
| fi |
| |
| defer_panic_recover=" |
| defer.go |
| defer2.go |
| " |
| |
| effective_go=" |
| eff_bytesize.go |
| eff_qr.go |
| eff_sequence.go |
| " |
| |
| error_handling=" |
| error.go |
| error2.go |
| error3.go |
| error4.go |
| " |
| |
| go_tutorial=" |
| cat.go |
| cat_rot13.go |
| echo.go |
| helloworld.go |
| helloworld3.go |
| print.go |
| print_string.go |
| server.go |
| server1.go |
| sieve.go |
| sieve1.go |
| sort.go |
| sortmain.go |
| strings.go |
| sum.go |
| " |
| |
| for i in \ |
| $defer_panic_recover \ |
| $effective_go \ |
| $error_handling \ |
| $go_tutorial \ |
| slices.go \ |
| go1.go \ |
| ; do |
| $GC $i |
| done |
| |
| # Write to temporary file to avoid mingw bash bug. |
| TMPFILE="/tmp/gotest3.$USER" |
| |
| function testit { |
| $LD $1.$O |
| ./$O.out $2 2>&1 >"$TMPFILE" || true |
| x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes |
| if [ "$x" != "$3" ] |
| then |
| echo $1 failed: '"'$x'"' is not '"'$3'"' |
| fi |
| } |
| |
| function testitpipe { |
| $LD $1.$O |
| ./$O.out | $2 2>&1 >"$TMPFILE" || true |
| x=$(echo $(cat "$TMPFILE")) # extra echo canonicalizes |
| if [ "$x" != "$3" ] |
| then |
| echo $1 failed: '"'$x'"' is not '"'$3'"' |
| fi |
| } |
| |
| |
| testit helloworld "" "Hello, world; or Καλημέρα κόσμε; or こんにちは 世界" |
| testit helloworld3 "" "hello, world can't open file; err=no such file or directory" |
| testit echo "hello, world" "hello, world" |
| testit sum "" "6" |
| testit strings "" "" |
| 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." |
| |
| alphabet=abcdefghijklmnopqrstuvwxyz |
| rot13=nopqrstuvwxyzabcdefghijklm |
| echo $alphabet | testit cat "" $alphabet |
| echo $alphabet | testit cat_rot13 "--rot13" $rot13 |
| echo $rot13 | testit cat_rot13 "--rot13" $alphabet |
| |
| testit sortmain "" "Sunday Monday Tuesday Wednesday Thursday Friday Saturday" |
| |
| testit print "" "18446744073709551615 -1 18446744073709551615 {77 Sunset Strip} [1 2 3 4] 18446744073709551615 {77 Sunset Strip} [1 2 3 4] 18446744073709551615 {77 Sunset Strip} [1 2 3 4]" |
| testit print_string "" "77 Sunset Strip" |
| |
| testitpipe sieve "sed 10q" "2 3 5 7 11 13 17 19 23 29" |
| testitpipe sieve "sed 10q" "2 3 5 7 11 13 17 19 23 29" |
| |
| # server hangs; don't run it, just compile it |
| $GC server.go |
| testit server1 "" "" |
| |
| testit eff_bytesize "" "1.00YB 9.09TB" |
| testit eff_sequence "" "[-1 2 6 16 44]" |
| |
| testit go1 "" "Christmas is a holiday: true" |
| |
| rm -f $O.out $O.out.exe *.$O "$TMPFILE" |