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