Merge pull request #251 from garyburd/issue250
Imporve handling of testdata directories
diff --git a/gddo-server/crawl.go b/gddo-server/crawl.go
index fb3daa0..d0a0645 100644
--- a/gddo-server/crawl.go
+++ b/gddo-server/crawl.go
@@ -8,6 +8,7 @@
import (
"log"
+ "regexp"
"strings"
"time"
@@ -15,6 +16,8 @@
"github.com/golang/gddo/gosrc"
)
+var testdataPat = regexp.MustCompile(`/testdata(?:/|$)`)
+
// crawlDoc fetches the package documentation from the VCS and updates the database.
func crawlDoc(source string, importPath string, pdoc *doc.Package, hasSubdirs bool, nextCrawl time.Time) (*doc.Package, error) {
message := []interface{}{source}
@@ -45,6 +48,9 @@
} else if blocked, e := db.IsBlocked(importPath); blocked && e == nil {
pdoc = nil
err = gosrc.NotFoundError{Message: "blocked."}
+ } else if testdataPat.MatchString(importPath) {
+ pdoc = nil
+ err = gosrc.NotFoundError{Message: "testdata."}
} else {
var pdocNew *doc.Package
pdocNew, err = doc.Get(httpClient, importPath, etag)
diff --git a/gosrc/path.go b/gosrc/path.go
index e10529a..6575df8 100644
--- a/gosrc/path.go
+++ b/gosrc/path.go
@@ -18,7 +18,7 @@
var validPathElement = regexp.MustCompile(`^[-A-Za-z0-9~+_][-A-Za-z0-9_.]*$`)
func isValidPathElement(s string) bool {
- return validPathElement.MatchString(s) && s != "testdata"
+ return validPathElement.MatchString(s)
}
// IsValidRemotePath returns true if importPath is structurally valid for "go get".
diff --git a/gosrc/path_test.go b/gosrc/path_test.go
index 8cad7a7..be9fc0f 100644
--- a/gosrc/path_test.go
+++ b/gosrc/path_test.go
@@ -28,7 +28,6 @@
".bar",
"favicon.ico",
"exmpple.com",
- "github.com/user/repo/testdata/x",
"github.com/user/repo/.ignore/x",
}