From ca11767763e05e70db80f9640e9e1e9708255018 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sun, 13 Dec 2020 10:16:37 +0100
Subject: [PATCH] fix: migrate packageRules objects to array (#7981)

---
 lib/config/migration.spec.ts | 17 +++++++++++++++++
 lib/config/migration.ts      |  2 ++
 2 files changed, 19 insertions(+)

diff --git a/lib/config/migration.spec.ts b/lib/config/migration.spec.ts
index 7eab999f78..28055dcc93 100644
--- a/lib/config/migration.spec.ts
+++ b/lib/config/migration.spec.ts
@@ -304,6 +304,23 @@ describe('config/migration', () => {
         migratedConfig.lockFileMaintenance.packageRules[0].respectLatest
       ).toBe(false);
     });
+
+    it('migrates packageRules objects', () => {
+      const config = {
+        packageRules: {
+          packageNames: ['typescript'],
+          updateTypes: ['major'],
+          commitMessage:
+            'fix(package): update peerDependency to accept typescript ^{{newVersion}}',
+        },
+      } as any;
+      const { isMigrated, migratedConfig } = configMigration.migrateConfig(
+        config,
+        defaultConfig
+      );
+      expect(isMigrated).toBe(true);
+      expect(migratedConfig.packageRules).toHaveLength(1);
+    });
     it('migrates node to travis', () => {
       const config: RenovateConfig = {
         node: {
diff --git a/lib/config/migration.ts b/lib/config/migration.ts
index cb2cc7e308..e7b10acfa6 100644
--- a/lib/config/migration.ts
+++ b/lib/config/migration.ts
@@ -109,6 +109,8 @@ export function migrateConfig(
       } else if (parentKey === 'hostRules' && key === 'host') {
         migratedConfig.hostName = val;
         delete migratedConfig.host;
+      } else if (key === 'packageRules' && is.plainObject(val)) {
+        migratedConfig.packageRules = [val];
       } else if (key === 'packageFiles' && is.array(val)) {
         const fileList = [];
         for (const packageFile of val) {
-- 
GitLab