1*760c253cSXin Li#!/bin/bash 2*760c253cSXin Li 3*760c253cSXin Li# This script runs tests for the Go toolchain on target devices. 4*760c253cSXin Li# It can be used for both ChromeOS and Android targets. 5*760c253cSXin Li# 6*760c253cSXin Li# Many of the test drivers that come from upstream do not support 7*760c253cSXin Li# cross-compiling and running the tests remotely. The patches in 8*760c253cSXin Li# the ./patch/ directory must be applied to the upstream sources 9*760c253cSXin Li# to add this support. 10*760c253cSXin Li# 11*760c253cSXin Li# Usage: test_go [-v] [-vv] [-full] <target>... 12*760c253cSXin Li# -v: enable verbose test output from compiler tests. 13*760c253cSXin Li# -v: enable verbose test output from standard library tests. 14*760c253cSXin Li# -full: run all standard library tests (without the -short flag). 15*760c253cSXin Li 16*760c253cSXin Liverbose_run_test="" 17*760c253cSXin Liverbose_go_test="" 18*760c253cSXin Litestflags="-short" 19*760c253cSXin Liwhile [[ "$1" == -* ]] 20*760c253cSXin Lido 21*760c253cSXin Li case "$1" in 22*760c253cSXin Li -v) verbose_run_test="-v" ;; 23*760c253cSXin Li -vv) verbose_go_test="-v" ;; 24*760c253cSXin Li -full) testflags="-timeout=2h" ;; 25*760c253cSXin Li *) echo "unrecognized flag: $1" ;; 26*760c253cSXin Li esac 27*760c253cSXin Li shift 28*760c253cSXin Lidone 29*760c253cSXin Li 30*760c253cSXin Ligo_local build -o runtest test/run.go 31*760c253cSXin Liruntest="${PWD}/runtest" 32*760c253cSXin Li 33*760c253cSXin Lifunction run_test() 34*760c253cSXin Li { 35*760c253cSXin Li GOOS="$(go_${target} env GOOS)" GOARCH="$(go_${target} env GOARCH)" ${runtest} -n=1 ${verbose_run_test} -show_skips -summary -target="${target}" "$@" 36*760c253cSXin Li } 37*760c253cSXin Li 38*760c253cSXin Lifunction go_test() 39*760c253cSXin Li { 40*760c253cSXin Li go_${target} test -p=1 ${verbose_go_test} -exec="go_${target}_exec" ${testflags} "$@" 41*760c253cSXin Li } 42*760c253cSXin Li 43*760c253cSXin Lifunction go_test_target() 44*760c253cSXin Li { 45*760c253cSXin Li go_local test -p=1 ${verbose_go_test} ${testflags} "$@" -target="${target}" 46*760c253cSXin Li } 47*760c253cSXin Li 48*760c253cSXin Lifor target in "$@" 49*760c253cSXin Lido 50*760c253cSXin Li echo 51*760c253cSXin Li echo "## ${target}" 52*760c253cSXin Li push_goroot ${target} 53*760c253cSXin Li 54*760c253cSXin Li echo 55*760c253cSXin Li echo "# test" 56*760c253cSXin Li (cd test && run_test) 57*760c253cSXin Li 58*760c253cSXin Li echo 59*760c253cSXin Li echo "# std" 60*760c253cSXin Li go_test std 61*760c253cSXin Li 62*760c253cSXin Li echo 63*760c253cSXin Li echo "# GOMAXPROCS=2 -cpu=1,2,4 runtime" 64*760c253cSXin Li GOMAXPROCS=2 go_test -cpu=1,2,4 runtime 65*760c253cSXin Li 66*760c253cSXin Li echo 67*760c253cSXin Li echo "# -cpu=10 sync" 68*760c253cSXin Li go_test -cpu=10 sync 69*760c253cSXin Li 70*760c253cSXin Li echo 71*760c253cSXin Li echo "# runtime crypto/x509 -target=${target}" 72*760c253cSXin Li go_test_target runtime crypto/x509 73*760c253cSXin Li 74*760c253cSXin Li echo 75*760c253cSXin Li echo "# misc/cgo/{stdio,life}" 76*760c253cSXin Li run_test misc/cgo/{stdio,life} 77*760c253cSXin Li 78*760c253cSXin Li echo 79*760c253cSXin Li echo "# misc/cgo/{test,testtls,nocgo}" 80*760c253cSXin Li GOTRACEBACK=2 go_test ./misc/cgo/{test,testtls,nocgo} 81*760c253cSXin Lidone 82