From 06c9ccdfc7b9e39e0f609c00bddd1b39a0385a37 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Mon, 29 Apr 2019 16:36:21 +0000 Subject: os/exec: always set SYSTEMROOT on Windows if not listed in Cmd.Env Fixes #25210 Change-Id: If27b61776154dae9b9b67bf4e4f5faa785d98105 Reviewed-on: https://go-review.googlesource.com/c/go/+/174318 Reviewed-by: Ian Lance Taylor --- src/os/exec/exec_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/os/exec/exec_test.go') diff --git a/src/os/exec/exec_test.go b/src/os/exec/exec_test.go index 26be62dd92..a157810eed 100644 --- a/src/os/exec/exec_test.go +++ b/src/os/exec/exec_test.go @@ -1184,3 +1184,22 @@ func TestStringPathNotResolved(t *testing.T) { t.Errorf("String(%q, %q) = %q, want %q", "makemeasandwich", "-lettuce", got, want) } } + +// start a child process without the user code explicitly starting +// with a copy of the parent's. (The Windows SYSTEMROOT issue: Issue +// 25210) +func TestChildCriticalEnv(t *testing.T) { + testenv.MustHaveExec(t) + if runtime.GOOS != "windows" { + t.Skip("only testing on Windows") + } + cmd := helperCommand(t, "echoenv", "SYSTEMROOT") + cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"} + out, err := cmd.CombinedOutput() + if err != nil { + t.Fatal(err) + } + if strings.TrimSpace(string(out)) == "" { + t.Error("no SYSTEMROOT found") + } +} -- cgit v1.3-5-g9baa