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