From 5613882df7555484680ecabc0462b7c23c6f5205 Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Fri, 27 Oct 2023 12:30:53 -0400 Subject: internal/testenv: use cmd.Environ in CleanCmdEnv In CleanCmdEnv, use cmd.Environ instead of os.Environ, so it sets the PWD environment variable if cmd.Dir is set. This ensures the child process sees a canonical path for its working directory. Change-Id: Ia769552a488dc909eaf6bb7d21937adba06d1072 Reviewed-on: https://go-review.googlesource.com/c/go/+/538215 LUCI-TryBot-Result: Go LUCI Reviewed-by: Bryan Mills --- src/internal/testenv/exec.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/internal/testenv/exec.go') diff --git a/src/internal/testenv/exec.go b/src/internal/testenv/exec.go index 50d3b0dc73..7f6ad5cac4 100644 --- a/src/internal/testenv/exec.go +++ b/src/internal/testenv/exec.go @@ -100,11 +100,14 @@ func MustHaveExecPath(t testing.TB, path string) { // CleanCmdEnv will fill cmd.Env with the environment, excluding certain // variables that could modify the behavior of the Go tools such as // GODEBUG and GOTRACEBACK. +// +// If the caller wants to set cmd.Dir, set it before calling this function, +// so PWD will be set correctly in the environment. func CleanCmdEnv(cmd *exec.Cmd) *exec.Cmd { if cmd.Env != nil { panic("environment already set") } - for _, env := range os.Environ() { + for _, env := range cmd.Environ() { // Exclude GODEBUG from the environment to prevent its output // from breaking tests that are trying to parse other command output. if strings.HasPrefix(env, "GODEBUG=") { -- cgit v1.3