]> Cypherpunks repositories - gostls13.git/commitdiff
debug/gosym: in test, use temp binary name in /tmp, and clean up.
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 9 Apr 2012 18:19:52 +0000 (11:19 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 9 Apr 2012 18:19:52 +0000 (11:19 -0700)
This fixes all.bash on shared machines.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5992078

src/pkg/debug/gosym/pclntab_test.go

index b2400bb3ba7b99799998c3e321615b8670da3103..ade704335d14b843ec67b3d2b151f1bbb687f968 100644 (file)
@@ -7,14 +7,19 @@ package gosym
 import (
        "debug/elf"
        "fmt"
+       "io/ioutil"
        "os"
        "os/exec"
+       "path/filepath"
        "runtime"
        "strings"
        "testing"
 )
 
-var pclinetestBinary string
+var (
+       pclineTempDir    string
+       pclinetestBinary string
+)
 
 func dotest() bool {
        // For now, only works on ELF platforms.
@@ -24,10 +29,18 @@ func dotest() bool {
        if pclinetestBinary != "" {
                return true
        }
+       var err error
+       pclineTempDir, err = ioutil.TempDir("", "pclinetest")
+       if err != nil {
+               panic(err)
+       }
+       if strings.Contains(pclineTempDir, " ") {
+               panic("unexpected space in tempdir")
+       }
        // This command builds pclinetest from pclinetest.asm;
        // the resulting binary looks like it was built from pclinetest.s,
        // but we have renamed it to keep it away from the go tool.
-       pclinetestBinary = os.TempDir() + "/pclinetest"
+       pclinetestBinary = filepath.Join(pclineTempDir, "pclinetest")
        command := fmt.Sprintf("go tool 6a -o %s.6 pclinetest.asm && go tool 6l -E main -o %s %s.6",
                pclinetestBinary, pclinetestBinary, pclinetestBinary)
        cmd := exec.Command("sh", "-c", command)
@@ -170,6 +183,7 @@ func TestPCLine(t *testing.T) {
        if !dotest() {
                return
        }
+       defer os.RemoveAll(pclineTempDir)
 
        f, tab := crack(pclinetestBinary, t)
        text := f.Section(".text")