all: skip tests if required tools are not found Fixes golang/go#33950 Change-Id: Iefcb757e773bc052793611c099c25a457fd7e243 Reviewed-on: https://go-review.googlesource.com/c/tools/+/192400 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Cottrell <iancottrell@google.com>
diff --git a/cmd/callgraph/main_test.go b/cmd/callgraph/main_test.go index 54953c7..6aeae6f 100644 --- a/cmd/callgraph/main_test.go +++ b/cmd/callgraph/main_test.go
@@ -17,6 +17,8 @@ "path/filepath" "strings" "testing" + + "golang.org/x/tools/internal/testenv" ) func init() { @@ -32,6 +34,8 @@ } func TestCallgraph(t *testing.T) { + testenv.NeedsTool(t, "go") + gopath, err := filepath.Abs("testdata") if err != nil { t.Fatal(err)
diff --git a/cmd/cover/cover_test.go b/cmd/cover/cover_test.go index a18778b..10a85fb 100644 --- a/cmd/cover/cover_test.go +++ b/cmd/cover/cover_test.go
@@ -16,6 +16,8 @@ "os/exec" "path/filepath" "testing" + + "golang.org/x/tools/internal/testenv" ) const ( @@ -44,6 +46,8 @@ // go run ./testdata/main.go ./testdata/test.go // func TestCover(t *testing.T) { + testenv.NeedsTool(t, "go") + // Read in the test file (testTest) and write it, with LINEs specified, to coverInput. file, err := ioutil.ReadFile(testTest) if err != nil {
diff --git a/cmd/fiximports/main_test.go b/cmd/fiximports/main_test.go index a2973a3..3ec5511 100644 --- a/cmd/fiximports/main_test.go +++ b/cmd/fiximports/main_test.go
@@ -16,6 +16,8 @@ "runtime" "strings" "testing" + + "golang.org/x/tools/internal/testenv" ) // TODO(adonovan): @@ -52,6 +54,8 @@ } func TestFixImports(t *testing.T) { + testenv.NeedsTool(t, "go") + defer func() { stderr = os.Stderr *badDomains = "code.google.com" @@ -239,6 +243,8 @@ // TestDryRun tests that the -n flag suppresses calls to writeFile. func TestDryRun(t *testing.T) { + testenv.NeedsTool(t, "go") + *dryrun = true defer func() { *dryrun = false }() // restore stderr = new(bytes.Buffer)
diff --git a/cmd/godoc/godoc_test.go b/cmd/godoc/godoc_test.go index c8efaab..b92b8e0 100644 --- a/cmd/godoc/godoc_test.go +++ b/cmd/godoc/godoc_test.go
@@ -21,6 +21,8 @@ "strings" "testing" "time" + + "golang.org/x/tools/internal/testenv" ) // buildGodoc builds the godoc executable. @@ -29,12 +31,15 @@ // TODO(adonovan): opt: do this at most once, and do the cleanup // exactly once. How though? There's no atexit. func buildGodoc(t *testing.T) (bin string, cleanup func()) { + t.Helper() + if runtime.GOARCH == "arm" { t.Skip("skipping test on arm platforms; too slow") } if runtime.GOOS == "android" { t.Skipf("the dependencies are not available on android") } + testenv.NeedsTool(t, "go") tmp, err := ioutil.TempDir("", "godoc-regtest-") if err != nil {
diff --git a/cmd/gorename/gorename_test.go b/cmd/gorename/gorename_test.go index ff9a195..3351977 100644 --- a/cmd/gorename/gorename_test.go +++ b/cmd/gorename/gorename_test.go
@@ -14,6 +14,8 @@ "strconv" "strings" "testing" + + "golang.org/x/tools/internal/testenv" ) var haveCGO bool @@ -32,6 +34,7 @@ if !haveCGO { t.Skipf("skipping test: no cgo") } + testenv.NeedsTool(t, "go") tmp, bin, cleanup := buildGorename(t) defer cleanup()
diff --git a/cmd/guru/guru_test.go b/cmd/guru/guru_test.go index af3ddff..b322e9a 100644 --- a/cmd/guru/guru_test.go +++ b/cmd/guru/guru_test.go
@@ -48,6 +48,7 @@ "testing" guru "golang.org/x/tools/cmd/guru" + "golang.org/x/tools/internal/testenv" ) func init() { @@ -296,6 +297,7 @@ default: cmd = exec.Command("/usr/bin/diff", "-u", golden, got) } + testenv.NeedsTool(t, cmd.Path) buf := new(bytes.Buffer) cmd.Stdout = buf cmd.Stderr = os.Stderr
diff --git a/cmd/stringer/endtoend_test.go b/cmd/stringer/endtoend_test.go index 5762a7f..af106b5 100644 --- a/cmd/stringer/endtoend_test.go +++ b/cmd/stringer/endtoend_test.go
@@ -19,6 +19,8 @@ "path/filepath" "strings" "testing" + + "golang.org/x/tools/internal/testenv" ) // This file contains a test that compiles and runs each program in testdata @@ -151,6 +153,8 @@ // buildStringer creates a temporary directory and installs stringer there. func buildStringer(t *testing.T) (dir string, stringer string) { t.Helper() + testenv.NeedsTool(t, "go") + dir, err := ioutil.TempDir("", "stringer") if err != nil { t.Fatal(err)
diff --git a/cmd/stringer/golden_test.go b/cmd/stringer/golden_test.go index 03e7da2..cef64b0 100644 --- a/cmd/stringer/golden_test.go +++ b/cmd/stringer/golden_test.go
@@ -15,6 +15,8 @@ "path/filepath" "strings" "testing" + + "golang.org/x/tools/internal/testenv" ) // Golden represents a test case. @@ -398,6 +400,8 @@ ` func TestGolden(t *testing.T) { + testenv.NeedsTool(t, "go") + dir, err := ioutil.TempDir("", "stringer") if err != nil { t.Error(err)