]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist: write binaries to to GOTMPDIR instead of GOROOT in runHostTest
authorBryan C. Mills <bcmills@google.com>
Mon, 11 Nov 2019 16:08:20 +0000 (11:08 -0500)
committerBryan C. Mills <bcmills@google.com>
Mon, 11 Nov 2019 20:17:10 +0000 (20:17 +0000)
Updates #32407
Updates #28387

Change-Id: I2ab933896940787b67ab5464c8213670e6e108c2
Reviewed-on: https://go-review.googlesource.com/c/go/+/206459
Run-TryBot: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/dist/test.go

index cc54554a1daabed84b6485cf241cd32d335dbf9e..e0fa51f1469b4fe897bb77a3f210aac21d0c0962 100644 (file)
@@ -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 {