}
}
+var internalPkg = regexp.MustCompile(`(^|/)internal($|/)`)
+
func main() {
flag.Parse()
if err != nil {
log.Fatal(err)
}
- pkgNames = strings.Fields(string(stds))
+ for _, pkg := range strings.Fields(string(stds)) {
+ if !internalPkg.MatchString(pkg) {
+ pkgNames = append(pkgNames, pkg)
+ }
+ }
}
var featureCtx = make(map[string]map[string]bool) // feature -> context name -> true
}
}
+func TestSkipInternal(t *testing.T) {
+ tests := []struct {
+ pkg string
+ want bool
+ }{
+ {"net/http", true},
+ {"net/http/internal-foo", true},
+ {"net/http/internal", false},
+ {"net/http/internal/bar", false},
+ {"internal/foo", false},
+ {"internal", false},
+ }
+ for _, tt := range tests {
+ got := !internalPkg.MatchString(tt.pkg)
+ if got != tt.want {
+ t.Errorf("%s is internal = %v; want %v", tt.pkg, got, tt.want)
+ }
+ }
+}
+
func BenchmarkAll(b *testing.B) {
stds, err := exec.Command("go", "list", "std").Output()
if err != nil {