From c6f08431984dfbb6c7ec9b935dc9c15007fb1889 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Mon, 3 Jan 2022 17:54:10 -0700 Subject: [PATCH 1/7] Check for clean status when determining isMergeable --- .github/actions/isPullRequestMergeable/index.js | 9 ++++++++- .../isPullRequestMergeable/isPullRequestMergeable.js | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/actions/isPullRequestMergeable/index.js b/.github/actions/isPullRequestMergeable/index.js index 6ab466f9133a..50c105ea88a2 100644 --- a/.github/actions/isPullRequestMergeable/index.js +++ b/.github/actions/isPullRequestMergeable/index.js @@ -37,8 +37,15 @@ const run = function () { return; } + if (_.isNull(data.mergeable_state)) { + console.log('Pull request mergeable_state is not yet resolved...'); + retryCount++; + return; + } + mergeabilityResolved = true; - isMergeable = data.mergeable; + console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state ${data.mergeable_state}`); + isMergeable = data.mergeable && data.mergeable_state === 'CLEAN'; }) .catch((githubError) => { mergeabilityResolved = true; diff --git a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js index 55a7f3d12461..4eb6e941f97b 100644 --- a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js +++ b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js @@ -27,8 +27,15 @@ const run = function () { return; } + if (_.isNull(data.mergeable_state)) { + console.log('Pull request mergeable_state is not yet resolved...'); + retryCount++; + return; + } + mergeabilityResolved = true; - isMergeable = data.mergeable; + console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state ${data.mergeable_state}`); + isMergeable = data.mergeable && data.mergeable_state === 'CLEAN'; }) .catch((githubError) => { mergeabilityResolved = true; From 03b064ef1b2b65e88385149036eac2e8b46db3cd Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Mon, 3 Jan 2022 18:57:53 -0700 Subject: [PATCH 2/7] Use != BLOCKED --- .github/actions/isPullRequestMergeable/index.js | 2 +- .../actions/isPullRequestMergeable/isPullRequestMergeable.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/isPullRequestMergeable/index.js b/.github/actions/isPullRequestMergeable/index.js index 50c105ea88a2..2067e7d9dbe9 100644 --- a/.github/actions/isPullRequestMergeable/index.js +++ b/.github/actions/isPullRequestMergeable/index.js @@ -45,7 +45,7 @@ const run = function () { mergeabilityResolved = true; console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state ${data.mergeable_state}`); - isMergeable = data.mergeable && data.mergeable_state === 'CLEAN'; + isMergeable = data.mergeable && data.mergeable_state !== 'BLOCKED'; }) .catch((githubError) => { mergeabilityResolved = true; diff --git a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js index 4eb6e941f97b..3547fca1d8b4 100644 --- a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js +++ b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js @@ -35,7 +35,7 @@ const run = function () { mergeabilityResolved = true; console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state ${data.mergeable_state}`); - isMergeable = data.mergeable && data.mergeable_state === 'CLEAN'; + isMergeable = data.mergeable && data.mergeable_state !== 'BLOCKED'; }) .catch((githubError) => { mergeabilityResolved = true; From 8627d7603d47e0be77ec10da85e88712b618cd7e Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 4 Jan 2022 15:07:07 -0700 Subject: [PATCH 3/7] Update .github/actions/isPullRequestMergeable/isPullRequestMergeable.js Co-authored-by: Rory Abraham <47436092+roryabraham@users.noreply.github.com> --- .../actions/isPullRequestMergeable/isPullRequestMergeable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js index 3547fca1d8b4..4c8ca5d6bcf2 100644 --- a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js +++ b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js @@ -35,7 +35,7 @@ const run = function () { mergeabilityResolved = true; console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state ${data.mergeable_state}`); - isMergeable = data.mergeable && data.mergeable_state !== 'BLOCKED'; + isMergeable = data.mergeable && data.mergeable_state.toUpperCase() !== 'BLOCKED'; }) .catch((githubError) => { mergeabilityResolved = true; From c6247d199985e8e8a4212266087a7bca26e50e96 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 4 Jan 2022 15:07:14 -0700 Subject: [PATCH 4/7] Update .github/actions/isPullRequestMergeable/isPullRequestMergeable.js Co-authored-by: Rory Abraham <47436092+roryabraham@users.noreply.github.com> --- .../actions/isPullRequestMergeable/isPullRequestMergeable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js index 4c8ca5d6bcf2..b18272b99e9c 100644 --- a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js +++ b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js @@ -27,7 +27,7 @@ const run = function () { return; } - if (_.isNull(data.mergeable_state)) { + if (_.isEmpty(data.mergeable_state)) { console.log('Pull request mergeable_state is not yet resolved...'); retryCount++; return; From 2bbac9efdb128169038d4bffbeef87240d4ffc9f Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 4 Jan 2022 15:08:13 -0700 Subject: [PATCH 5/7] Update log --- .../actions/isPullRequestMergeable/isPullRequestMergeable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js index b18272b99e9c..bb4a03d5dbc1 100644 --- a/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js +++ b/.github/actions/isPullRequestMergeable/isPullRequestMergeable.js @@ -34,7 +34,7 @@ const run = function () { } mergeabilityResolved = true; - console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state ${data.mergeable_state}`); + console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state: ${data.mergeable_state}`); isMergeable = data.mergeable && data.mergeable_state.toUpperCase() !== 'BLOCKED'; }) .catch((githubError) => { From afd85adc353241c7aeb9bb67bed6de6c0f0aa754 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 4 Jan 2022 15:08:39 -0700 Subject: [PATCH 6/7] Compile --- .github/actions/isPullRequestMergeable/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/isPullRequestMergeable/index.js b/.github/actions/isPullRequestMergeable/index.js index 2067e7d9dbe9..7c3e2cea37be 100644 --- a/.github/actions/isPullRequestMergeable/index.js +++ b/.github/actions/isPullRequestMergeable/index.js @@ -37,15 +37,15 @@ const run = function () { return; } - if (_.isNull(data.mergeable_state)) { + if (_.isEmpty(data.mergeable_state)) { console.log('Pull request mergeable_state is not yet resolved...'); retryCount++; return; } mergeabilityResolved = true; - console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state ${data.mergeable_state}`); - isMergeable = data.mergeable && data.mergeable_state !== 'BLOCKED'; + console.log(`Merge information for #${pullRequestNumber} - mergeable: ${data.mergeable}, mergeable_state: ${data.mergeable_state}`); + isMergeable = data.mergeable && data.mergeable_state.toUpperCase() !== 'BLOCKED'; }) .catch((githubError) => { mergeabilityResolved = true; From f31175ebe7ca9ebd8b0304663fb047d3782daa20 Mon Sep 17 00:00:00 2001 From: Andrew Gable Date: Tue, 4 Jan 2022 15:21:17 -0700 Subject: [PATCH 7/7] Update unit tests --- tests/unit/isPullRequestMergeableTest.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unit/isPullRequestMergeableTest.js b/tests/unit/isPullRequestMergeableTest.js index cf6a31b0bef1..2897b2589560 100644 --- a/tests/unit/isPullRequestMergeableTest.js +++ b/tests/unit/isPullRequestMergeableTest.js @@ -46,14 +46,14 @@ afterAll(() => { describe('isPullRequestMergeable', () => { test('Pull request immediately mergeable', () => { - mockGetPullRequest.mockResolvedValue({data: {mergeable: true}}); + mockGetPullRequest.mockResolvedValue({data: {mergeable: true, mergeable_state: 'CLEAN'}}); return run().then(() => { expect(mockSetOutput).toHaveBeenCalledWith('IS_MERGEABLE', true); }); }); test('Pull request immediately not mergeable', () => { - mockGetPullRequest.mockResolvedValue({data: {mergeable: false}}); + mockGetPullRequest.mockResolvedValue({data: {mergeable: false, mergeable_state: 'BLOCKED'}}); return run().then(() => { expect(mockSetOutput).toHaveBeenCalledWith('IS_MERGEABLE', false); }); @@ -61,7 +61,7 @@ describe('isPullRequestMergeable', () => { test('Pull request mergeable after delay', () => { mockGetPullRequest - .mockResolvedValue({data: {mergeable: true}}) + .mockResolvedValue({data: {mergeable: true, mergeable_state: 'CLEAN'}}) .mockResolvedValueOnce({data: {mergeable: null}}) .mockResolvedValueOnce({data: {mergeable: null}}); return run().then(() => { @@ -72,7 +72,7 @@ describe('isPullRequestMergeable', () => { test('Pull request not mergeable after delay', () => { mockGetPullRequest - .mockResolvedValue({data: {mergeable: false}}) + .mockResolvedValue({data: {mergeable: false, mergeable_state: 'BLOCKED'}}) .mockResolvedValueOnce({data: {mergeable: null}}) .mockResolvedValueOnce({data: {mergeable: null}}); return run().then(() => {