aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/test/test.go
diff options
context:
space:
mode:
authorLuka Zitnik <luka.zitnik@gmail.com>2019-04-07 16:41:11 +0200
committerBryan C. Mills <bcmills@google.com>2019-05-13 19:26:01 +0000
commit3def99a8a8e3dc9841132e7b3515187b51b6a528 (patch)
treee6673642c0c73106809e809c1633c2cb38b6d853 /src/cmd/go/internal/test/test.go
parent23f3ea82b998e60c500e711dab340852c967ec41 (diff)
downloadgo-3def99a8a8e3dc9841132e7b3515187b51b6a528.tar.gz
go-3def99a8a8e3dc9841132e7b3515187b51b6a528.zip
cmd/go: print finally FAIL if a test has failed in package list mode
Fixes #30507 Change-Id: Ic598e4d5f71c624fcde051982bf85533e2f18e8d Reviewed-on: https://go-review.googlesource.com/c/go/+/170948 Reviewed-by: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/go/internal/test/test.go')
-rw-r--r--src/cmd/go/internal/test/test.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go
index 98a8c8756c..fa6205918e 100644
--- a/src/cmd/go/internal/test/test.go
+++ b/src/cmd/go/internal/test/test.go
@@ -102,7 +102,10 @@ package test passes, go test prints only the final 'ok' summary
line. If a package test fails, go test prints the full test output.
If invoked with the -bench or -v flag, go test prints the full
output even for passing package tests, in order to display the
-requested benchmark results or verbose logging.
+requested benchmark results or verbose logging. After the package
+tests for all of the listed packages finish, and their output is
+printed, go test prints a final 'FAIL' status if any package test
+has failed.
In package list mode only, go test caches successful package test
results to avoid unnecessary repeated running of tests. When the
@@ -735,7 +738,7 @@ func runTest(cmd *base.Command, args []string) {
}
// Ultimately the goal is to print the output.
- root := &work.Action{Mode: "go test", Deps: prints}
+ root := &work.Action{Mode: "go test", Func: printExitStatus, Deps: prints}
// Force the printing of results to happen in order,
// one at a time.
@@ -1632,3 +1635,14 @@ func builderNoTest(b *work.Builder, a *work.Action) error {
fmt.Fprintf(stdout, "? \t%s\t[no test files]\n", a.Package.ImportPath)
return nil
}
+
+// printExitStatus is the action for printing the exit status
+func printExitStatus(b *work.Builder, a *work.Action) error {
+ if !testJSON && len(pkgArgs) != 0 {
+ if base.GetExitStatus() != 0 {
+ fmt.Println("FAIL")
+ return nil
+ }
+ }
+ return nil
+}