| #!/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}" |
| push_goroot ${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} |
| done |