diff --git a/lib/modules/datasource/postprocess-release.spec.ts b/lib/modules/datasource/postprocess-release.spec.ts index 3ec6de9abd8e99781d08d2cd935ba0b53294bacf..a8cacb3d92378e86f94146de89296af2817b92c2 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 ef4a34131fe46e1bc834365ffa87145002b944c2..b2ba55624557d86368fa21e0bd2672154a6632f6 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',