From 726b97b2e263b37724f965ed640ad9773e67abfe Mon Sep 17 00:00:00 2001
From: Sebastian Poxhofer <secustor@users.noreply.github.com>
Date: Wed, 10 Aug 2022 17:02:48 +0200
Subject: [PATCH] fix(package-rules): remove edge case if no depName
 packageRules are defined (#16930)

---
 lib/util/package-rules.spec.ts | 37 +++++++++++++++++++++++++++++++++-
 lib/util/package-rules.ts      |  7 ++++++-
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/lib/util/package-rules.spec.ts b/lib/util/package-rules.spec.ts
index 16c79b203a..f444208d35 100644
--- a/lib/util/package-rules.spec.ts
+++ b/lib/util/package-rules.spec.ts
@@ -167,8 +167,43 @@ describe('util/package-rules', () => {
       ],
     };
     const res = applyPackageRules(dep);
+    expect(res.automerge).toBeFalse();
+    const res2 = applyPackageRules({ ...dep, depName: 'foo' });
+    expect(res2.automerge).toBeTrue();
+  });
+
+  it('do not apply rule with empty matchPackagePattern', () => {
+    const dep = {
+      automerge: true,
+      updateType: 'lockFileMaintenance' as UpdateType,
+      packageRules: [
+        {
+          matchPackagePatterns: [],
+          excludePackagePatterns: ['^foo'],
+          automerge: false,
+        },
+      ],
+    };
+    const res = applyPackageRules(dep);
+    expect(res.automerge).toBeTrue();
+    const res2 = applyPackageRules({ ...dep, depName: 'foo' });
+    expect(res2.automerge).toBeTrue();
+  });
+
+  it('do apply rule with matchPackageName', () => {
+    const dep = {
+      automerge: true,
+      updateType: 'lockFileMaintenance' as UpdateType,
+      packageRules: [
+        {
+          matchPackageNames: ['foo'],
+          automerge: false,
+        },
+      ],
+    };
+    const res = applyPackageRules(dep);
     expect(res.automerge).toBeTrue();
-    const res2 = applyPackageRules({ ...dep, depName: 'anything' });
+    const res2 = applyPackageRules({ ...dep, depName: 'foo' });
     expect(res2.automerge).toBeFalse();
   });
 
diff --git a/lib/util/package-rules.ts b/lib/util/package-rules.ts
index 5447e82fd2..55b637e5f9 100644
--- a/lib/util/package-rules.ts
+++ b/lib/util/package-rules.ts
@@ -155,7 +155,12 @@ function matchesRule(
     matchPackagePrefixes.length
   ) {
     if (!depName) {
-      return false;
+      // if using the default rules, return true else false
+      return (
+        is.undefined(packageRule.matchPackagePatterns) &&
+        is.undefined(packageRule.matchPackageNames) &&
+        is.undefined(packageRule.matchPackagePrefixes)
+      );
     }
     let isMatch = matchPackageNames.includes(depName);
     // name match is "or" so we check patterns if we didn't match names
-- 
GitLab