From b8835e4d0c61e1703bcf8ed015b932bb7bfa225a Mon Sep 17 00:00:00 2001 From: Sergei Zharinov <zharinov@users.noreply.github.com> Date: Thu, 7 Nov 2024 17:09:19 -0300 Subject: [PATCH] fix: Avoid rejecting releases when `extractVersion` is used (#32376) --- .../datasource/postprocess-release.spec.ts | 25 +++++++++++++++++++ lib/modules/datasource/postprocess-release.ts | 14 +++++++++++ 2 files changed, 39 insertions(+) diff --git a/lib/modules/datasource/postprocess-release.spec.ts b/lib/modules/datasource/postprocess-release.spec.ts index 3ec6de9abd..a8cacb3d92 100644 --- a/lib/modules/datasource/postprocess-release.spec.ts +++ b/lib/modules/datasource/postprocess-release.spec.ts @@ -124,6 +124,31 @@ describe('modules/datasource/postprocess-release', () => { expect(release).toBeNull(); }); + it('preserves rejected release when `extractVersion` was set', async () => { + const releaseOrig: Release = { version: '1.2.3' }; + + class SomeDatasource extends DummyDatasource { + override postprocessRelease( + _config: PostprocessReleaseConfig, + _release: Release, + ): Promise<PostprocessReleaseResult> { + return Promise.resolve('reject'); + } + } + getDatasourceFor.mockReturnValueOnce(new SomeDatasource()); + + const release = await postprocessRelease( + { + datasource: 'some-datasource', + packageName: 'some-package', + extractVersion: '^(?<version>\\d+)$', + }, + releaseOrig, + ); + + expect(release).toBe(releaseOrig); + }); + it('falls back when error was thrown', async () => { const releaseOrig: Release = { version: '1.2.3' }; diff --git a/lib/modules/datasource/postprocess-release.ts b/lib/modules/datasource/postprocess-release.ts index ef4a34131f..b2ba556245 100644 --- a/lib/modules/datasource/postprocess-release.ts +++ b/lib/modules/datasource/postprocess-release.ts @@ -49,6 +49,20 @@ export async function postprocessRelease( ); if (result === 'reject') { + if (config.extractVersion) { + logger.debug( + { + datasource, + packageName, + registryUrl, + version: release.version, + extractVersion: config.extractVersion, + }, + 'Rejected release combined with `extractVersion`: preserving the release', + ); + return release; + } + logger.debug( { datasource, packageName, registryUrl, version: release.version }, 'Rejected release', -- GitLab