]> Cypherpunks repositories - gostls13.git/commitdiff
net/http, internal/testenv: find go binary in PATH
authorDavid Crawshaw <crawshaw@golang.org>
Mon, 21 Mar 2016 18:41:16 +0000 (14:41 -0400)
committerDavid Crawshaw <crawshaw@golang.org>
Tue, 22 Mar 2016 02:02:23 +0000 (02:02 +0000)
Fixes #14901

Change-Id: Ia32e09767374a341c9a36c5d977d47d7d1a82315
Reviewed-on: https://go-review.googlesource.com/20967
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>

src/go/build/deps_test.go
src/internal/testenv/testenv.go
src/net/http/http_test.go

index 04523f80223a97105bac3c3fbf7d310b38c5046a..1bd1f4ec20f5d9e130e14b1060bf894fcb21be55 100644 (file)
@@ -168,7 +168,7 @@ var pkgDeps = map[string][]string{
        "testing":          {"L2", "flag", "fmt", "os", "runtime/debug", "runtime/pprof", "runtime/trace", "time"},
        "testing/iotest":   {"L2", "log"},
        "testing/quick":    {"L2", "flag", "fmt", "reflect"},
-       "internal/testenv": {"L2", "os", "testing"},
+       "internal/testenv": {"L2", "OS", "testing"},
 
        // L4 is defined as L3+fmt+log+time, because in general once
        // you're using L3 packages, use of fmt, log, or time is not a big deal.
index 99b2a2ea156b454157b3a10db91d85587f3d7b08..6c007f185c74f638fe9b896ff1d1ffbe64a80ee4 100644 (file)
@@ -12,6 +12,7 @@ package testenv
 
 import (
        "os"
+       "os/exec"
        "runtime"
        "strings"
        "testing"
@@ -62,6 +63,22 @@ func MustHaveGoRun(t *testing.T) {
        }
 }
 
+// GoToolPath reports the path to the Go tool.
+// If the tool is unavailable GoToolPath calls t.Skip.
+// If the tool should be available and isn't, GoToolPath calls t.Fatal.
+func GoToolPath(t *testing.T) string {
+       MustHaveGoBuild(t)
+       var exeSuffix string
+       if runtime.GOOS == "windows" {
+               exeSuffix = ".exe"
+       }
+       goBin, err := exec.LookPath("go" + exeSuffix)
+       if err != nil {
+               t.Fatal("cannot find go tool: %v", err)
+       }
+       return goBin
+}
+
 // HasExec reports whether the current system can start new processes
 // using os.StartProcess or (more commonly) exec.Command.
 func HasExec() bool {
index 7fd3181f6f29912ecd00999c5cf632af6feb6ae4..34da4bbb59ed11231b958ad386bfe2184380db5b 100644 (file)
@@ -10,9 +10,7 @@ import (
        "bytes"
        "internal/testenv"
        "os/exec"
-       "path/filepath"
        "reflect"
-       "runtime"
        "testing"
 )
 
@@ -67,16 +65,10 @@ func TestCleanHost(t *testing.T) {
 // This catches accidental dependencies between the HTTP transport and
 // server code.
 func TestCmdGoNoHTTPServer(t *testing.T) {
-       testenv.MustHaveGoBuild(t)
-       var exeSuffix string
-       if runtime.GOOS == "windows" {
-               exeSuffix = ".exe"
-       }
-
-       goBin := filepath.Join(runtime.GOROOT(), "bin", "go"+exeSuffix)
-       out, err := exec.Command("go", "tool", "nm", goBin).Output()
+       goBin := testenv.GoToolPath(t)
+       out, err := exec.Command("go", "tool", "nm", goBin).CombinedOutput()
        if err != nil {
-               t.Fatalf("go tool nm: %v", err)
+               t.Fatalf("go tool nm: %v: %s", err, out)
        }
        wantSym := map[string]bool{
                // Verify these exist: (sanity checking this test)