diff --git a/lib/workers/pr/index.js b/lib/workers/pr/index.js index ac2b425845bd4bafa33a6de7c481b964463217b8..3cbcd01bb48783a5dacfc020b5b191d188aaeedb 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 dd2707e671e68020d19f3429945826939a419477..943d9f35d89d5eea79d514fee1e1c6d70c7d72fa 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;