From f598c5f89910d0a48c3bc5fd4efca560bc264f7c Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@keylocation.sg> Date: Mon, 21 Aug 2017 11:17:47 +0200 Subject: [PATCH] fix: do not automerge pr if it has been modified (#711) Add check for pr.canRebase. This will be false if the PR has been modified. Fixes #790 --- lib/workers/pr/index.js | 5 +++++ test/workers/pr/index.spec.js | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/workers/pr/index.js b/lib/workers/pr/index.js index ac2b425845..3cbcd01bb4 100644 --- a/lib/workers/pr/index.js +++ b/lib/workers/pr/index.js @@ -197,6 +197,11 @@ async function checkAutoMerge(pr, config, logger) { logger.info('Branch status is not "success"'); return; } + // Check if it's been touched + if (!pr.canRebase) { + logger.info('PR is ready for automerge but has been modified'); + return; + } // Let's merge this logger.info(`Automerging #${pr.number}`); await config.api.mergePr(pr); diff --git a/test/workers/pr/index.spec.js b/test/workers/pr/index.spec.js index dd2707e671..943d9f35d8 100644 --- a/test/workers/pr/index.spec.js +++ b/test/workers/pr/index.spec.js @@ -50,11 +50,20 @@ describe('workers/pr', () => { }); it('should automerge if enabled and pr is mergeable', async () => { config.automergeEnabled = true; + pr.canRebase = true; pr.mergeable = true; config.api.getBranchStatus.mockReturnValueOnce('success'); await prWorker.checkAutoMerge(pr, config, logger); expect(config.api.mergePr.mock.calls.length).toBe(1); }); + it('should not automerge if enabled and pr is mergeable but cannot rebase', async () => { + config.automergeEnabled = true; + pr.canRebase = false; + pr.mergeable = true; + config.api.getBranchStatus.mockReturnValueOnce('success'); + await prWorker.checkAutoMerge(pr, config, logger); + expect(config.api.mergePr.mock.calls.length).toBe(0); + }); it('should not automerge if enabled and pr is mergeable but branch status is not success', async () => { config.automergeEnabled = true; pr.mergeable = true; -- GitLab