From 29b701ab9792df0c725777e848e045ca09d02c7d Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Tue, 28 Apr 2020 08:30:42 +0200
Subject: [PATCH] fix(internal): respect dry-run (#6071)

---
 .../repository/finalise/validate.spec.ts      | 16 ++++++++++++
 lib/workers/repository/finalise/validate.ts   | 25 +++++++++++++------
 2 files changed, 34 insertions(+), 7 deletions(-)

diff --git a/lib/workers/repository/finalise/validate.spec.ts b/lib/workers/repository/finalise/validate.spec.ts
index 88c1016606..60ee04463c 100644
--- a/lib/workers/repository/finalise/validate.spec.ts
+++ b/lib/workers/repository/finalise/validate.spec.ts
@@ -93,5 +93,21 @@ describe('workers/repository/validate', () => {
       expect(platform.ensureComment).toHaveBeenCalledTimes(0);
       expect(platform.ensureCommentRemoval).toHaveBeenCalledTimes(1);
     });
+
+    it('validates successfully (dry-run)', async () => {
+      platform.getPrList.mockResolvedValueOnce([
+        {
+          state: PR_STATE_OPEN,
+          branchName: 'some/branch',
+          title: 'Update Renovate',
+        },
+      ]);
+      platform.getPrFiles.mockResolvedValueOnce(['renovate.json']);
+      platform.getFile.mockResolvedValue('{}');
+      await validate.validatePrs({ dryRun: true });
+      expect(platform.setBranchStatus).toHaveBeenCalledTimes(0);
+      expect(platform.ensureComment).toHaveBeenCalledTimes(0);
+      expect(platform.ensureCommentRemoval).toHaveBeenCalledTimes(0);
+    });
   });
 });
diff --git a/lib/workers/repository/finalise/validate.ts b/lib/workers/repository/finalise/validate.ts
index d32074f3d4..2f4899276a 100644
--- a/lib/workers/repository/finalise/validate.ts
+++ b/lib/workers/repository/finalise/validate.ts
@@ -73,6 +73,7 @@ export async function validatePrs(config: RenovateConfig): Promise<void> {
               ? /* istanbul ignore next */ parsed.renovate ||
                 parsed['renovate-config']
               : parsed;
+          // istanbul ignore else
           if (toValidate) {
             logger.debug({ config: toValidate }, 'Validating config');
             const { errors } = await migrateAndValidate(config, toValidate);
@@ -105,18 +106,28 @@ export async function validatePrs(config: RenovateConfig): Promise<void> {
       } else {
         description = `Renovate config is valid`;
         status = BranchStatus.green;
-        await platform.ensureCommentRemoval(pr.number, topic);
+        if (config.dryRun) {
+          logger.info(
+            `DRY-RUN: Would ensure validation comment removal in PR #${pr.number}`
+          );
+        } else {
+          await platform.ensureCommentRemoval(pr.number, topic);
+        }
       }
       // istanbul ignore else
       if (pr.sourceRepo === config.repository) {
         logger.debug({ status, description }, 'Setting PR validation status');
         const context = `renovate/validate`;
-        await platform.setBranchStatus({
-          branchName: pr.branchName,
-          context,
-          description,
-          state: status,
-        });
+        if (config.dryRun) {
+          logger.info(`DRY-RUN: Would set branch status in PR #${pr.number}`);
+        } else {
+          await platform.setBranchStatus({
+            branchName: pr.branchName,
+            context,
+            description,
+            state: status,
+          });
+        }
       } else {
         logger.debug('Skipping branch status for forked PR');
       }
-- 
GitLab