diff --git a/packages/react-router/modules/__tests__/matchPath-test.js b/packages/react-router/modules/__tests__/matchPath-test.js index 3fedf91b0a..7e8bd6a3ae 100644 --- a/packages/react-router/modules/__tests__/matchPath-test.js +++ b/packages/react-router/modules/__tests__/matchPath-test.js @@ -9,6 +9,23 @@ describe("matchPath", () => { }); }); + describe('with path=""', () => { + it('returns correct url at "/"', () => { + const path = ""; + const pathname = "/"; + const match = matchPath(pathname, path); + // TODO: why is match.url "/" instead of ""? + expect(match.url).toBe("/"); + }); + + it('returns correct url at "/somewhere/else"', () => { + const path = ""; + const pathname = "/somewhere/else"; + const match = matchPath(pathname, path); + expect(match.url).toBe(""); + }); + }); + describe('with path="/"', () => { it('returns correct url at "/"', () => { const path = "/"; diff --git a/packages/react-router/modules/matchPath.js b/packages/react-router/modules/matchPath.js index 4ebda30359..4d5b475bcf 100644 --- a/packages/react-router/modules/matchPath.js +++ b/packages/react-router/modules/matchPath.js @@ -35,7 +35,7 @@ function matchPath(pathname, options = {}) { const paths = [].concat(path); return paths.reduce((matched, path) => { - if (!path) return null; + if (!path && path !== "") return null; if (matched) return matched; const { regexp, keys } = compilePath(path, {