From 9fd8aff56e400d0f07c62d597d8e36b1b37f8f0a Mon Sep 17 00:00:00 2001 From: Philipp Meinen Date: Fri, 21 Aug 2015 20:57:53 +0200 Subject: [PATCH] tests: make path assertions aware of vendoring 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. --- context_test.go | 2 +- debug_test.go | 2 +- gin_test.go | 30 ++++++++++++++++++++---------- utils_test.go | 2 +- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/context_test.go b/context_test.go index efdba7b..9f39c39 100644 --- a/context_test.go +++ b/context_test.go @@ -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) { diff --git a/debug_test.go b/debug_test.go index 7a352e6..e4da43b 100644 --- a/debug_test.go +++ b/debug_test.go @@ -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) { diff --git a/gin_test.go b/gin_test.go index b3b0eb6..15f480e 100644 --- a/gin_test.go +++ b/gin_test.go @@ -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) {} diff --git a/utils_test.go b/utils_test.go index 11a5b68..599172f 100644 --- a/utils_test.go +++ b/utils_test.go @@ -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() {