diff options
author | Luka Zitnik <luka.zitnik@gmail.com> | 2019-04-07 16:41:11 +0200 |
---|---|---|
committer | Bryan C. Mills <bcmills@google.com> | 2019-05-13 19:26:01 +0000 |
commit | 3def99a8a8e3dc9841132e7b3515187b51b6a528 (patch) | |
tree | e6673642c0c73106809e809c1633c2cb38b6d853 /src/cmd/go/internal/test/test.go | |
parent | 23f3ea82b998e60c500e711dab340852c967ec41 (diff) | |
download | go-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.go | 18 |
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 +} |