From d6edbb2e2dcad628f26988f5fbbc043f6fca9a99 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Tue, 2 May 2023 14:40:58 +0200
Subject: [PATCH] fix(automerge): force PR creation on dashboard approval
 (#21924)

---
 lib/workers/repository/update/pr/index.spec.ts | 17 +++++++++++++++++
 lib/workers/repository/update/pr/index.ts      |  7 ++++++-
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/lib/workers/repository/update/pr/index.spec.ts b/lib/workers/repository/update/pr/index.spec.ts
index 5bdc399e0a..ee9fad06ff 100644
--- a/lib/workers/repository/update/pr/index.spec.ts
+++ b/lib/workers/repository/update/pr/index.spec.ts
@@ -396,6 +396,23 @@ describe('workers/repository/update/pr/index', () => {
         expect(prCache.setPrCache).not.toHaveBeenCalled();
       });
 
+      it('forces PR on dashboard check', async () => {
+        platform.createPr.mockResolvedValueOnce(pr);
+
+        const res = await ensurePr({
+          ...config,
+          automerge: true,
+          automergeType: 'branch',
+          reviewers: ['somebody'],
+          dependencyDashboardChecks: {
+            'renovate-branch': 'approvePr',
+          },
+        });
+
+        expect(res).toEqual({ type: 'with-pr', pr });
+        expect(prCache.setPrCache).toHaveBeenCalled();
+      });
+
       it('adds assignees for PR automerge with red status', async () => {
         const changedPr: Pr = {
           ...pr,
diff --git a/lib/workers/repository/update/pr/index.ts b/lib/workers/repository/update/pr/index.ts
index 99cd73a5d0..0f8a8bef23 100644
--- a/lib/workers/repository/update/pr/index.ts
+++ b/lib/workers/repository/update/pr/index.ts
@@ -143,6 +143,11 @@ export async function ensurePr(
     config.forcePr = true;
   }
 
+  if (dependencyDashboardCheck === 'approvePr') {
+    logger.debug('Forcing PR because of dependency dashboard approval');
+    config.forcePr = true;
+  }
+
   if (!existingPr) {
     // Only create a PR if a branch automerge has failed
     if (
@@ -172,7 +177,7 @@ export async function ensurePr(
         return { type: 'without-pr', prBlockedBy: 'BranchAutomerge' };
       }
     }
-    if (!existingPr && config.prCreation === 'status-success') {
+    if (config.prCreation === 'status-success') {
       logger.debug('Checking branch combined status');
       if ((await getBranchStatus()) !== 'green') {
         logger.debug(`Branch status isn't green - not creating PR`);
-- 
GitLab