1
0
mirror of https://github.com/golang/go synced 2024-11-23 19:30:05 -07:00

cmd/dist: use GO_TEST_SHORT value more consistently

There were two places where the -short flag was added in order to
speed up tests when run in short mode, in CL 178399 and CL 177417.

It appears viable to re-use the GO_TEST_SHORT value so that -short
flag is not used when the tests are executed on a longtest builder,
where it is not a goal to skip slow tests for improved performance.

Do so, in order to make the testing configurations simpler and more
predictable.

Factor out the flag name out of the string returned by short, so that
it can be used in context of 'go test' which can accept a -short flag,
and a test binary which requires the use of a longer -test.short flag.

For #39054.
For #29252.

Change-Id: I52dfbef73cc8307735c52e2ebaa609305fb05933
Reviewed-on: https://go-review.googlesource.com/c/go/+/233898
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Dmitri Shuralyov 2020-05-13 13:57:36 -04:00
parent b58d297416
commit 20b4987d3e

24
src/cmd/dist/test.go vendored
View File

@ -241,13 +241,15 @@ func (t *tester) shouldRunTest(name string) bool {
return false
}
// short returns a -short flag to pass to 'go test'.
// It returns "-short", unless the environment variable
// short returns a -short flag value to use with 'go test'
// or a test binary for tests intended to run in short mode.
// It returns "true", unless the environment variable
// GO_TEST_SHORT is set to a non-empty, false-ish string.
//
// This environment variable is meant to be an internal
// detail between the Go build system and cmd/dist
// and is not intended for use by users.
// detail between the Go build system and cmd/dist for
// the purpose of longtest builders, and is not intended
// for use by users. See golang.org/issue/12508.
func short() string {
if v := os.Getenv("GO_TEST_SHORT"); v != "" {
short, err := strconv.ParseBool(v)
@ -255,10 +257,10 @@ func short() string {
fatalf("invalid GO_TEST_SHORT %q: %v", v, err)
}
if !short {
return "-short=false"
return "false"
}
}
return "-short"
return "true"
}
// goTest returns the beginning of the go test command line.
@ -266,7 +268,7 @@ func short() string {
// defaults as later arguments in the command line.
func (t *tester) goTest() []string {
return []string{
"go", "test", short(), "-count=1", t.tags(), t.runFlag(""),
"go", "test", "-short=" + short(), "-count=1", t.tags(), t.runFlag(""),
}
}
@ -335,7 +337,7 @@ func (t *tester) registerStdTest(pkg string) {
}
args := []string{
"test",
short(),
"-short=" + short(),
t.tags(),
t.timeout(timeoutSec),
"-gcflags=all=" + gogcflags,
@ -373,7 +375,7 @@ func (t *tester) registerRaceBenchTest(pkg string) {
ranGoBench = true
args := []string{
"test",
short(),
"-short=" + short(),
"-race",
t.timeout(1200), // longer timeout for race with benchmarks
"-run=^$", // nothing. only benchmarks.
@ -1069,7 +1071,7 @@ func (t *tester) runHostTest(dir, pkg string) error {
if err := cmd.Run(); err != nil {
return err
}
return t.dirCmd(dir, f.Name(), "-test.short").Run()
return t.dirCmd(dir, f.Name(), "-test.short="+short()).Run()
}
func (t *tester) cgoTest(dt *distTest) error {
@ -1570,7 +1572,7 @@ func (t *tester) prebuiltGoPackageTestBinary() string {
func (t *tester) runPrecompiledStdTest(timeout time.Duration) error {
bin := t.prebuiltGoPackageTestBinary()
fmt.Fprintf(os.Stderr, "# %s: using pre-built %s...\n", stdMatches[0], bin)
cmd := exec.Command(bin, "-test.short", "-test.timeout="+timeout.String())
cmd := exec.Command(bin, "-test.short="+short(), "-test.timeout="+timeout.String())
cmd.Dir = filepath.Dir(bin)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr