diff --git a/lib/config/validation.js b/lib/config/validation.js index 569017fd50bf59e28a59137664235bbf93845973..483c61224fde64e6cc2c9f7a2749e6cf7f86893a 100644 --- a/lib/config/validation.js +++ b/lib/config/validation.js @@ -158,6 +158,19 @@ async function validateConfig(config) { } } } + if ( + (key === 'packagePatterns' || key === 'excludePackagePatterns') && + !(val && val.length === 1 && val[0] === '*') + ) { + try { + RegExp(val); + } catch (e) { + errors.push({ + depName: 'Configuration Error', + message: `Invalid regExp for ${key}: \`${val}\``, + }); + } + } } } else if (type === 'string') { if (!isString(val)) { diff --git a/test/config/__snapshots__/validation.spec.js.snap b/test/config/__snapshots__/validation.spec.js.snap index 1822f6a43d8fbb0505afcdf877cf4483c4cccc80..67c86390eba224e069f6a4392e76e6b5a99c0000 100644 --- a/test/config/__snapshots__/validation.spec.js.snap +++ b/test/config/__snapshots__/validation.spec.js.snap @@ -18,6 +18,14 @@ Array [ "depName": "Configuration Error", "message": "Invalid timezone: Asia", }, + Object { + "depName": "Configuration Error", + "message": "Configuration option \`packagePatterns\` should be a list (Array)", + }, + Object { + "depName": "Configuration Error", + "message": "Invalid regExp for excludePackagePatterns: \`abc ([a-z]+) ([a-z]+))\`", + }, Object { "depName": "Configuration Error", "message": "Configuration option \`labels\` should be a list (Array)", diff --git a/test/config/validation.spec.js b/test/config/validation.spec.js index 7089be9fd828e5decde5ea9786b1d8588e27e500..905ab03f7e525a52af29cd4dd3a5d9c8980f5a52 100644 --- a/test/config/validation.spec.js +++ b/test/config/validation.spec.js @@ -7,6 +7,8 @@ describe('config/validation', () => { foo: 1, schedule: ['after 5pm'], timezone: 'Asia/Singapore', + packagePatterns: ['*'], + excludePackagePatterns: ['[a-z]'], prBody: 'some-body', lockFileMaintenance: { bar: 2, @@ -25,6 +27,8 @@ describe('config/validation', () => { enabled: 1, schedule: ['every 15 mins every weekday'], timezone: 'Asia', + packagePatterns: 'abc ([a-z]+) ([a-z]+))', + excludePackagePatterns: ['abc ([a-z]+) ([a-z]+))'], labels: 5, semanticCommitType: 7, lockFileMaintenance: false, @@ -45,7 +49,7 @@ describe('config/validation', () => { ); expect(warnings).toHaveLength(0); expect(errors).toMatchSnapshot(); - expect(errors).toHaveLength(11); + expect(errors).toHaveLength(13); }); }); });