diff --git a/internal/builders/golang/build.go b/internal/builders/golang/build.go index 3cff392b4ef..9875e4d5e07 100644 --- a/internal/builders/golang/build.go +++ b/internal/builders/golang/build.go @@ -8,6 +8,7 @@ import ( "os" "os/exec" "path/filepath" + "slices" "strings" "dario.cat/mergo" @@ -283,6 +284,9 @@ func buildGoBuildLine(ctx *context.Context, build config.Build, details config.B return cmd, err } cmd = append(cmd, flags...) + if build.Command == "test" && !slices.Contains(flags, "-c") { + cmd = append(cmd, "-c") + } asmflags, err := processFlags(ctx, artifact, env, details.Asmflags, "-asmflags=") if err != nil { diff --git a/internal/builders/golang/build_test.go b/internal/builders/golang/build_test.go index c974ff94017..19f39a19771 100644 --- a/internal/builders/golang/build_test.go +++ b/internal/builders/golang/build_test.go @@ -1175,6 +1175,15 @@ func TestBuildGoBuildLine(t *testing.T) { }, strings.Fields("go test -c -o foo.test .")) }) + t.Run("build test always as c flags", func(t *testing.T) { + requireEqualCmd(t, config.Build{ + Main: ".", + GoBinary: "go", + Command: "test", + Binary: "foo.test", + }, strings.Fields("go test -c -o foo.test .")) + }) + t.Run("ldflags1", func(t *testing.T) { requireEqualCmd(t, config.Build{ Main: ".",