xref: /aosp_15_r20/external/toolchain-utils/go/test_go (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
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