]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: drop FailedBuild field if gotestjsonbuildtext=1
authorAustin Clements <austin@google.com>
Fri, 13 Dec 2024 20:36:47 +0000 (15:36 -0500)
committerAustin Clements <austin@google.com>
Fri, 13 Dec 2024 23:07:27 +0000 (15:07 -0800)
go test -json has two new effects in Go 1.24: it implies go build
-json, and it adds a FailedBuild field in test events. For
compatibility, CL 629335 added gotestjsonbuildtext=1, which disables
the implicit go build -json, but that CL didn't affect the FailedBuild
field. In principle this shouldn't matter because it's just another
JSON field, but just so we don't have to worry about some intermediate
behavior, this CL makes gotestjsonbuildtext=1 disable the FailedBuild
field as well.

Updates #62067
Updates #70402

Change-Id: I006d1ea0468980ee2564495324e8b4ed082898af
Reviewed-on: https://go-review.googlesource.com/c/go/+/635899
Auto-Submit: Austin Clements <austin@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/go/internal/test/test.go
src/cmd/go/testdata/script/test_json_build.txt

index 41ddb2f5d01e7749e8ba07d39517a22e54c1a6e4..b530d027dff4e0ba2940b87ae6589c989156de66 100644 (file)
@@ -1009,7 +1009,13 @@ func runTest(ctx context.Context, cmd *base.Command, args []string) {
                                        json.Exited(err)
                                        json.Close()
                                }()
-                               json.SetFailedBuild(perr.Desc())
+                               if gotestjsonbuildtext.Value() == "1" {
+                                       // While this flag is about go build -json, the other effect
+                                       // of that change was to include "FailedBuild" in the test JSON.
+                                       gotestjsonbuildtext.IncNonDefault()
+                               } else {
+                                       json.SetFailedBuild(perr.Desc())
+                               }
                                stdout = json
                        }
                        fmt.Fprintf(stdout, "FAIL\t%s [setup failed]\n", p.ImportPath)
@@ -1437,7 +1443,11 @@ func (r *runTestActor) Act(b *work.Builder, ctx context.Context, a *work.Action)
        if a.Failed != nil {
                // We were unable to build the binary.
                if json != nil && a.Failed.Package != nil {
-                       json.SetFailedBuild(a.Failed.Package.Desc())
+                       if gotestjsonbuildtext.Value() == "1" {
+                               gotestjsonbuildtext.IncNonDefault()
+                       } else {
+                               json.SetFailedBuild(a.Failed.Package.Desc())
+                       }
                }
                a.Failed = nil
                fmt.Fprintf(stdout, "FAIL\t%s [build failed]\n", a.Package.ImportPath)
index a3f0c37923faf5fb74be61436f349e666f1a2df4..0a40649dcce8df9161255b453aa280bd2743b063 100644 (file)
@@ -58,8 +58,9 @@ stderr '# m/builderror \[m/builderror.test\]\n'
 stderr 'builderror'${/}'main_test.go:3:11: undefined: y\n'
 stdout '"Action":"start","Package":"m/builderror"'
 stdout '"Action":"output","Package":"m/builderror","Output":"FAIL\\tm/builderror \[build failed\]\\n"'
-stdout '"Action":"fail","Package":"m/builderror","Elapsed":.*,"FailedBuild":"m/builderror \[m/builderror\.test\]"'
-
+stdout '"Action":"fail","Package":"m/builderror","Elapsed":[0-9.]+\}'
+# FailedBuild should NOT appear in the output in this mode.
+! stdout '"FailedBuild"'
 
 -- go.mod --
 module m