From 45d0dcf4923504a8127ebe480d7ca2de84095e71 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Mon, 11 Jun 2018 05:52:46 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20pass=20auto=E2=80=99d=20rangeStrategy=20?= =?UTF-8?q?to=20getNewValue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2111 --- lib/versioning/pep440/range.js | 6 +- lib/versioning/semver-composer/index.js | 10 ++- lib/versioning/semver/range.js | 8 +- .../repository/process/lookup/index.js | 14 ++- .../repository/process/lookup/rollback.js | 2 +- test/versioning/pep440.spec.js | 12 +-- test/versioning/semver-composer.spec.js | 48 +++++------ test/versioning/semver.spec.js | 86 +++++-------------- 8 files changed, 76 insertions(+), 110 deletions(-) diff --git a/lib/versioning/pep440/range.js b/lib/versioning/pep440/range.js index 5e9cb17f5f..dbfa449b2a 100644 --- a/lib/versioning/pep440/range.js +++ b/lib/versioning/pep440/range.js @@ -2,10 +2,10 @@ module.exports = { getNewValue, }; -function getNewValue(config, fromVersion, toVersion) { - if (config.rangeStrategy === 'pin' || config.currentValue.startsWith('==')) { +function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { + if (rangeStrategy === 'pin' || currentValue.startsWith('==')) { return '==' + toVersion; } - logger.warn('Unsupported currentValue: ' + config.currentValue); + logger.warn('Unsupported currentValue: ' + currentValue); return toVersion; } diff --git a/lib/versioning/semver-composer/index.js b/lib/versioning/semver-composer/index.js index 0148e9f0b2..67d773c563 100644 --- a/lib/versioning/semver-composer/index.js +++ b/lib/versioning/semver-composer/index.js @@ -26,13 +26,17 @@ const maxSatisfyingVersion = (versions, range) => const minSatisfyingVersion = (versions, range) => semver.minSatisfyingVersion(versions, composer2npm(range)); -function getNewValue(config, fromVersion, toVersion) { - const { currentValue } = config; +function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { if ( semver.isValid(currentValue) && composer2npm(currentValue) === currentValue ) { - return semver.getNewValue(config, fromVersion, toVersion); + return semver.getNewValue( + currentValue, + rangeStrategy, + fromVersion, + toVersion + ); } const toMajor = semver.getMajor(toVersion); const toMinor = semver.getMinor(toVersion); diff --git a/lib/versioning/semver/range.js b/lib/versioning/semver/range.js index 8a7bf46597..ce3e62b2ee 100644 --- a/lib/versioning/semver/range.js +++ b/lib/versioning/semver/range.js @@ -5,8 +5,7 @@ module.exports = { getNewValue, }; -function getNewValue(config, fromVersion, toVersion) { - const { currentValue, rangeStrategy } = config; +function getNewValue(currentValue, rangeStrategy, fromVersion, toVersion) { if (rangeStrategy === 'pin' || isVersion(currentValue)) { return toVersion; } @@ -14,7 +13,8 @@ function getNewValue(config, fromVersion, toVersion) { const element = parsedRange[parsedRange.length - 1]; if (rangeStrategy === 'widen') { const newValue = getNewValue( - { ...config, rangeStrategy: 'replace' }, + currentValue, + 'replace', fromVersion, toVersion ); @@ -40,7 +40,7 @@ function getNewValue(config, fromVersion, toVersion) { } // console.log(range); // Simple range - if (config.rangeStrategy === 'bump') { + if (rangeStrategy === 'bump') { if (parsedRange.length === 1) { if (element.operator === '^') { const split = currentValue.split('.'); diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index 3609e99e44..0b314fa1c0 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -74,7 +74,12 @@ async function lookupUpdates(config) { updates.push({ type: 'pin', isPin: true, - newValue: getNewValue(config, fromVersion, fromVersion), + newValue: getNewValue( + currentValue, + rangeStrategy, + fromVersion, + fromVersion + ), newMajor: getMajor(fromVersion), }); } @@ -91,7 +96,12 @@ async function lookupUpdates(config) { const buckets = {}; for (const toVersion of filteredVersions) { const update = { fromVersion, toVersion }; - update.newValue = getNewValue(config, fromVersion, toVersion); + update.newValue = getNewValue( + currentValue, + rangeStrategy, + fromVersion, + toVersion + ); if (!update.newValue || update.newValue === currentValue) { continue; // eslint-disable-line no-continue } diff --git a/lib/workers/repository/process/lookup/rollback.js b/lib/workers/repository/process/lookup/rollback.js index c62cef0a3c..91506c4016 100644 --- a/lib/workers/repository/process/lookup/rollback.js +++ b/lib/workers/repository/process/lookup/rollback.js @@ -35,7 +35,7 @@ function getRollbackUpdate(config, versions) { lessThanVersions.sort(sortVersions); const toVersion = lessThanVersions.pop(); let fromVersion; - const newValue = getNewValue(config, fromVersion, toVersion); + const newValue = getNewValue(currentValue, 'replace', fromVersion, toVersion); return { type: 'rollback', branchName: diff --git a/test/versioning/pep440.spec.js b/test/versioning/pep440.spec.js index df6ec7d434..83998bb82f 100644 --- a/test/versioning/pep440.spec.js +++ b/test/versioning/pep440.spec.js @@ -80,13 +80,13 @@ describe('pep440.minSatisfyingVersion(versions, range)', () => { describe('pep440.getNewValue()', () => { it('returns double equals', () => { - expect( - pep440.getNewValue({ currentValue: '==1.0.0' }, '1.0.0', '1.0.1') - ).toBe('==1.0.1'); + expect(pep440.getNewValue('==1.0.0', 'replace', '1.0.0', '1.0.1')).toBe( + '==1.0.1' + ); }); it('returns version', () => { - expect( - pep440.getNewValue({ currentValue: '>=1.0.0' }, '1.0.0', '1.0.1') - ).toBe('1.0.1'); + expect(pep440.getNewValue('>=1.0.0', 'replace', '1.0.0', '1.0.1')).toBe( + '1.0.1' + ); }); }); diff --git a/test/versioning/semver-composer.spec.js b/test/versioning/semver-composer.spec.js index 7cd77f7195..637818cade 100644 --- a/test/versioning/semver-composer.spec.js +++ b/test/versioning/semver-composer.spec.js @@ -62,41 +62,33 @@ describe('semver.matches()', () => { }); describe('semver.getNewValue()', () => { it('bumps short caret to same', () => { - expect( - semver.getNewValue( - { currentValue: '^1.0', rangeStrategy: 'bump' }, - '1.0.0', - '1.0.7' - ) - ).toEqual('^1.0'); + expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.0.7')).toEqual( + '^1.0' + ); }); it('handles tilde zero', () => { - expect( - semver.getNewValue({ currentValue: '~0.2' }, '0.2.0', '0.3.0') - ).toEqual('~0.3'); - expect( - semver.getNewValue({ currentValue: '~0.2' }, '0.2.0', '1.1.0') - ).toEqual('~1.0'); + expect(semver.getNewValue('~0.2', 'replace', '0.2.0', '0.3.0')).toEqual( + '~0.3' + ); + expect(semver.getNewValue('~0.2', 'replace', '0.2.0', '1.1.0')).toEqual( + '~1.0' + ); }); it('handles tilde major', () => { - expect( - semver.getNewValue({ currentValue: '~4' }, '4.0.0', '4.2.0') - ).toEqual('~4'); - expect( - semver.getNewValue({ currentValue: '~4' }, '4.0.0', '5.1.0') - ).toEqual('~5'); + expect(semver.getNewValue('~4', 'replace', '4.0.0', '4.2.0')).toEqual('~4'); + expect(semver.getNewValue('~4', 'replace', '4.0.0', '5.1.0')).toEqual('~5'); }); it('handles tilde minor', () => { - expect( - semver.getNewValue({ currentValue: '~4.0' }, '4.0.0', '4.2.0') - ).toEqual('~4.2'); - expect( - semver.getNewValue({ currentValue: '~4.0' }, '4.0.0', '5.1.0') - ).toEqual('~5.1'); + expect(semver.getNewValue('~4.0', 'replace', '4.0.0', '4.2.0')).toEqual( + '~4.2' + ); + expect(semver.getNewValue('~4.0', 'replace', '4.0.0', '5.1.0')).toEqual( + '~5.1' + ); }); it('returns toVersion if unsupported', () => { - expect( - semver.getNewValue({ currentValue: '+4.0.0' }, '4.0.0', '4.2.0') - ).toEqual('4.2.0'); + expect(semver.getNewValue('+4.0.0', 'replace', '4.0.0', '4.2.0')).toEqual( + '4.2.0' + ); }); }); diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js index 451a5a0126..2ee12a224e 100644 --- a/test/versioning/semver.spec.js +++ b/test/versioning/semver.spec.js @@ -41,84 +41,44 @@ describe('semver.isSingleVersion()', () => { }); describe('semver.getNewValue()', () => { it('bumps equals', () => { - expect( - semver.getNewValue( - { currentValue: '=1.0.0', rangeStrategy: 'bump' }, - '1.0.0', - '1.1.0' - ) - ).toEqual('=1.1.0'); + expect(semver.getNewValue('=1.0.0', 'bump', '1.0.0', '1.1.0')).toEqual( + '=1.1.0' + ); }); it('bumps short caret to same', () => { - expect( - semver.getNewValue( - { currentValue: '^1.0', rangeStrategy: 'bump' }, - '1.0.0', - '1.0.7' - ) - ).toEqual('^1.0'); + expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.0.7')).toEqual( + '^1.0' + ); }); it('bumps short caret to new', () => { - expect( - semver.getNewValue( - { currentValue: '^1.0', rangeStrategy: 'bump' }, - '1.0.0', - '1.1.7' - ) - ).toEqual('^1.1'); + expect(semver.getNewValue('^1.0', 'bump', '1.0.0', '1.1.7')).toEqual( + '^1.1' + ); }); it('bumps short tilde', () => { - expect( - semver.getNewValue( - { currentValue: '~1.0', rangeStrategy: 'bump' }, - '1.0.0', - '1.1.7' - ) - ).toEqual('~1.1'); + expect(semver.getNewValue('~1.0', 'bump', '1.0.0', '1.1.7')).toEqual( + '~1.1' + ); }); it('updates naked caret', () => { - expect( - semver.getNewValue( - { currentValue: '^1', rangeStrategy: 'bump' }, - '1.0.0', - '2.1.7' - ) - ).toEqual('^2'); + expect(semver.getNewValue('^1', 'bump', '1.0.0', '2.1.7')).toEqual('^2'); }); it('bumps naked tilde', () => { - expect( - semver.getNewValue( - { currentValue: '~1', rangeStrategy: 'bump' }, - '1.0.0', - '1.1.7' - ) - ).toEqual('~1'); + expect(semver.getNewValue('~1', 'bump', '1.0.0', '1.1.7')).toEqual('~1'); }); it('replaces equals', () => { - expect( - semver.getNewValue( - { currentValue: '=1.0.0', rangeStrategy: 'replace' }, - '1.0.0', - '1.1.0' - ) - ).toEqual('=1.1.0'); + expect(semver.getNewValue('=1.0.0', 'replace', '1.0.0', '1.1.0')).toEqual( + '=1.1.0' + ); }); it('handles long asterisk', () => { - expect( - semver.getNewValue( - { currentValue: '1.0.*', rangeStrategy: 'replace' }, - '1.0.0', - '1.1.0' - ) - ).toEqual('1.1.*'); + expect(semver.getNewValue('1.0.*', 'replace', '1.0.0', '1.1.0')).toEqual( + '1.1.*' + ); }); it('handles short asterisk', () => { - expect( - semver.getNewValue( - { currentValue: '1.*', rangeStrategy: 'replace' }, - '1.0.0', - '2.1.0' - ) - ).toEqual('2.*'); + expect(semver.getNewValue('1.*', 'replace', '1.0.0', '2.1.0')).toEqual( + '2.*' + ); }); }); -- GitLab