]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/api: ignore internal packages
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 21 Jul 2014 19:06:30 +0000 (12:06 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 21 Jul 2014 19:06:30 +0000 (12:06 -0700)
We might want to add a go/build.IsInternal(pkg string) bool
later, but this works for now.

LGTM=dave, rsc
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/113300044

src/cmd/api/goapi.go
src/cmd/api/goapi_test.go

index 508056a937daf244395de15446db8fd9bb5bcf14..007601328cf21e390ca228f5abfdf1d61be15dd1 100644 (file)
@@ -107,6 +107,8 @@ func setContexts() {
        }
 }
 
+var internalPkg = regexp.MustCompile(`(^|/)internal($|/)`)
+
 func main() {
        flag.Parse()
 
@@ -132,7 +134,11 @@ func main() {
                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
index b909c32b342dca929fbf76ecf60ff58925feefaa..cb68769c8ff4a65cf3fa35c19d2111d4f0075dd9 100644 (file)
@@ -142,6 +142,26 @@ func TestCompareAPI(t *testing.T) {
        }
 }
 
+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 {