From d0e76b9d514ffa3bc749313051e5d3420e339c41 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 13 Mar 2018 21:47:08 +0100 Subject: [PATCH] fix: validate :timezone preset value --- lib/config/validation.js | 15 +++++++++++++++ test/config/__snapshots__/validation.spec.js.snap | 4 ++++ test/config/validation.spec.js | 3 ++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/config/validation.js b/lib/config/validation.js index 1186a3ac27..b2e0ac2d26 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 bb96c609c0..b986e7132c 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 bee1d24067..d28da1f3ee 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(); }); }); -- GitLab