From 158fa38a5c7c3cedd482fc21e2f3fba8f308d472 Mon Sep 17 00:00:00 2001 From: Manuel Blechschmidt <manuel.blechschmidt@incentergy.de> Date: Thu, 29 Feb 2024 16:59:33 +0100 Subject: [PATCH] fix(datasource/go): don't strip `api/` from `packageName` on gitlab (#27635) Co-authored-by: Michael Kriese <michael.kriese@visualon.de> --- ...go-get-gitlab-ee-private-subgroup-api.html | 12 ++++++++++ lib/modules/datasource/go/base.spec.ts | 23 +++++++++++++++++++ lib/modules/datasource/go/base.ts | 2 +- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 lib/modules/datasource/go/__fixtures__/go-get-gitlab-ee-private-subgroup-api.html diff --git a/lib/modules/datasource/go/__fixtures__/go-get-gitlab-ee-private-subgroup-api.html b/lib/modules/datasource/go/__fixtures__/go-get-gitlab-ee-private-subgroup-api.html new file mode 100644 index 0000000000..fcbfae005d --- /dev/null +++ b/lib/modules/datasource/go/__fixtures__/go-get-gitlab-ee-private-subgroup-api.html @@ -0,0 +1,12 @@ +<html> + +<head> + <meta name="go-import" + content="my.custom.domain/group/subgroup-api/myrepo git https://my.custom.domain/group/subgroup-api/myrepo.git" /> + <meta name="go-source" + content="my.custom.domain/group/subgroup-api/myrepo https://my.custom.domain/group/subgroup-api/myrepo https://my.custom.domain/group/subgroup-api/myrepo/-/tree/master{/dir} https://my.custom.domain/group/subgroup-api/myrepo/-/blob/master{/dir}/{file}#L{line}" /> +</head> + +<body>go get https://my.custom.domain/group/subgroup-api/myrepo</body> + +</html> diff --git a/lib/modules/datasource/go/base.spec.ts b/lib/modules/datasource/go/base.spec.ts index 3c8a08400d..cb406e63e4 100644 --- a/lib/modules/datasource/go/base.spec.ts +++ b/lib/modules/datasource/go/base.spec.ts @@ -240,6 +240,29 @@ describe('modules/datasource/go/base', () => { }); }); + it('supports GitLab EE deps in private subgroup with api/ as part of packageName and api/v4 as part of endpoint', async () => { + GlobalConfig.set({ endpoint: 'https://my.custom.domain/api/v4' }); + + hostRules.hostType.mockReturnValue('gitlab'); + httpMock + .scope('https://my.custom.domain') + .get('/group/subgroup-api/myrepo?go-get=1') + .reply( + 200, + Fixtures.get('go-get-gitlab-ee-private-subgroup-api.html'), + ); + + const res = await BaseGoDatasource.getDatasource( + 'my.custom.domain/group/subgroup-api/myrepo', + ); + + expect(res).toEqual({ + datasource: GitlabTagsDatasource.id, + packageName: 'group/subgroup-api/myrepo', + registryUrl: 'https://my.custom.domain/', + }); + }); + it('supports GitLab EE deps in subgroup with version', async () => { hostRules.hostType.mockReturnValue('gitlab'); httpMock diff --git a/lib/modules/datasource/go/base.ts b/lib/modules/datasource/go/base.ts index 375987839b..3bde8e040f 100644 --- a/lib/modules/datasource/go/base.ts +++ b/lib/modules/datasource/go/base.ts @@ -184,7 +184,7 @@ export class BaseGoDatasource { endpoint, ); - if (endpointPrefix) { + if (endpointPrefix && endpointPrefix[1] !== 'api/') { packageName = packageName.replace(endpointPrefix[1], ''); } -- GitLab