aboutsummaryrefslogtreecommitdiff
path: root/go/test_go
diff options
context:
space:
mode:
Diffstat (limited to 'go/test_go')
-rwxr-xr-xgo/test_go88
1 files changed, 88 insertions, 0 deletions
diff --git a/go/test_go b/go/test_go
new file mode 100755
index 00000000..3740c1b7
--- /dev/null
+++ b/go/test_go
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+# This script runs tests for the Go toolchain on target devices.
+# It can be used for both ChromeOS and Android targets.
+#
+# Many of the test drivers that come from upstream do not support
+# cross-compiling and running the tests remotely. The patches in
+# the ./patch/ directory must be applied to the upstream sources
+# to add this support.
+#
+# Usage: test_go [-v] [-vv] [-full] <target>...
+# -v: enable verbose test output from compiler tests.
+# -v: enable verbose test output from standard library tests.
+# -full: run all standard library tests (without the -short flag).
+
+verbose_run_test=""
+verbose_go_test=""
+testflags="-short"
+while [[ "$1" == -* ]]
+do
+ case "$1" in
+ -v) verbose_run_test="-v" ;;
+ -vv) verbose_go_test="-v" ;;
+ -full) testflags="-timeout=2h" ;;
+ *) echo "unrecognized flag: $1" ;;
+ esac
+ shift
+done
+
+go_local build -o runtest test/run.go
+runtest="${PWD}/runtest"
+
+function run_test()
+ {
+ GOOS="$(go_${target} env GOOS)" GOARCH="$(go_${target} env GOARCH)" ${runtest} -n=1 ${verbose_run_test} -show_skips -summary -target="${target}" "$@"
+ }
+
+function go_test()
+ {
+ go_${target} test -p=1 ${verbose_go_test} -exec="go_${target}_exec" ${testflags} "$@"
+ }
+
+function go_test_target()
+ {
+ go_local test -p=1 ${verbose_go_test} ${testflags} "$@" -target="${target}"
+ }
+
+for target in "$@"
+do
+ echo
+ echo "## ${target}"
+
+ echo
+ echo "# test"
+ (cd test && run_test)
+
+ echo
+ echo "# std"
+ go_test std
+
+ echo
+ echo "# GOMAXPROCS=2 -cpu=1,2,4 runtime"
+ GOMAXPROCS=2 go_test -cpu=1,2,4 runtime
+
+ echo
+ echo "# -cpu=10 sync"
+ go_test -cpu=10 sync
+
+ echo
+ echo "# runtime crypto/x509 -target=${target}"
+ go_test_target runtime crypto/x509
+
+ echo
+ echo "# misc/cgo/{stdio,life}"
+ run_test misc/cgo/{stdio,life}
+
+ echo
+ echo "# misc/cgo/{test,testtls,nocgo}"
+ GOTRACEBACK=2 go_test ./misc/cgo/{test,testtls,nocgo}
+
+ echo
+ echo "# misc/cgo/testcshared"
+ (cd misc/cgo/testcshared && target="${target}" ./test.bash)
+
+ echo
+ echo "# misc/cgo/testsigfwd"
+ (cd misc/cgo/testsigfwd && go_${target} run -exec="go_${target}_exec" main.go)
+done