diff --git a/lib/util/package-rules.js b/lib/util/package-rules.js index ae27459df20bf64225c3a0ee827c21ccc73f9ff4..eecdbeb4e47f37b26d6f793d4ee268b086137426 100644 --- a/lib/util/package-rules.js +++ b/lib/util/package-rules.js @@ -17,6 +17,7 @@ function applyPackageRules(inputConfig) { currentValue, fromVersion, updateType, + isBump, } = config; const packageRules = config.packageRules || []; logger.trace( @@ -66,7 +67,9 @@ function applyPackageRules(inputConfig) { negativeMatch = negativeMatch || !isMatch; } if (updateTypes.length) { - const isMatch = updateTypes.includes(updateType); + const isMatch = + updateTypes.includes(updateType) || + (isBump && updateTypes.includes('bump')); positiveMatch = positiveMatch || isMatch; negativeMatch = negativeMatch || !isMatch; } diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index 54205c6d6af7019ba08d58ab6c0ea29dde973795..32ce512ff5fcd82963f8fde2835d4b9e8887f7f5 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -190,6 +190,19 @@ async function lookupUpdates(config) { } } } + for (const update of res.updates) { + const { updateType, fromVersion, toVersion } = update; + if (updateType === 'bump') { + update.isBump = true; + if (getMajor(toVersion) > getMajor(fromVersion)) { + update.updateType = 'major'; + } else if (getMinor(toVersion) > getMinor(fromVersion)) { + update.updateType = 'minor'; + } else { + update.updateType = 'patch'; + } + } + } // Strip out any non-changed ones res.updates = res.updates .filter(update => update.newDigest !== null) diff --git a/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap b/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap index 2b079c41461b344f36b9956f8240805fef33741e..e8bd7a702f69c0e207774664bf334ffef11fc04d 100644 --- a/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap +++ b/test/workers/repository/process/lookup/__snapshots__/index.spec.js.snap @@ -819,6 +819,7 @@ Array [ Object { "canBeUnpublished": false, "fromVersion": "1.0.0", + "isBump": true, "isRange": true, "isSingleVersion": false, "newMajor": 1, @@ -826,7 +827,7 @@ Array [ "newValue": "^1.4.1", "releaseTimestamp": "2015-05-17T04:25:07.299Z", "toVersion": "1.4.1", - "updateType": "bump", + "updateType": "minor", }, ] `; @@ -836,6 +837,7 @@ Array [ Object { "canBeUnpublished": false, "fromVersion": "1.0.0", + "isBump": true, "isRange": true, "isSingleVersion": false, "newMajor": 1, @@ -843,7 +845,7 @@ Array [ "newValue": ">=1.4.1", "releaseTimestamp": "2015-05-17T04:25:07.299Z", "toVersion": "1.4.1", - "updateType": "bump", + "updateType": "minor", }, ] `; @@ -853,6 +855,7 @@ Array [ Object { "canBeUnpublished": false, "fromVersion": "1.0.0", + "isBump": true, "isRange": true, "isSingleVersion": false, "newMajor": 1, @@ -860,7 +863,7 @@ Array [ "newValue": "~1.0.1", "releaseTimestamp": "2014-03-11T18:47:17.560Z", "toVersion": "1.0.1", - "updateType": "bump", + "updateType": "patch", }, Object { "canBeUnpublished": false, @@ -877,6 +880,24 @@ Array [ ] `; +exports[`manager/npm/lookup .lookupUpdates() supports majorgte updates 1`] = ` +Array [ + Object { + "canBeUnpublished": false, + "fromVersion": "0.9.0", + "isBump": true, + "isRange": true, + "isSingleVersion": false, + "newMajor": 1, + "newMinor": 4, + "newValue": ">=1.4.1", + "releaseTimestamp": "2015-05-17T04:25:07.299Z", + "toVersion": "1.4.1", + "updateType": "major", + }, +] +`; + exports[`manager/npm/lookup .lookupUpdates() supports minor and major upgrades for ranged versions 1`] = ` Array [ Object { diff --git a/test/workers/repository/process/lookup/index.spec.js b/test/workers/repository/process/lookup/index.spec.js index 98f1822ed1cbe605aa73885a757e4a5b16a67e31..7be07b707dfccea2a6b0aa4ac662824abbc4fa63 100644 --- a/test/workers/repository/process/lookup/index.spec.js +++ b/test/workers/repository/process/lookup/index.spec.js @@ -756,6 +756,16 @@ describe('manager/npm/lookup', () => { .reply(200, qJson); expect((await lookup.lookupUpdates(config)).updates).toMatchSnapshot(); }); + it('supports majorgte updates', async () => { + config.rangeStrategy = 'bump'; + config.currentValue = '>=0.9.0'; + config.depName = 'q'; + config.purl = 'pkg:npm/q'; + nock('https://registry.npmjs.org') + .get('/q') + .reply(200, qJson); + expect((await lookup.lookupUpdates(config)).updates).toMatchSnapshot(); + }); it('rejects in-range unsupported operator', async () => { config.rangeStrategy = 'bump'; config.currentValue = '>1.0.0';