diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.js b/polygerrit-ui/app/elements/core/gr-router/gr-router.js index 9ceb3d6476..dfaf66c998 100644 --- a/polygerrit-ui/app/elements/core/gr-router/gr-router.js +++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.js @@ -324,14 +324,10 @@ if (!weblinks || !weblinks.length) return []; return weblinks.filter(weblink => !this._isDirectCommit(weblink)).map( ({name, url}) => { - if (url.startsWith('https:') || url.startsWith('http:')) { - return {name, url}; - } else { - return { - name, - url: `../../${url}`, - }; + if (!url.startsWith('https:') && !url.startsWith('http:')) { + url = this.getBaseUrl() + (url.startsWith('/') ? '' : '/') + url; } + return {name, url}; }); }, diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html index 763e162b6c..f22170684f 100644 --- a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html +++ b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html @@ -44,6 +44,23 @@ limitations under the License. teardown(() => { sandbox.restore(); }); + test('_getChangeWeblinks', () => { + sandbox.stub(element, '_isDirectCommit').returns(false); + sandbox.stub(element, 'getBaseUrl').returns('base'); + const link = {name: 'test', url: 'test/url'}; + const mapLinksToConfig = weblink => ({options: {weblinks: [weblink]}}); + assert.deepEqual(element._getChangeWeblinks(mapLinksToConfig(link))[0], + {name: 'test', url: 'base/test/url'}); + + link.url = '/' + link.url; + assert.deepEqual(element._getChangeWeblinks(mapLinksToConfig(link))[0], + {name: 'test', url: 'base/test/url'}); + + link.url = 'https:/' + link.url; + assert.deepEqual(element._getChangeWeblinks(mapLinksToConfig(link))[0], + {name: 'test', url: 'https://test/url'}); + }); + test('_getHashFromCanonicalPath', () => { let url = '/foo/bar'; let hash = element._getHashFromCanonicalPath(url);