From 983df4421c9ca46703e5bd2075f76e2bf4b2f51a Mon Sep 17 00:00:00 2001 From: Phil Hughes <me@iamphill.com> Date: Mon, 7 Sep 2020 10:04:22 +0100 Subject: [PATCH] Fixed repository browser not working for branches with parentheses Closes https://gitlab.com/gitlab-org/gitlab/-/issues/212785 --- app/assets/javascripts/repository/router.js | 3 ++- ...85-fixRepositoryBrowserBranchWithParentheses.yml | 5 +++++ spec/frontend/repository/router_spec.js | 13 +++++++------ 3 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 changelogs/unreleased/ph-212785-fixRepositoryBrowserBranchWithParentheses.yml diff --git a/app/assets/javascripts/repository/router.js b/app/assets/javascripts/repository/router.js index c5646c3285063..38a596e229e5d 100644 --- a/app/assets/javascripts/repository/router.js +++ b/app/assets/javascripts/repository/router.js @@ -1,5 +1,6 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; +import { escapeRegExp } from 'lodash'; import { joinPaths } from '../lib/utils/url_utility'; import IndexPage from './pages/index.vue'; import TreePage from './pages/tree.vue'; @@ -27,7 +28,7 @@ export default function createRouter(base, baseRef) { { name: 'treePath', // Support without decoding as well just in case the ref doesn't need to be decoded - path: `(/-)?/tree/${baseRef}/:path*`, + path: `(/-)?/tree/${escapeRegExp(baseRef)}/:path*`, ...treePathRoute, }, { diff --git a/changelogs/unreleased/ph-212785-fixRepositoryBrowserBranchWithParentheses.yml b/changelogs/unreleased/ph-212785-fixRepositoryBrowserBranchWithParentheses.yml new file mode 100644 index 0000000000000..4ec1bfa62efb2 --- /dev/null +++ b/changelogs/unreleased/ph-212785-fixRepositoryBrowserBranchWithParentheses.yml @@ -0,0 +1,5 @@ +--- +title: Fixed repository browser not working with parentheses in branch name +merge_request: 41591 +author: +type: fixed diff --git a/spec/frontend/repository/router_spec.js b/spec/frontend/repository/router_spec.js index f2f3dda41d956..3c7dda05ca3d8 100644 --- a/spec/frontend/repository/router_spec.js +++ b/spec/frontend/repository/router_spec.js @@ -4,12 +4,13 @@ import createRouter from '~/repository/router'; describe('Repository router spec', () => { it.each` - path | branch | component | componentName - ${'/'} | ${'master'} | ${IndexPage} | ${'IndexPage'} - ${'/tree/master'} | ${'master'} | ${TreePage} | ${'TreePage'} - ${'/-/tree/master'} | ${'master'} | ${TreePage} | ${'TreePage'} - ${'/-/tree/master/app/assets'} | ${'master'} | ${TreePage} | ${'TreePage'} - ${'/-/tree/123/app/assets'} | ${'master'} | ${null} | ${'null'} + path | branch | component | componentName + ${'/'} | ${'master'} | ${IndexPage} | ${'IndexPage'} + ${'/tree/master'} | ${'master'} | ${TreePage} | ${'TreePage'} + ${'/tree/feat(test)'} | ${'feat(test)'} | ${TreePage} | ${'TreePage'} + ${'/-/tree/master'} | ${'master'} | ${TreePage} | ${'TreePage'} + ${'/-/tree/master/app/assets'} | ${'master'} | ${TreePage} | ${'TreePage'} + ${'/-/tree/123/app/assets'} | ${'master'} | ${null} | ${'null'} `('sets component as $componentName for path "$path"', ({ path, component, branch }) => { const router = createRouter('', branch); -- GitLab