From 5f2e7548919bbfb1961bb7cd296d6b14c15f897f Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Fri, 18 Jun 2021 12:05:59 +0400
Subject: [PATCH] fix(workers): Early return for rebaseWhen=never (#10424)

---
 lib/workers/branch/index.spec.ts | 16 ++++++++++++++++
 lib/workers/branch/index.ts      | 14 ++++++++++----
 2 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/lib/workers/branch/index.spec.ts b/lib/workers/branch/index.spec.ts
index ac74e0efe3..418d9fdc90 100644
--- a/lib/workers/branch/index.spec.ts
+++ b/lib/workers/branch/index.spec.ts
@@ -24,6 +24,7 @@ import type { EnsurePrResult } from '../pr';
 import * as _prAutomerge from '../pr/automerge';
 import type { Pr } from '../repository/onboarding/branch/check';
 import type { BranchConfig, BranchUpgradeConfig } from '../types';
+import { BranchResult } from '../types';
 import * as _automerge from './automerge';
 import * as _checkExisting from './check-existing';
 import * as _commit from './commit';
@@ -1243,5 +1244,20 @@ describe(getName(), () => {
         ).toString()
       ).toBe('modified file content');
     });
+    it('returns when rebaseWhen=never', async () => {
+      getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
+        ...updatedPackageFiles,
+      });
+      npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
+        artifactErrors: [],
+        updatedArtifacts: [],
+      });
+      git.branchExists.mockReturnValue(true);
+      commit.commitFilesToBranch.mockResolvedValueOnce(null);
+      expect(
+        await branchWorker.processBranch({ ...config, rebaseWhen: 'never' })
+      ).toMatchObject({ result: BranchResult.NoWork });
+      expect(commit.commitFilesToBranch).not.toHaveBeenCalled();
+    });
   });
 });
diff --git a/lib/workers/branch/index.ts b/lib/workers/branch/index.ts
index df50fb0dce..393fdce237 100644
--- a/lib/workers/branch/index.ts
+++ b/lib/workers/branch/index.ts
@@ -391,10 +391,16 @@ export async function processBranch(
         });
       }
     }
-    config.forceCommit =
-      !!dependencyDashboardCheck ||
-      config.rebaseRequested ||
-      branchPr?.isConflicted;
+    const forcedManually = !!dependencyDashboardCheck || config.rebaseRequested;
+    if (!forcedManually && config.rebaseWhen === 'never') {
+      logger.debug(`Skipping commit (rebaseWhen=never)`);
+      return {
+        branchExists,
+        prNo: branchPr?.number,
+        result: BranchResult.NoWork,
+      };
+    }
+    config.forceCommit = forcedManually || branchPr?.isConflicted;
     const commitSha = await commitFilesToBranch(config);
     // istanbul ignore if
     if (branchPr && platform.refreshPr) {
-- 
GitLab