From b132d00aecfb17ac8c73579ed872e9b9e5bdada8 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Tue, 31 Aug 2021 22:42:15 -0300 Subject: [PATCH] fix: build dir that dont exist yet (#2435) Signed-off-by: Carlos Alexandro Becker --- internal/builders/golang/build_test.go | 30 ++++++++++++++++++++++ internal/builders/golang/targets.go | 7 ++++- internal/builders/golang/testdata/.gitkeep | 0 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 internal/builders/golang/testdata/.gitkeep diff --git a/internal/builders/golang/build_test.go b/internal/builders/golang/build_test.go index 75e8dddcfcf..078e5452439 100644 --- a/internal/builders/golang/build_test.go +++ b/internal/builders/golang/build_test.go @@ -88,6 +88,36 @@ func TestWithDefaults(t *testing.T) { }, goBinary: "go", }, + "empty with custom dir": { + build: config.Build{ + ID: "foo2", + Binary: "foo", + Dir: "./testdata", + }, + targets: []string{ + "linux_amd64", + "linux_386", + "linux_arm64", + "darwin_amd64", + "darwin_arm64", + }, + goBinary: "go", + }, + "empty with custom dir that doest exist": { + build: config.Build{ + ID: "foo2", + Binary: "foo", + Dir: "./nope", + }, + targets: []string{ + "linux_amd64", + "linux_386", + "linux_arm64", + "darwin_amd64", + "darwin_arm64", + }, + goBinary: "go", + }, } { t.Run(name, func(t *testing.T) { if testcase.build.GoBinary != "" && testcase.build.GoBinary != "go" { diff --git a/internal/builders/golang/targets.go b/internal/builders/golang/targets.go index 2f93152ef67..cafaa07f29e 100644 --- a/internal/builders/golang/targets.go +++ b/internal/builders/golang/targets.go @@ -2,6 +2,7 @@ package golang import ( "fmt" + "os" "os/exec" "regexp" "strings" @@ -133,7 +134,11 @@ var ( func goVersion(build config.Build) ([]byte, error) { cmd := exec.Command(build.GoBinary, "version") - cmd.Dir = build.Dir // Set Dir to build directory in case of reletive path to GoBinary + // If the build.Dir is acessible, set the cmd dir to it in case + // of reletive path to GoBinary + if _, err := os.Stat(build.Dir); err == nil { + cmd.Dir = build.Dir + } bts, err := cmd.CombinedOutput() if err != nil { return nil, fmt.Errorf("unable to determine version of go binary (%s): %w", build.GoBinary, err) diff --git a/internal/builders/golang/testdata/.gitkeep b/internal/builders/golang/testdata/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d