From 62694efae7c20a0cb220cf21d6e518ebb5efe435 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Wed, 20 Apr 2022 21:44:19 +0100 Subject: [PATCH] fix(config): validate integer (#15206) --- lib/config/__snapshots__/validation.spec.ts.snap | 4 ++++ lib/config/validation.spec.ts | 3 ++- lib/config/validation.ts | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/config/__snapshots__/validation.spec.ts.snap b/lib/config/__snapshots__/validation.spec.ts.snap index 27285c4322..a86d837e6c 100644 --- a/lib/config/__snapshots__/validation.spec.ts.snap +++ b/lib/config/__snapshots__/validation.spec.ts.snap @@ -53,6 +53,10 @@ Array [ "message": "Configuration option \`packageRules[3].matchPackagePatterns\` should be a list (Array)", "topic": "Configuration Error", }, + Object { + "message": "Configuration option \`prCommitsPerRunLimit\` should be an integer. Found: false (boolean)", + "topic": "Configuration Error", + }, Object { "message": "Configuration option \`semanticCommitType\` should be a string", "topic": "Configuration Error", diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts index 31f564af38..1d7f324648 100644 --- a/lib/config/validation.spec.ts +++ b/lib/config/validation.spec.ts @@ -195,6 +195,7 @@ describe('config/validation', () => { schedule: ['every 15 mins every weekday'], timezone: 'Asia', labels: 5 as any, + prCommitsPerRunLimit: false as any, semanticCommitType: 7 as any, lockFileMaintenance: false as any, extends: [':timezone(Europe/Brussel)'], @@ -220,7 +221,7 @@ describe('config/validation', () => { ); expect(warnings).toHaveLength(1); expect(errors).toMatchSnapshot(); - expect(errors).toHaveLength(12); + expect(errors).toHaveLength(13); }); it('selectors outside packageRules array trigger errors', async () => { diff --git a/lib/config/validation.ts b/lib/config/validation.ts index 383790945c..912e887f62 100644 --- a/lib/config/validation.ts +++ b/lib/config/validation.ts @@ -243,6 +243,15 @@ export async function validateConfig( )} (${typeof val})`, }); } + } else if (type === 'integer') { + if (!is.number(val)) { + errors.push({ + topic: 'Configuration Error', + message: `Configuration option \`${currentPath}\` should be an integer. Found: ${JSON.stringify( + val + )} (${typeof val})`, + }); + } } else if (type === 'array' && val) { if (is.array(val)) { for (const [subIndex, subval] of val.entries()) { -- GitLab