From 80c6ca1e721d9972c93a6f61be2d01973b32681d Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 6 Jul 2018 06:43:02 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20don=E2=80=99t=20discard=20updateTypes=20?= =?UTF-8?q?rules=20before=20they=E2=80=99re=20applied?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/workers/repository/updates/flatten.js | 12 ++++++++++-- test/workers/repository/updates/flatten.spec.js | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/workers/repository/updates/flatten.js b/lib/workers/repository/updates/flatten.js index 2caf463515..af9ead4240 100644 --- a/lib/workers/repository/updates/flatten.js +++ b/lib/workers/repository/updates/flatten.js @@ -1,3 +1,4 @@ +const is = require('@sindresorhus/is'); const { getManagerConfig, mergeChildConfig, @@ -10,6 +11,11 @@ module.exports = { flattenUpdates, }; +// Return only rules that contain an updateType +function getUpdateTypeRules(packageRules) { + return packageRules.filter(rule => !is.empty(rule.updateTypes)); +} + function flattenUpdates(config, packageFiles) { const updates = []; for (const [manager, files] of Object.entries(packageFiles)) { @@ -24,8 +30,10 @@ function flattenUpdates(config, packageFiles) { let updateConfig = mergeChildConfig(depConfig, update); delete updateConfig.updates; updateConfig = applyPackageRules(updateConfig); - // Now we're finished with these packageRules - updateConfig.packageRules = []; + // Keep only rules that haven't been applied yet (with updateTypes) + updateConfig.packageRules = getUpdateTypeRules( + updateConfig.packageRules + ); // apply major/minor/patch/pin/digest updateConfig = mergeChildConfig( updateConfig, diff --git a/test/workers/repository/updates/flatten.spec.js b/test/workers/repository/updates/flatten.spec.js index 6245d303d8..e5ba3ea8be 100644 --- a/test/workers/repository/updates/flatten.spec.js +++ b/test/workers/repository/updates/flatten.spec.js @@ -14,6 +14,12 @@ describe('workers/repository/updates/flatten', () => { describe('flattenUpdates()', () => { it('flattens', async () => { config.lockFileMaintenance.enabled = true; + config.packageRules = [ + { + updateTypes: ['minor'], + automerge: true, + }, + ]; const packageFiles = { npm: [ { -- GitLab