Skip to content

Commit

Permalink
tests: make path assertions aware of vendoring
Browse files Browse the repository at this point in the history
The path of a package can change in a situation where
dependency vendoring is in use.
This change modifies gin's unit tests to allow such paths.
  • Loading branch information
phicode committed Aug 22, 2015
1 parent 704d690 commit 9fd8aff
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 13 deletions.
2 changes: 1 addition & 1 deletion context_test.go
Expand Up @@ -161,7 +161,7 @@ func TestContextHandlerName(t *testing.T) {
c, _, _ := createTestContext()
c.handlers = HandlersChain{func(c *Context) {}, handlerNameTest}

assert.Equal(t, c.HandlerName(), "github.com/gin-gonic/gin.handlerNameTest")
assert.Regexp(t, "^(.*/vendor/)?github.com/gin-gonic/gin.handlerNameTest$", c.HandlerName())
}

func handlerNameTest(c *Context) {
Expand Down
2 changes: 1 addition & 1 deletion debug_test.go
Expand Up @@ -63,7 +63,7 @@ func TestDebugPrintRoutes(t *testing.T) {
defer teardown()

debugPrintRoute("GET", "/path/to/route/:param", HandlersChain{func(c *Context) {}, handlerNameTest})
assert.Equal(t, w.String(), "[GIN-debug] GET /path/to/route/:param --> github.com/gin-gonic/gin.handlerNameTest (2 handlers)\n")
assert.Regexp(t, `^\[GIN-debug\] GET /path/to/route/:param --> (.*/vendor/)?github.com/gin-gonic/gin.handlerNameTest \(2 handlers\)\n$`, w.String())
}

func setup(w io.Writer) {
Expand Down
30 changes: 20 additions & 10 deletions gin_test.go
Expand Up @@ -214,32 +214,42 @@ func TestListOfRoutes(t *testing.T) {
list := router.Routes()

assert.Len(t, list, 7)
assert.Contains(t, list, RouteInfo{
assertRoutePresent(t, list, RouteInfo{
Method: "GET",
Path: "/favicon.ico",
Handler: "github.com/gin-gonic/gin.handler_test1",
Handler: "^(.*/vendor/)?github.com/gin-gonic/gin.handler_test1$",
})
assert.Contains(t, list, RouteInfo{
assertRoutePresent(t, list, RouteInfo{
Method: "GET",
Path: "/",
Handler: "github.com/gin-gonic/gin.handler_test1",
Handler: "^(.*/vendor/)?github.com/gin-gonic/gin.handler_test1$",
})
assert.Contains(t, list, RouteInfo{
assertRoutePresent(t, list, RouteInfo{
Method: "GET",
Path: "/users/",
Handler: "github.com/gin-gonic/gin.handler_test2",
Handler: "^(.*/vendor/)?github.com/gin-gonic/gin.handler_test2$",
})
assert.Contains(t, list, RouteInfo{
assertRoutePresent(t, list, RouteInfo{
Method: "GET",
Path: "/users/:id",
Handler: "github.com/gin-gonic/gin.handler_test1",
Handler: "^(.*/vendor/)?github.com/gin-gonic/gin.handler_test1$",
})
assert.Contains(t, list, RouteInfo{
assertRoutePresent(t, list, RouteInfo{
Method: "POST",
Path: "/users/:id",
Handler: "github.com/gin-gonic/gin.handler_test2",
Handler: "^(.*/vendor/)?github.com/gin-gonic/gin.handler_test2$",
})
}

func assertRoutePresent(t *testing.T, gotRoutes RoutesInfo, wantRoute RouteInfo) {
for _, gotRoute := range gotRoutes {
if gotRoute.Path == wantRoute.Path && gotRoute.Method == wantRoute.Method {
assert.Regexp(t, wantRoute.Path, gotRoute.Path)
return
}
}
t.Errorf("route not found: %v", wantRoute)
}

func handler_test1(c *Context) {}
func handler_test2(c *Context) {}
2 changes: 1 addition & 1 deletion utils_test.go
Expand Up @@ -78,7 +78,7 @@ func TestFilterFlags(t *testing.T) {
}

func TestFunctionName(t *testing.T) {
assert.Equal(t, nameOfFunction(somefunction), "github.com/gin-gonic/gin.somefunction")
assert.Regexp(t, `^(.*/vendor/)?github.com/gin-gonic/gin.somefunction$`, nameOfFunction(somefunction))
}

func somefunction() {
Expand Down

0 comments on commit 9fd8aff

Please sign in to comment.