diff --git a/lib/config/validation.js b/lib/config/validation.js index 1186a3ac278c9b65da04a39cda82450811cbad6e..b2e0ac2d262b6f943cf2c61a2d9f1bd498cfd88a 100644 --- a/lib/config/validation.js +++ b/lib/config/validation.js @@ -96,6 +96,21 @@ function validateConfig(config) { depName: 'Configuration Error', message: `Configuration option \`${key}\` should be a list (Array)`, }); + } else if (key === 'extends') { + for (const subval of val) { + if (isString(subval) && subval.match(/^:timezone(.+)$/)) { + const [, timezone] = subval.match(/^:timezone\((.+)\)$/); + const [validTimezone, errorMessage] = hasValidTimezone( + timezone + ); + if (!validTimezone) { + errors.push({ + depName: 'Configuration Error', + message: errorMessage, + }); + } + } + } } else { // eslint-disable-next-line no-loop-func val.forEach(subval => { diff --git a/test/config/__snapshots__/validation.spec.js.snap b/test/config/__snapshots__/validation.spec.js.snap index bb96c609c0d86d1642996f156c9b8450131e2c4c..b986e7132cbc03085021e7bc662687551a0d2398 100644 --- a/test/config/__snapshots__/validation.spec.js.snap +++ b/test/config/__snapshots__/validation.spec.js.snap @@ -30,6 +30,10 @@ Array [ "depName": "Configuration Error", "message": "Configuration option \`lockFileMaintenance\` should be a json object", }, + Object { + "depName": "Configuration Error", + "message": "Invalid timezone: Europe/Brussel", + }, Object { "depName": "Configuration Error", "message": "Invalid configuration option: \`foo\`", diff --git a/test/config/validation.spec.js b/test/config/validation.spec.js index bee1d240673f742b01194ea70ade297c54055067..d28da1f3ee94d235dd040c27e76c276e343311d4 100644 --- a/test/config/validation.spec.js +++ b/test/config/validation.spec.js @@ -26,6 +26,7 @@ describe('config/validation', () => { labels: 5, semanticCommitType: 7, lockFileMaintenance: false, + extends: [':timezone(Europe/Brussel)'], packageRules: [ { foo: 1, @@ -34,7 +35,7 @@ describe('config/validation', () => { }; const { warnings, errors } = configValidation.validateConfig(config); expect(warnings).toHaveLength(0); - expect(errors).toHaveLength(8); + expect(errors).toHaveLength(9); expect(errors).toMatchSnapshot(); }); });