From 5fc7bea2302b08a3496f871aba2d704638d06da0 Mon Sep 17 00:00:00 2001
From: Sergio Zharinov <zharinov@users.noreply.github.com>
Date: Wed, 30 Sep 2020 23:06:03 +0400
Subject: [PATCH] fix(limits): Count branches for prCreation having
 "non-pending" value (#7388)

---
 lib/workers/repository/process/write.spec.ts |  6 +++++-
 lib/workers/repository/process/write.ts      | 10 ++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/lib/workers/repository/process/write.spec.ts b/lib/workers/repository/process/write.spec.ts
index 35897e1dc6..76595d833e 100644
--- a/lib/workers/repository/process/write.spec.ts
+++ b/lib/workers/repository/process/write.spec.ts
@@ -1,9 +1,11 @@
-import { RenovateConfig, getConfig, mocked } from '../../../../test/util';
+import { RenovateConfig, getConfig, git, mocked } from '../../../../test/util';
 import * as _branchWorker from '../../branch';
 import { BranchConfig, ProcessBranchResult } from '../../common';
 import * as _limits from './limits';
 import { writeUpdates } from './write';
 
+jest.mock('../../../util/git');
+
 const branchWorker = mocked(_branchWorker);
 const limits = mocked(_limits);
 
@@ -25,6 +27,7 @@ describe('workers/repository/write', () => {
         { blockedByPin: true },
         {},
       ] as never;
+      git.branchExists.mockReturnValueOnce(false);
       const res = await writeUpdates(config, branches);
       expect(res).toEqual('done');
       expect(branchWorker.processBranch).toHaveBeenCalledTimes(2);
@@ -37,6 +40,7 @@ describe('workers/repository/write', () => {
         {},
         {},
       ] as never;
+      git.branchExists.mockReturnValue(true);
       branchWorker.processBranch.mockResolvedValueOnce(
         ProcessBranchResult.PrCreated
       );
diff --git a/lib/workers/repository/process/write.ts b/lib/workers/repository/process/write.ts
index 424653d380..62752e0b15 100644
--- a/lib/workers/repository/process/write.ts
+++ b/lib/workers/repository/process/write.ts
@@ -1,5 +1,6 @@
 import { RenovateConfig } from '../../../config';
 import { addMeta, logger, removeMeta } from '../../../logger';
+import { branchExists } from '../../../util/git';
 import { processBranch } from '../../branch';
 import { BranchConfig, ProcessBranchResult } from '../../common';
 import { Limit, isLimitReached } from '../../global/limits';
@@ -33,6 +34,7 @@ export async function writeUpdates(
     addMeta({ branch: branch.branchName });
     const prLimitReached = prsRemaining <= 0;
     const commitLimitReached = isLimitReached(Limit.Commits);
+    const branchExisted = branchExists(branch.branchName);
     const res = await processBranch(branch, prLimitReached, commitLimitReached);
     branch.res = res;
     if (
@@ -54,6 +56,14 @@ export async function writeUpdates(
     ) {
       deductPrRemainingCount = 1;
     }
+    // istanbul ignore if
+    if (
+      res === ProcessBranchResult.Pending &&
+      !branchExisted &&
+      branchExists(branch.branchName)
+    ) {
+      deductPrRemainingCount = 1;
+    }
     prsRemaining -= deductPrRemainingCount;
   }
   removeMeta(['branch']);
-- 
GitLab