diff --git a/go/buildutil/allpackages.go b/go/buildutil/allpackages.go index 4d4366c1..c0cb03e7 100644 --- a/go/buildutil/allpackages.go +++ b/go/buildutil/allpackages.go @@ -137,6 +137,9 @@ func allPackages(ctxt *build.Context, root string, ch chan<- item) { // // encoding/... -encoding/xml // +// A trailing slash in a pattern is ignored. (Path components of Go +// package names are separated by slash, not the platform's path separator.) +// func ExpandPatterns(ctxt *build.Context, patterns []string) map[string]bool { // TODO(adonovan): support other features of 'go list': // - "std"/"cmd"/"all" meta-packages @@ -187,7 +190,7 @@ func ExpandPatterns(ctxt *build.Context, patterns []string) map[string]bool { } } else { // single package - doPkg(arg, neg) + doPkg(strings.TrimSuffix(arg, "/"), neg) } } diff --git a/go/buildutil/allpackages_test.go b/go/buildutil/allpackages_test.go index 96bf77a6..0440ff24 100644 --- a/go/buildutil/allpackages_test.go +++ b/go/buildutil/allpackages_test.go @@ -61,6 +61,8 @@ func TestExpandPatterns(t *testing.T) { {"...", "encoding encoding/hex encoding/json encoding/xml fmt"}, {"encoding/... -encoding/xml", "encoding encoding/hex encoding/json"}, {"... -encoding/...", "fmt"}, + {"encoding", "encoding"}, + {"encoding/", "encoding"}, } { var pkgs []string for pkg := range buildutil.ExpandPatterns(ctxt, strings.Fields(test.patterns)) {