Implement APIv4 infrastructure (#5191)

* Implement APIv4 infrastructure

* Update parameter requirement functions per feedback
Этот коммит содержится в:
Joram Wilander
2017-01-30 08:30:02 -05:00
коммит произвёл GitHub
родитель 3e2f879b77
Коммит c01d9ad6cf
31 изменённых файлов: 1826 добавлений и 272 удалений

58
vendor/github.com/gorilla/mux/mux_test.go сгенерированный поставляемый
Просмотреть файл

@@ -1017,6 +1017,9 @@ func TestBuildVarsFunc(t *testing.T) {
func TestSubRouter(t *testing.T) {
subrouter1 := new(Route).Host("{v1:[a-z]+}.google.com").Subrouter()
subrouter2 := new(Route).PathPrefix("/foo/{v1}").Subrouter()
subrouter3 := new(Route).PathPrefix("/foo").Subrouter()
subrouter4 := new(Route).PathPrefix("/foo/bar").Subrouter()
subrouter5 := new(Route).PathPrefix("/{category}").Subrouter()
tests := []routeTest{
{
@@ -1057,6 +1060,61 @@ func TestSubRouter(t *testing.T) {
pathTemplate: `/foo/{v1}/baz/{v2}`,
shouldMatch: false,
},
{
route: subrouter3.Path("/"),
request: newRequest("GET", "http://localhost/foo/"),
vars: map[string]string{},
host: "",
path: "/foo/",
pathTemplate: `/foo/`,
shouldMatch: true,
},
{
route: subrouter3.Path(""),
request: newRequest("GET", "http://localhost/foo"),
vars: map[string]string{},
host: "",
path: "/foo",
pathTemplate: `/foo`,
shouldMatch: true,
},
{
route: subrouter4.Path("/"),
request: newRequest("GET", "http://localhost/foo/bar/"),
vars: map[string]string{},
host: "",
path: "/foo/bar/",
pathTemplate: `/foo/bar/`,
shouldMatch: true,
},
{
route: subrouter4.Path(""),
request: newRequest("GET", "http://localhost/foo/bar"),
vars: map[string]string{},
host: "",
path: "/foo/bar",
pathTemplate: `/foo/bar`,
shouldMatch: true,
},
{
route: subrouter5.Path("/"),
request: newRequest("GET", "http://localhost/baz/"),
vars: map[string]string{"category": "baz"},
host: "",
path: "/baz/",
pathTemplate: `/{category}/`,
shouldMatch: true,
},
{
route: subrouter5.Path(""),
request: newRequest("GET", "http://localhost/baz"),
vars: map[string]string{"category": "baz"},
host: "",
path: "/baz",
pathTemplate: `/{category}`,
shouldMatch: true,
},
}
for _, test := range tests {

2
vendor/github.com/gorilla/mux/route.go сгенерированный поставляемый
Просмотреть файл

@@ -153,7 +153,7 @@ func (r *Route) addRegexpMatcher(tpl string, matchHost, matchPrefix, matchQuery
}
r.regexp = r.getRegexpGroup()
if !matchHost && !matchQuery {
if len(tpl) == 0 || tpl[0] != '/' {
if tpl == "/" && (len(tpl) == 0 || tpl[0] != '/') {
return fmt.Errorf("mux: path must start with a slash, got %q", tpl)
}
if r.regexp.path != nil {