From c52b3c80b1e12ab093799eda71363ef73da56769 Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Wed, 6 Mar 2024 20:49:17 +0000 Subject: [PATCH] integration: add some failing tests for defaultScmResolveUrl Discovered some cases with SCM URL resolution that don't appear to work as intended. This commit adds some new failing unit tests to demonstrate the problem, as well as a few new cases that pass to round out the area of the suite. Signed-off-by: MT Lewis --- packages/integration/src/helpers.test.ts | 94 ++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/packages/integration/src/helpers.test.ts b/packages/integration/src/helpers.test.ts index 7468c83bc6..72ccd53061 100644 --- a/packages/integration/src/helpers.test.ts +++ b/packages/integration/src/helpers.test.ts @@ -116,6 +116,82 @@ describe('defaultScmResolveUrl', () => { ); }); + it('works for the root path', () => { + expect( + defaultScmResolveUrl({ + url: '/', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/', + ); + + expect( + defaultScmResolveUrl({ + url: '/', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder/', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/', + ); + + expect( + defaultScmResolveUrl({ + url: '/', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder/a.yaml', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/', + ); + + expect( + defaultScmResolveUrl({ + url: '/', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder/a.yaml?at=master', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/?at=master', + ); + }); + + it('works for files in the repo root', () => { + expect( + defaultScmResolveUrl({ + url: '/b.yaml', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/b.yaml', + ); + + expect( + defaultScmResolveUrl({ + url: '/b.yaml', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder/', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/b.yaml', + ); + + expect( + defaultScmResolveUrl({ + url: '/b.yaml', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder/a.yaml', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/b.yaml', + ); + + expect( + defaultScmResolveUrl({ + url: '/b.yaml', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder/a.yaml?at=master', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/b.yaml?at=master', + ); + }); + it('works for absolute paths and retains query params', () => { expect( defaultScmResolveUrl({ @@ -126,6 +202,24 @@ describe('defaultScmResolveUrl', () => { 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/other/b.yaml', ); + expect( + defaultScmResolveUrl({ + url: '/other/b.yaml', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/other/b.yaml', + ); + + expect( + defaultScmResolveUrl({ + url: '/other/b.yaml', + base: 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/folder/', + }), + ).toBe( + 'https://gitlab.com/groupA/teams/teamA/subgroupA/repoA/-/blob/branch/other/b.yaml', + ); + expect( defaultScmResolveUrl({ url: '/other/b.yaml',