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