]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: fix computation of test timeout
authorBrad Fitzpatrick <bradfitz@golang.org>
Fri, 4 May 2018 05:32:01 +0000 (05:32 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 4 May 2018 17:01:04 +0000 (17:01 +0000)
When dist test was updated to run "go test" with multiple package
arguments at once, merging the logical test units into one execution,
the hack to give cmd/go twice as much time wasn't updated.

What was happening (even in the all.bash case) was that we were
merging together, say, "cmd/go" and "bytes", and because bar was
lexically earlier, the timeout calculation was based on package "byte",
even though we were actually running, say: "go test bytes cmd/go".

This explains why x/build/cmd/release was often flaky with its
all.bash, since cmd/go can't really finish in 3 minutes reliably
unless it's running by itself. If it has any competition, it runs
over.

Change-Id: I875c8c9e65940ce0ceff48215740dfadfaa89d3f
Reviewed-on: https://go-review.googlesource.com/111395
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
src/cmd/dist/test.go

index 393af1ecd10752d17e4afa743aa110b1236f84cb..3bf74c8c7e921124de841da689793b6243dd72a2 100644 (file)
@@ -273,10 +273,6 @@ func (t *tester) registerStdTest(pkg string) {
        if t.runRx == nil || t.runRx.MatchString(testName) == t.runRxWant {
                stdMatches = append(stdMatches, pkg)
        }
-       timeoutSec := 180
-       if pkg == "cmd/go" {
-               timeoutSec *= 2
-       }
        t.tests = append(t.tests, distTest{
                name:    testName,
                heading: "Testing packages.",
@@ -288,6 +284,15 @@ func (t *tester) registerStdTest(pkg string) {
                        timelog("start", dt.name)
                        defer timelog("end", dt.name)
                        ranGoTest = true
+
+                       timeoutSec := 180
+                       for _, pkg := range stdMatches {
+                               if pkg == "cmd/go" {
+                                       timeoutSec *= 2
+                                       break
+                               }
+                       }
+
                        args := []string{
                                "test",
                                "-short",