diff --git a/lib/versioning/hex/index.spec.ts b/lib/versioning/hex/index.spec.ts index 6481de5b3835bb..2c3b66bfb129e7 100644 --- a/lib/versioning/hex/index.spec.ts +++ b/lib/versioning/hex/index.spec.ts @@ -198,7 +198,7 @@ describe(getName(__filename), () => { currentVersion: '1.2.3', newVersion: '2.0.7', }) - ).toEqual('>= 1.0.0 or <= 2.0.7'); + ).toEqual('>= 1.0.0 or <= 2.0.0'); expect( hexScheme.getNewValue({ currentValue: '>= 1.0.0 or <= 2.0.0', diff --git a/lib/versioning/npm/index.spec.ts b/lib/versioning/npm/index.spec.ts index 09b1d752137978..73e5f5bd00a3a5 100644 --- a/lib/versioning/npm/index.spec.ts +++ b/lib/versioning/npm/index.spec.ts @@ -325,4 +325,38 @@ describe('semver.getNewValue()', () => { }) ).toEqual('>= 1.0.1 < 2'); }); + it('widens', () => { + expect( + semver.getNewValue({ + currentValue: '<=1.2.3', + rangeStrategy: 'widen', + currentVersion: '1.0.0', + newVersion: '1.2.3', + }) + ).toEqual('<=1.2.3'); + expect( + semver.getNewValue({ + currentValue: '<=1.2.3', + rangeStrategy: 'widen', + currentVersion: '1.0.0', + newVersion: '1.2.4', + }) + ).toEqual('<=1.2.4'); + expect( + semver.getNewValue({ + currentValue: '>=1.2.3', + rangeStrategy: 'widen', + currentVersion: '1.0.0', + newVersion: '1.2.3', + }) + ).toEqual('>=1.2.3'); + expect( + semver.getNewValue({ + currentValue: '>=1.2.3', + rangeStrategy: 'widen', + currentVersion: '1.0.0', + newVersion: '1.2.1', + }) + ).toEqual('>=1.2.3 || 1.2.1'); + }); }); diff --git a/lib/versioning/npm/range.ts b/lib/versioning/npm/range.ts index 46cfcfcdcc14bb..8bccb58811931f 100644 --- a/lib/versioning/npm/range.ts +++ b/lib/versioning/npm/range.ts @@ -75,6 +75,9 @@ export function getNewValue({ const parsedRange = parseRange(currentValue); const element = parsedRange[parsedRange.length - 1]; if (rangeStrategy === 'widen') { + if (satisfies(newVersion, currentValue)) { + return currentValue; + } const newValue = getNewValue({ currentValue, rangeStrategy: 'replace',