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