diff --git a/_testdata/src/skip_/_a.go b/_testdata/src/skip_/_a.go new file mode 100644 index 0000000000..1e13b2cc24 --- /dev/null +++ b/_testdata/src/skip_/_a.go @@ -0,0 +1,11 @@ +package skip + +import ( + "bytes" + "sort" +) + +var ( + _ = sort.Strings + _ = bytes.Buffer +) diff --git a/_testdata/src/skip_/a.go b/_testdata/src/skip_/a.go new file mode 100644 index 0000000000..ffc88f4cb8 --- /dev/null +++ b/_testdata/src/skip_/a.go @@ -0,0 +1,12 @@ +package skip + +import ( + "sort" + + "github.com/sdboyer/gps" +) + +var ( + _ = sort.Strings + _ = gps.Solve +) diff --git a/pkgtree/pkgtree.go b/pkgtree/pkgtree.go index 5717f0b267..746f16ab0d 100644 --- a/pkgtree/pkgtree.go +++ b/pkgtree/pkgtree.go @@ -195,6 +195,10 @@ func fillPackage(p *build.Package) error { var testImports []string var imports []string for _, file := range gofiles { + // Skip underscore-led files, in keeping with the rest of the toolchain. + if filepath.Base(file)[0] == '_' { + continue + } pf, err := parser.ParseFile(token.NewFileSet(), file, nil, parser.ImportsOnly|parser.ParseComments) if err != nil { if os.IsPermission(err) { diff --git a/pkgtree/pkgtree_test.go b/pkgtree/pkgtree_test.go index cb3c1383ad..2edaac8b8e 100644 --- a/pkgtree/pkgtree_test.go +++ b/pkgtree/pkgtree_test.go @@ -1153,6 +1153,26 @@ func TestListPackages(t *testing.T) { }, }, }, + "skip underscore": { + fileRoot: j("skip_"), + importRoot: "skip_", + out: PackageTree{ + ImportRoot: "skip_", + Packages: map[string]PackageOrErr{ + "skip_": { + P: Package{ + ImportPath: "skip_", + CommentPath: "", + Name: "skip", + Imports: []string{ + "github.com/sdboyer/gps", + "sort", + }, + }, + }, + }, + }, + }, // This case mostly exists for the PackageTree methods, but it does // cover a bit of range "varied": {