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 	push_goroot ${target}
     53 
     54 	echo
     55 	echo "# test"
     56 	(cd test && run_test)
     57 
     58 	echo
     59 	echo "# std"
     60 	go_test std
     61 
     62 	echo
     63 	echo "# GOMAXPROCS=2 -cpu=1,2,4 runtime"
     64 	GOMAXPROCS=2 go_test -cpu=1,2,4 runtime
     65 
     66 	echo
     67 	echo "# -cpu=10 sync"
     68 	go_test -cpu=10 sync
     69 
     70 	echo
     71 	echo "# runtime crypto/x509 -target=${target}"
     72 	go_test_target runtime crypto/x509
     73 
     74 	echo
     75 	echo "# misc/cgo/{stdio,life}"
     76 	run_test misc/cgo/{stdio,life}
     77 
     78 	echo
     79 	echo "# misc/cgo/{test,testtls,nocgo}"
     80 	GOTRACEBACK=2 go_test ./misc/cgo/{test,testtls,nocgo}
     81 done
     82