From b480436ea2fc67483778f06050674899080882a2 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 20 Jan 2022 09:35:18 +0100 Subject: [PATCH] feat: #1 Allow setting working directory via env:PWD=something --- process.go | 15 +++++++++++++++ process_test.go | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/process.go b/process.go index 7640bfe..b5bbce2 100644 --- a/process.go +++ b/process.go @@ -6,6 +6,7 @@ import ( "os" "os/exec" "path/filepath" + "strings" "syscall" ) @@ -15,9 +16,23 @@ func getProcessName(args []string) string { func StartProcess(processName string, processArgs []string, extraEnv []string) *exec.Cmd { cmd := exec.Command(processName, processArgs...) + if extraEnv != nil { cmd.Env = append(os.Environ(), extraEnv...) + + // #2: Support for setting workdir (PWD) + for _, envAsStr := range extraEnv { + if strings.Contains(envAsStr, "PWD=") { + name, value := parseEnvironmentVariable(envAsStr) + + _ = os.Setenv(name, value) + cmd.Dir = os.Getenv("PWD") + + break + } + } } + cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin cmd.Stderr = os.Stderr diff --git a/process_test.go b/process_test.go index d440e76..a59508e 100644 --- a/process_test.go +++ b/process_test.go @@ -1,8 +1,10 @@ package main import ( + "fmt" "github.com/stretchr/testify/assert" "os" + "strings" "testing" ) @@ -32,3 +34,16 @@ func TestProcessExitCodeSaving_WhenProcessFails(t *testing.T) { actual, _ := os.ReadFile(".build/TestProcessExitCodeSaving") assert.Equal(t, "1", string(actual)) } + +func TestExtraPWDSetting(t *testing.T) { + _ = os.Mkdir(".build", 0755) + currentDir, _ := os.Getwd() + + process := StartProcess("/bin/bash", + []string{"-c", fmt.Sprintf("pwd > %v/.build/TestExtraPWDSetting", currentDir)}, + []string{"PWD=/tmp"}) + _ = waitAndRetrieveStatusCode(process) + + actual, _ := os.ReadFile(".build/TestExtraPWDSetting") + assert.Equal(t, "/tmp", strings.Trim(string(actual), "\n ")) +}