diff options
| author | Daniel Martí <mvdan@mvdan.cc> | 2018-04-13 19:39:32 +0100 |
|---|---|---|
| committer | Daniel Martí <mvdan@mvdan.cc> | 2018-04-14 21:59:08 +0000 |
| commit | 49e3e436e71a54f16eb15960bd77ecf554ccc905 (patch) | |
| tree | bf30428bbcdf7ee74e487d1a6eaa41367351c59d /src | |
| parent | a55f9d2d912a33ce490ff2fa9ce5720346ff7b8e (diff) | |
| download | go-49e3e436e71a54f16eb15960bd77ecf554ccc905.tar.xz | |
cmd/doc: skip directories like other go tools
It was skipping dirs starting with ".", but it was missing the "_"
prefix and the "testdata" name. From "go help packages":
Directory and file names that begin with "." or "_" are ignored
by the go tool, as are directories named "testdata".
Before the change:
$ go doc z # using src/cmd/go/testdata/testvendor/src/q/z
package z // import "."
After the fix, it falls back to the current directory, as expected when
a single argument isn't found as a package in $GOPATH.
TestMain needs a small adjustment to keep the tests working, as now
their use of cmd/doc/testdata would normally not work.
Fixes #24462.
Change-Id: I1f5d6d1eba0fb59aff55db33b3b1147e300284ef
Reviewed-on: https://go-review.googlesource.com/106935
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/doc/dirs.go | 5 | ||||
| -rw-r--r-- | src/cmd/doc/doc_test.go | 14 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/cmd/doc/dirs.go b/src/cmd/doc/dirs.go index 5088f880e1..9f7920ecd9 100644 --- a/src/cmd/doc/dirs.go +++ b/src/cmd/doc/dirs.go @@ -97,8 +97,9 @@ func (d *Dirs) bfsWalkRoot(root string) { continue } // Entry is a directory. - // No .git or other dot nonsense please. - if strings.HasPrefix(name, ".") { + + // The go tool ignores directories starting with ., _, or named "testdata". + if name[0] == '.' || name[0] == '_' || name == "testdata" { continue } // Remember this (fully qualified) directory for the next pass. diff --git a/src/cmd/doc/doc_test.go b/src/cmd/doc/doc_test.go index e68fb017b9..f919857067 100644 --- a/src/cmd/doc/doc_test.go +++ b/src/cmd/doc/doc_test.go @@ -16,10 +16,20 @@ import ( ) func TestMain(m *testing.M) { - // otherwise the tests are brittle, as they may give unexpected - // output or errors when a suffix match with GOPATH takes place + // Clear GOPATH so we don't access the user's own packages in the test. buildCtx.GOPATH = "" + dirsInit() + + // Add $GOROOT/src/cmd/doc/testdata explicitly so we can access its contents in the test. + // Normally testdata directories are ignored, but sending it to dirs.scan directly is + // a hack that works around the check. + testdataDir, err := filepath.Abs("testdata") + if err != nil { + panic(err) + } + go func() { dirs.scan <- testdataDir }() + os.Exit(m.Run()) } |
