From a9e0a8f11209b992b62e126274fb958e4527d65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Parada?= Date: Tue, 27 Aug 2024 08:06:27 -0400 Subject: [PATCH] fix(build): ignore empty flags after templating (#5103) Ignore empty flags after templating is applied for final Go build line. This caused us some problems since we had an `if` without `else`, resulting in an empty flag, causing the whole build to fail with a misleading error message like: ``` malformed import path "-myflag": leading dash ``` --- internal/builders/golang/build.go | 5 +++++ internal/builders/golang/build_test.go | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/internal/builders/golang/build.go b/internal/builders/golang/build.go index b0aa3d35a..21ec2ae38 100644 --- a/internal/builders/golang/build.go +++ b/internal/builders/golang/build.go @@ -365,6 +365,11 @@ func processFlags(ctx *context.Context, a *artifact.Artifact, env, flags []strin if err != nil { return nil, err } + + if flag == "" { + continue + } + processed = append(processed, flagPrefix+flag) } return processed, nil diff --git a/internal/builders/golang/build_test.go b/internal/builders/golang/build_test.go index 41731db7a..fb15466b2 100644 --- a/internal/builders/golang/build_test.go +++ b/internal/builders/golang/build_test.go @@ -992,6 +992,16 @@ func TestProcessFlagsInvalid(t *testing.T) { require.Nil(t, flags) } +func TestProcessFlagsIgnoreEmptyFlags(t *testing.T) { + ctx := testctx.New() + source := []string{ + "{{if eq 1 2}}-ignore-me{{end}}", + } + flags, err := processFlags(ctx, &artifact.Artifact{}, []string{}, source, "") + require.NoError(t, err) + require.Len(t, flags, 0) +} + func TestBuildModTimestamp(t *testing.T) { // round to seconds since this will be a unix timestamp modTime := time.Now().AddDate(-1, 0, 0).Round(1 * time.Second).UTC()