From ad7f4df9a771e31b52b986710e6b5905f3b553a6 Mon Sep 17 00:00:00 2001 From: ReneWerner87 Date: Wed, 2 Sep 2020 20:59:42 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A6=9F=20Fix=20star=20routes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- router.go | 4 +++- router_test.go | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/router.go b/router.go index 91674b6943..bd26076cd7 100644 --- a/router.go +++ b/router.go @@ -59,7 +59,9 @@ func (r *Route) match(path, original string) (match bool, values []string) { // '*' wildcard matches any path } else if r.star { values := getAllocFreeParams(1) - values[0] = original[1:] + if len(original) > 1 { + values[0] = original[1:] + } return true, values } // Does this route have parameters diff --git a/router_test.go b/router_test.go index efe507f790..426ca2feab 100644 --- a/router_test.go +++ b/router_test.go @@ -77,6 +77,16 @@ func Test_Route_Match_Star(t *testing.T) { body, err = ioutil.ReadAll(resp.Body) utils.AssertEqual(t, nil, err, "app.Test(req)") utils.AssertEqual(t, "test", getString(body)) + + // without parameter + route := Route{ + star: true, + path: "/*", + routeParser: routeParser{}, + } + match, params := route.match("", "") + utils.AssertEqual(t, true, match) + utils.AssertEqual(t, []string{""}, params) } func Test_Route_Match_Root(t *testing.T) {