aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/modload/search.go
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2019-09-18 16:59:17 -0400
committerBryan C. Mills <bcmills@google.com>2019-09-18 21:30:35 +0000
commita11644a26557ea436d456f005f39f4e01902bafe (patch)
tree62f9e1a7666daadd0281de25612b68d98ec39e36 /src/cmd/go/internal/modload/search.go
parente13dd94c564e94de78e6e3e673eb5797d9be0f34 (diff)
downloadgo-a11644a26557ea436d456f005f39f4e01902bafe.tar.gz
go-a11644a26557ea436d456f005f39f4e01902bafe.zip
cmd/go/internal/modload: do not prune the module root when walking directories
When walking filesystem paths to locate packages, we normally prune out subdirectories with names beginning with ".", "_", or equal to "testdata". However, we should not prune out such a directory if it is at or above the module root, since its name is not part of the package path. Fixes #28481 Updates #27852 Change-Id: Ice82b1f908afaab50f5592f6c38ca6a0fe911edf Reviewed-on: https://go-review.googlesource.com/c/go/+/196297 Run-TryBot: Bryan C. Mills <bcmills@google.com> Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/go/internal/modload/search.go')
-rw-r--r--src/cmd/go/internal/modload/search.go22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/cmd/go/internal/modload/search.go b/src/cmd/go/internal/modload/search.go
index d82386eca3..98c384161b 100644
--- a/src/cmd/go/internal/modload/search.go
+++ b/src/cmd/go/internal/modload/search.go
@@ -48,16 +48,20 @@ func matchPackages(pattern string, tags map[string]bool, useStd bool, modules []
return nil
}
- // Don't use GOROOT/src but do walk down into it.
- if path == root && importPathRoot == "" {
- return nil
- }
-
want := true
- // Avoid .foo, _foo, and testdata directory trees.
- _, elem := filepath.Split(path)
- if strings.HasPrefix(elem, ".") || strings.HasPrefix(elem, "_") || elem == "testdata" {
- want = false
+ elem := ""
+
+ // Don't use GOROOT/src but do walk down into it.
+ if path == root {
+ if importPathRoot == "" {
+ return nil
+ }
+ } else {
+ // Avoid .foo, _foo, and testdata subdirectory trees.
+ _, elem = filepath.Split(path)
+ if strings.HasPrefix(elem, ".") || strings.HasPrefix(elem, "_") || elem == "testdata" {
+ want = false
+ }
}
name := importPathRoot + filepath.ToSlash(path[len(root):])