From fe2ed94b44ea6031bf0bcab8cfc5f8d293b8278a Mon Sep 17 00:00:00 2001 From: ajhcpt <andrew.henderson79@gmail.com> Date: Tue, 27 Sep 2022 14:46:41 +0200 Subject: [PATCH] feat(go): Continue processing if an error occurs trying to get sourceUrl (#17981) --- .../datasource/go/releases-goproxy.spec.ts | 26 +++++++++++++++++++ lib/modules/datasource/go/releases-goproxy.ts | 14 +++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/lib/modules/datasource/go/releases-goproxy.spec.ts b/lib/modules/datasource/go/releases-goproxy.spec.ts index e200726491..952971e260 100644 --- a/lib/modules/datasource/go/releases-goproxy.spec.ts +++ b/lib/modules/datasource/go/releases-goproxy.spec.ts @@ -515,5 +515,31 @@ describe('modules/datasource/go/releases-goproxy', () => { expect(res).toBeNull(); }); + + it('handles soureUrl fetch errors', async () => { + process.env.GOPROXY = baseUrl; + + httpMock + .scope(`${baseUrl}/custom.com/lib/btree`) + .get('/@v/list') + .reply(200, ['v1.0.0 2018-08-13T15:31:12Z', 'v1.0.1'].join('\n')) + .get('/@v/v1.0.1.info') + .reply(200, { Version: 'v1.0.1', Time: '2019-10-16T16:15:28Z' }); + httpMock + .scope('https://custom.com/lib/btree') + .get('?go-get=1') + .reply(500); + + const res = await datasource.getReleases({ + packageName: 'custom.com/lib/btree', + }); + + expect(res).toEqual({ + releases: [ + { releaseTimestamp: '2018-08-13T15:31:12Z', version: 'v1.0.0' }, + { releaseTimestamp: '2019-10-16T16:15:28Z', version: 'v1.0.1' }, + ], + }); + }); }); }); diff --git a/lib/modules/datasource/go/releases-goproxy.ts b/lib/modules/datasource/go/releases-goproxy.ts index 405bcb801a..d1b468c59d 100644 --- a/lib/modules/datasource/go/releases-goproxy.ts +++ b/lib/modules/datasource/go/releases-goproxy.ts @@ -68,9 +68,17 @@ export class GoProxyDatasource extends Datasource { } }); if (releases.length) { - const datasource = await BaseGoDatasource.getDatasource(packageName); - const sourceUrl = getSourceUrl(datasource); - result = { releases, sourceUrl }; + try { + const datasource = await BaseGoDatasource.getDatasource( + packageName + ); + const sourceUrl = getSourceUrl(datasource); + result = { releases, sourceUrl }; + } catch (err) { + logger.trace({ err }, `Can't get datasource for ${packageName}`); + result = { releases }; + } + break; } } catch (err) { -- GitLab