]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: do not let test vet failures stop reporting of later test results
authorRuss Cox <rsc@golang.org>
Thu, 14 Dec 2017 02:11:47 +0000 (21:11 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 14 Dec 2017 17:49:46 +0000 (17:49 +0000)
(This only manifested in test vet failures for packages without tests,
or else we'd probably have seen this sooner.)

Fixes #23047.

Change-Id: I41d09a7780999bbe1951377ffcc811ba86ea5000
Reviewed-on: https://go-review.googlesource.com/83955
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/go/go_test.go
src/cmd/go/internal/test/test.go
src/cmd/go/testdata/src/vetfail/p1/p1.go [new file with mode: 0644]
src/cmd/go/testdata/src/vetfail/p2/p2.go [new file with mode: 0644]
src/cmd/go/testdata/src/vetfail/p2/p2_test.go [new file with mode: 0644]

index d5875d9106dad1885e7c46a885ca24d07d540beb..b3fb5dce4f3b2efec1c5a7eb83fa83b30365dc34 100644 (file)
@@ -5275,6 +5275,10 @@ func TestTestVet(t *testing.T) {
 
        tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata"))
        tg.run("test", "vetcycle") // must not fail; #22890
+
+       tg.runFail("test", "vetfail/...")
+       tg.grepStderr(`Printf format %d`, "did not diagnose bad Printf")
+       tg.grepStdout(`ok\s+vetfail/p2`, "did not run vetfail/p2")
 }
 
 func TestInstallDeps(t *testing.T) {
index 5b4408ccd1d8fcf810ca05742791c63bc6186a29..4ea852c06ff2a492f50b6d56bdc563dfb96ec5d4 100644 (file)
@@ -1087,7 +1087,7 @@ func builderTest(b *work.Builder, p *load.Package) (buildAction, runAction, prin
                        Func:       c.builderRunTest,
                        Deps:       []*work.Action{buildAction},
                        Package:    p,
-                       IgnoreFail: true,
+                       IgnoreFail: true, // run (prepare output) even if build failed
                        TryCache:   c.tryCache,
                        Objdir:     testDir,
                }
@@ -1098,17 +1098,19 @@ func builderTest(b *work.Builder, p *load.Package) (buildAction, runAction, prin
                        addTestVet(b, pxtest, runAction, installAction)
                }
                cleanAction = &work.Action{
-                       Mode:    "test clean",
-                       Func:    builderCleanTest,
-                       Deps:    []*work.Action{runAction},
-                       Package: p,
-                       Objdir:  testDir,
+                       Mode:       "test clean",
+                       Func:       builderCleanTest,
+                       Deps:       []*work.Action{runAction},
+                       Package:    p,
+                       IgnoreFail: true, // clean even if test failed
+                       Objdir:     testDir,
                }
                printAction = &work.Action{
-                       Mode:    "test print",
-                       Func:    builderPrintTest,
-                       Deps:    []*work.Action{cleanAction},
-                       Package: p,
+                       Mode:       "test print",
+                       Func:       builderPrintTest,
+                       Deps:       []*work.Action{cleanAction},
+                       Package:    p,
+                       IgnoreFail: true, // print even if test failed
                }
        }
        if installAction != nil {
diff --git a/src/cmd/go/testdata/src/vetfail/p1/p1.go b/src/cmd/go/testdata/src/vetfail/p1/p1.go
new file mode 100644 (file)
index 0000000..248317b
--- /dev/null
@@ -0,0 +1,7 @@
+package p1
+
+import "fmt"
+
+func F() {
+       fmt.Printf("%d", "hello") // causes vet error
+}
diff --git a/src/cmd/go/testdata/src/vetfail/p2/p2.go b/src/cmd/go/testdata/src/vetfail/p2/p2.go
new file mode 100644 (file)
index 0000000..88b1cc2
--- /dev/null
@@ -0,0 +1,6 @@
+package p2
+
+import _ "vetfail/p1"
+
+func F() {
+}
diff --git a/src/cmd/go/testdata/src/vetfail/p2/p2_test.go b/src/cmd/go/testdata/src/vetfail/p2/p2_test.go
new file mode 100644 (file)
index 0000000..fde0d1a
--- /dev/null
@@ -0,0 +1,7 @@
+package p2
+
+import "testing"
+
+func TestF(t *testing.T) {
+       F()
+}