From ad9d2b971eef44603fc84ce5d1452b612862553c Mon Sep 17 00:00:00 2001 From: RahulGautamSingh Date: Thu, 9 May 2024 11:52:39 +0545 Subject: [PATCH] fix(versioning/pep440): log debug message if `newVersion` is excluded from range (#28950) --- lib/modules/versioning/pep440/range.spec.ts | 47 ++++++++++++++------- lib/modules/versioning/pep440/range.ts | 13 ++++++ 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/lib/modules/versioning/pep440/range.spec.ts b/lib/modules/versioning/pep440/range.spec.ts index 193d558fd6749b..5c913f39dc8971 100644 --- a/lib/modules/versioning/pep440/range.spec.ts +++ b/lib/modules/versioning/pep440/range.spec.ts @@ -1,17 +1,34 @@ -import { checkRangeAndRemoveUnnecessaryRangeLimit } from './range'; +import { logger } from '../../../logger'; +import { checkRangeAndRemoveUnnecessaryRangeLimit, getNewValue } from './range'; -it.each` - rangeInput | newVersion | expected - ${'==4.1.*,>=3.2.2'} | ${'4.1.1'} | ${'==4.1.*'} - ${'==4.0.*,>=3.2.2'} | ${'4.0.0'} | ${'==4.0.*'} - ${'==7.2.*'} | ${'7.2.0'} | ${'==7.2.*'} -`( - 'checkRange("$rangeInput, "$newVersion"") === "$expected"', - ({ rangeInput, newVersion, expected }) => { - const res = checkRangeAndRemoveUnnecessaryRangeLimit( - rangeInput, - newVersion, +describe('modules/versioning/pep440/range', () => { + it.each` + rangeInput | newVersion | expected + ${'==4.1.*,>=3.2.2'} | ${'4.1.1'} | ${'==4.1.*'} + ${'==4.0.*,>=3.2.2'} | ${'4.0.0'} | ${'==4.0.*'} + ${'==7.2.*'} | ${'7.2.0'} | ${'==7.2.*'} + `( + 'checkRange("$rangeInput, "$newVersion"") === "$expected"', + ({ rangeInput, newVersion, expected }) => { + const res = checkRangeAndRemoveUnnecessaryRangeLimit( + rangeInput, + newVersion, + ); + expect(res).toEqual(expected); + }, + ); + + it('returns null without warning if new version is excluded from range', () => { + const res = getNewValue({ + currentValue: '>=1.25.0,<2,!=1.32.0', + rangeStrategy: 'auto', + newVersion: '1.32.0', + currentVersion: '1.25.0', + }); + expect(res).toBeNull(); + expect(logger.debug).toHaveBeenCalledWith( + 'Cannot calculate new value as the newVersion:`1.32.0` is excluded from range: `>=1.25.0,<2,!=1.32.0`', ); - expect(res).toEqual(expected); - }, -); + expect(logger.warn).not.toHaveBeenCalled(); + }); +}); diff --git a/lib/modules/versioning/pep440/range.ts b/lib/modules/versioning/pep440/range.ts index 0c94a3c4c894a8..ea36bb335bfc18 100644 --- a/lib/modules/versioning/pep440/range.ts +++ b/lib/modules/versioning/pep440/range.ts @@ -129,6 +129,18 @@ export function getNewValue({ return null; } + // return early if newVersion is excluded from range + if ( + ranges.some( + (range) => range.operator === '!=' && range.version === newVersion, + ) + ) { + logger.debug( + `Cannot calculate new value as the newVersion:\`${newVersion}\` is excluded from range: \`${currentValue}\``, + ); + return null; + } + switch (rangeStrategy) { case 'auto': case 'replace': @@ -191,6 +203,7 @@ export function getNewValue({ newVersion, ); + // istanbul ignore if if (!satisfies(newVersion, checkedResult)) { // we failed at creating the range logger.warn(