aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/test2json
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2020-08-14 17:44:22 -0400
committerBryan C. Mills <bcmills@google.com>2020-08-17 19:43:21 +0000
commit1b86bdbdc3991c13c6ed156100a5f4918fdd9c6b (patch)
tree1630f7d8bec19ca853d9e9804aeb532e44df6f28 /src/cmd/test2json
parentf30044a03bc7cf107dbec03c02fb6d0072878252 (diff)
downloadgo-1b86bdbdc3991c13c6ed156100a5f4918fdd9c6b.tar.gz
go-1b86bdbdc3991c13c6ed156100a5f4918fdd9c6b.zip
cmd/test2json: do not emit a final Action if the result is not known
If we are parsing a test output, and the test does not end in the usual PASS or FAIL line (say, because it panicked), then we need the exit status of the test binary in order to determine whether the test passed or failed. If we don't have that status available, we shouldn't guess arbitrarily — instead, we should omit the final "pass" or "fail" action entirely. (In practice, we nearly always DO have the final status, such as when running 'go test' or 'go tool test2json some.exe'.) Fixes #40132 Change-Id: Iae482577361a6033395fe4a05d746b980e18c3de Reviewed-on: https://go-review.googlesource.com/c/go/+/248624 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
Diffstat (limited to 'src/cmd/test2json')
-rw-r--r--src/cmd/test2json/main.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cmd/test2json/main.go b/src/cmd/test2json/main.go
index 0385d8f246..57a874193e 100644
--- a/src/cmd/test2json/main.go
+++ b/src/cmd/test2json/main.go
@@ -118,12 +118,16 @@ func main() {
w := &countWriter{0, c}
cmd.Stdout = w
cmd.Stderr = w
- if err := cmd.Run(); err != nil {
+ err := cmd.Run()
+ if err != nil {
if w.n > 0 {
// Assume command printed why it failed.
} else {
fmt.Fprintf(c, "test2json: %v\n", err)
}
+ }
+ c.Exited(err)
+ if err != nil {
c.Close()
os.Exit(1)
}