diff --git a/lib/platform/github/index.js b/lib/platform/github/index.js index cc72538a07f9913397f3d52d0406c97f8d01227d..8ae4bc5270486343d93efc540b8245cf540adb48 100644 --- a/lib/platform/github/index.js +++ b/lib/platform/github/index.js @@ -766,8 +766,8 @@ async function getPr(prNo) { // Harmonise PR values pr.displayNumber = `Pull Request #${pr.number}`; if (pr.state === 'open') { - if (pr.mergeable_state === 'dirty') { - logger.debug(`PR mergeable state is dirty`); + if (!pr.mergeable || pr.mergeable_state === 'dirty') { + logger.debug(`PR is not mergeable`); pr.isUnmergeable = true; } if (pr.commits === 1) { diff --git a/lib/workers/pr/index.js b/lib/workers/pr/index.js index 6c49115cbb627075106890644ae0a932be730d45..cccab2c7ce6b8de5b8f174194f5596b0a44b7152 100644 --- a/lib/workers/pr/index.js +++ b/lib/workers/pr/index.js @@ -335,7 +335,7 @@ async function checkAutoMerge(pr, config) { if (config.automerge) { logger.info('PR is configured for automerge'); // Return if PR not ready for automerge - if (pr.mergeable !== true) { + if (pr.isUnmergeable) { logger.info('PR is not mergeable'); logger.debug({ pr }); return false; diff --git a/test/platform/github/__snapshots__/index.spec.js.snap b/test/platform/github/__snapshots__/index.spec.js.snap index 8ac0e423951ebe0b24f6d243ad1769d41b4369ef..a4ae36f63239f57e05f7ed70dba92efc2bff0fd9 100644 --- a/test/platform/github/__snapshots__/index.spec.js.snap +++ b/test/platform/github/__snapshots__/index.spec.js.snap @@ -435,6 +435,7 @@ Object { "sha": "1234", }, "displayNumber": "Pull Request #1", + "mergeable": true, "number": 1, "state": "closed", } @@ -464,6 +465,7 @@ Object { "commits": 1, "displayNumber": "Pull Request #1", "isStale": true, + "mergeable": true, "number": 1, "state": "open", } diff --git a/test/platform/github/index.spec.js b/test/platform/github/index.spec.js index f91dee47a35d6600957060289e03d0e2aed622f5..7b840d9568c82a78a55915c4f5cf51401cda6950 100644 --- a/test/platform/github/index.spec.js +++ b/test/platform/github/index.spec.js @@ -1164,7 +1164,7 @@ describe('platform/github', () => { expect(pr).toBe(null); }); [ - { number: 1, state: 'closed', base: { sha: '1234' } }, + { number: 1, state: 'closed', base: { sha: '1234' }, mergeable: true }, { number: 1, state: 'open', @@ -1172,7 +1172,13 @@ describe('platform/github', () => { base: { sha: '1234' }, commits: 1, }, - { number: 1, state: 'open', base: { sha: '5678' }, commits: 1 }, + { + number: 1, + state: 'open', + base: { sha: '5678' }, + commits: 1, + mergeable: true, + }, ].forEach((body, i) => { it(`should return a PR object - ${i}`, async () => { await initRepo({ repository: 'some/repo', token: 'token' }); diff --git a/test/workers/pr/index.spec.js b/test/workers/pr/index.spec.js index 8f6c684d323046c51e74d397992be83479bd0662..076221c84833ba479daf20afe51e3a19e94c86df 100644 --- a/test/workers/pr/index.spec.js +++ b/test/workers/pr/index.spec.js @@ -48,7 +48,6 @@ describe('workers/pr', () => { it('should automerge if enabled and pr is mergeable', async () => { config.automerge = true; pr.canRebase = true; - pr.mergeable = true; platform.getBranchStatus.mockReturnValueOnce('success'); await prWorker.checkAutoMerge(pr, config); expect(platform.mergePr.mock.calls.length).toBe(1); @@ -56,28 +55,25 @@ describe('workers/pr', () => { it('should not automerge if enabled and pr is mergeable but cannot rebase', async () => { config.automerge = true; pr.canRebase = false; - pr.mergeable = true; platform.getBranchStatus.mockReturnValueOnce('success'); await prWorker.checkAutoMerge(pr, config); expect(platform.mergePr.mock.calls.length).toBe(0); }); it('should not automerge if enabled and pr is mergeable but branch status is not success', async () => { config.automerge = true; - pr.mergeable = true; platform.getBranchStatus.mockReturnValueOnce('pending'); await prWorker.checkAutoMerge(pr, config); expect(platform.mergePr.mock.calls.length).toBe(0); }); it('should not automerge if enabled and pr is mergeable but unstable', async () => { config.automerge = true; - pr.mergeable = true; pr.mergeable_state = 'unstable'; await prWorker.checkAutoMerge(pr, config); expect(platform.mergePr.mock.calls.length).toBe(0); }); it('should not automerge if enabled and pr is unmergeable', async () => { config.automerge = true; - pr.mergeable = false; + pr.isUnmergeable = true; await prWorker.checkAutoMerge(pr, config); expect(platform.mergePr.mock.calls.length).toBe(0); });