diff --git a/lib/platform/github/index.ts b/lib/platform/github/index.ts index 83147c58ad716fac7b43b7333f4df598ab531a6d..d641e8a96a39f302ede705a3c060181961e2ceca 100644 --- a/lib/platform/github/index.ts +++ b/lib/platform/github/index.ts @@ -767,8 +767,16 @@ async function getOpenPrs(): Promise<PrList> { const canMergeStates = ['BEHIND', 'CLEAN']; const hasNegativeReview = pr.reviews && pr.reviews.nodes && pr.reviews.nodes.length > 0; - pr.canMerge = - canMergeStates.includes(pr.mergeStateStatus) && !hasNegativeReview; + // istanbul ignore if + if (hasNegativeReview) { + pr.canMerge = false; + pr.canMergeReason = `hasNegativeReview`; + } else if (!canMergeStates.includes(pr.mergeStateStatus)) { + pr.canMerge = false; + pr.canMergeReason = `mergeStateStatus = ${pr.mergeStateStatus}`; + } else { + pr.canMerge = true; + } // https://developer.github.com/v4/enum/mergestatestatus if (pr.mergeStateStatus === 'DIRTY') { pr.isConflicted = true; @@ -877,6 +885,9 @@ export async function getPr(prNo: number): Promise<Pr | null> { pr.sha = pr.head ? pr.head.sha : undefined; if (pr.mergeable === true) { pr.canMerge = true; + } else { + pr.canMerge = false; + pr.canMergeReason = `mergeable = ${pr.mergeable}`; } if (pr.mergeable_state === 'dirty') { logger.debug({ prNo }, 'PR state is dirty so unmergeable'); diff --git a/lib/workers/pr/index.ts b/lib/workers/pr/index.ts index f577f4ea9df24fb7cc343f8cba167ffee8ffcf14..4559a2a5cc398535387658a29846f5f02fdc7dc0 100644 --- a/lib/workers/pr/index.ts +++ b/lib/workers/pr/index.ts @@ -471,7 +471,10 @@ export async function checkAutoMerge(pr: Pr, config): Promise<boolean> { return false; } if (requiredStatusChecks && pr.canMerge !== true) { - logger.info('PR is not ready for merge'); + logger.info( + { canMergeReason: pr.canMergeReason }, + 'PR is not ready for merge' + ); return false; } const branchStatus = await platform.getBranchStatus( diff --git a/test/platform/github/__snapshots__/index.spec.ts.snap b/test/platform/github/__snapshots__/index.spec.ts.snap index 15d00a595cb00601d2d719d40cd9b9487fff54b2..d95c4fbf08ae40e83e6e989c7f96aa5e751eaa8f 100644 --- a/test/platform/github/__snapshots__/index.spec.ts.snap +++ b/test/platform/github/__snapshots__/index.spec.ts.snap @@ -170,6 +170,8 @@ Object { "sha": "1234", }, "branchName": "somebranch", + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 1, "deletions": 1, "displayNumber": "Pull Request #91", @@ -224,6 +226,8 @@ Object { "sha": "1234", }, "branchName": "somebranch", + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 1, "deletions": 1, "displayNumber": "Pull Request #90", @@ -268,6 +272,7 @@ exports[`platform/github getPr(prNo) should return PR from graphql result 1`] = Object { "branchName": "renovate/jest-monorepo", "canMerge": false, + "canMergeReason": "mergeStateStatus = DIRTY", "displayNumber": "Pull Request #2500", "isConflicted": true, "isModified": false, @@ -298,6 +303,8 @@ Object { "sha": "1234", }, "branchName": undefined, + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 1, "displayNumber": "Pull Request #1", "isConflicted": true, @@ -333,6 +340,8 @@ Object { "sha": "1234", }, "branchName": undefined, + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 1, "displayNumber": "Pull Request #1", "isConflicted": true, @@ -350,6 +359,8 @@ Object { "sha": "1234", }, "branchName": undefined, + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 2, "displayNumber": "Pull Request #1", "isConflicted": true, @@ -367,6 +378,8 @@ Object { "sha": "1234", }, "branchName": undefined, + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 1, "displayNumber": "Pull Request #1", "isConflicted": true, @@ -384,6 +397,8 @@ Object { "sha": "1234", }, "branchName": undefined, + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 2, "displayNumber": "Pull Request #1", "isConflicted": true, @@ -401,6 +416,8 @@ Object { "sha": "1234", }, "branchName": undefined, + "canMerge": false, + "canMergeReason": "mergeable = undefined", "commits": 2, "displayNumber": "Pull Request #1", "isConflicted": true,