diff --git a/lib/config/massage.spec.ts b/lib/config/massage.spec.ts index 0d5ac6b4fd1adb7534ffcf550675fc9ebe7d814e..117b3e5a7627bc7e7e110ea94239cc198dc25ee6 100644 --- a/lib/config/massage.spec.ts +++ b/lib/config/massage.spec.ts @@ -46,6 +46,21 @@ describe('config/massage', () => { expect(res.packageRules).toHaveLength(3); }); + it('filters packageRules with only match/exclude', () => { + const config: RenovateConfig = { + packageRules: [ + { + matchBaseBranches: ['main'], + major: { + enabled: true, + }, + }, + ], + }; + const res = massage.massageConfig(config); + expect(res.packageRules).toHaveLength(1); + }); + it('does not massage lockFileMaintenance', () => { const config: RenovateConfig = { packageRules: [ diff --git a/lib/config/massage.ts b/lib/config/massage.ts index ef3fff325a9ec79f21217f7856fccd3af32aea68..094237c11bfdb27ad8d3574396062e791d6d553b 100644 --- a/lib/config/massage.ts +++ b/lib/config/massage.ts @@ -40,7 +40,7 @@ export function massageConfig(config: RenovateConfig): RenovateConfig { } } if (is.nonEmptyArray(massagedConfig.packageRules)) { - const newRules: PackageRule[] = []; + let newRules: PackageRule[] = []; const updateTypes: UpdateType[] = [ 'major', 'minor', @@ -74,6 +74,17 @@ export function massageConfig(config: RenovateConfig): RenovateConfig { delete rule[updateType]; }); } + newRules = newRules.filter((rule) => { + if ( + Object.keys(rule).every( + (key) => key.startsWith('match') || key.startsWith('exclude') + ) + ) { + // Exclude rules which contain only match or exclude options + return false; + } + return true; + }); massagedConfig.packageRules = newRules; } return massagedConfig;