From: Bryan C. Mills Date: Mon, 11 Nov 2019 16:08:20 +0000 (-0500) Subject: cmd/dist: write binaries to to GOTMPDIR instead of GOROOT in runHostTest X-Git-Tag: go1.14beta1~255 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b1159bad99db43e3f1b114e16c913d0e28387160;p=gostls13.git cmd/dist: write binaries to to GOTMPDIR instead of GOROOT in runHostTest Updates #32407 Updates #28387 Change-Id: I2ab933896940787b67ab5464c8213670e6e108c2 Reviewed-on: https://go-review.googlesource.com/c/go/+/206459 Run-TryBot: Bryan C. Mills Reviewed-by: Brad Fitzpatrick Reviewed-by: Jay Conrod --- diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index cc54554a1d..e0fa51f146 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -1007,13 +1007,31 @@ func (t *tester) registerHostTest(name, heading, dir, pkg string) { } func (t *tester) runHostTest(dir, pkg string) error { - defer os.Remove(filepath.Join(goroot, dir, "test.test")) - cmd := t.dirCmd(dir, t.goTest(), "-c", "-o", "test.test", pkg) + out, err := exec.Command("go", "env", "GOEXE", "GOTMPDIR").Output() + if err != nil { + return err + } + + parts := strings.Split(string(out), "\n") + if len(parts) < 2 { + return fmt.Errorf("'go env GOEXE GOTMPDIR' output contains <2 lines") + } + GOEXE := strings.TrimSpace(parts[0]) + GOTMPDIR := strings.TrimSpace(parts[1]) + + f, err := ioutil.TempFile(GOTMPDIR, "test.test-*"+GOEXE) + if err != nil { + return err + } + f.Close() + defer os.Remove(f.Name()) + + cmd := t.dirCmd(dir, t.goTest(), "-c", "-o", f.Name(), pkg) cmd.Env = append(os.Environ(), "GOARCH="+gohostarch, "GOOS="+gohostos) if err := cmd.Run(); err != nil { return err } - return t.dirCmd(dir, "./test.test", "-test.short").Run() + return t.dirCmd(dir, f.Name(), "-test.short").Run() } func (t *tester) cgoTest(dt *distTest) error {