From f83d000964bcb14a20269055d9b515c6a77b6ebc Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 13 Dec 2019 16:03:00 +0100 Subject: [PATCH] fix(master-issue): correctly classify more pending cases --- lib/workers/branch/index.ts | 3 +++ lib/workers/pr/index.ts | 6 +++--- test/workers/branch/index.spec.ts | 13 +++++++++++++ test/workers/pr/index.spec.ts | 4 ++-- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/workers/branch/index.ts b/lib/workers/branch/index.ts index 6c27807825..ad9278d363 100644 --- a/lib/workers/branch/index.ts +++ b/lib/workers/branch/index.ts @@ -451,6 +451,9 @@ export async function processBranch( if (pr === 'needs-pr-approval') { return 'needs-pr-approval'; } + if (pr === 'pending') { + return 'pending'; + } if (pr) { const topic = emojify(':warning: Artifact update problem'); if (config.artifactErrors && config.artifactErrors.length) { diff --git a/lib/workers/pr/index.ts b/lib/workers/pr/index.ts index 8a08faf529..e8494a65fb 100644 --- a/lib/workers/pr/index.ts +++ b/lib/workers/pr/index.ts @@ -59,7 +59,7 @@ async function addAssigneesReviewers(config, pr: Pr): Promise<void> { // Ensures that PR exists with matching title/body export async function ensurePr( prConfig: BranchConfig -): Promise<Pr | 'needs-pr-approval'> { +): Promise<Pr | 'needs-pr-approval' | 'pending'> { const config: BranchConfig = { ...prConfig }; logger.trace({ config }, 'ensurePr'); @@ -127,7 +127,7 @@ export async function ensurePr( logger.debug( `Branch status is "${await getBranchStatus()}" - not creating PR` ); - return null; + return 'pending'; } logger.debug('Branch status success'); } else if ( @@ -159,7 +159,7 @@ export async function ensurePr( logger.debug( `Branch is ${elapsedHours} hours old - skipping PR creation` ); - return null; + return 'pending'; } logger.debug( `prNotPendingHours=${config.prNotPendingHours} threshold hit - creating PR` diff --git a/test/workers/branch/index.spec.ts b/test/workers/branch/index.spec.ts index cb198a68e1..0995ca9531 100644 --- a/test/workers/branch/index.spec.ts +++ b/test/workers/branch/index.spec.ts @@ -257,6 +257,19 @@ describe('workers/branch', () => { 'needs-pr-approval' ); }); + it('returns if branch exists but pending', async () => { + getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({ + updatedPackageFiles: [{}], + } as never); + npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({ + artifactErrors: [], + updatedArtifacts: [{}], + } as never); + platform.branchExists.mockResolvedValueOnce(true); + automerge.tryBranchAutomerge.mockResolvedValueOnce('failed'); + prWorker.ensurePr.mockResolvedValueOnce('pending'); + expect(await branchWorker.processBranch(config)).toEqual('pending'); + }); it('ensures PR and tries automerge', async () => { getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({ updatedPackageFiles: [{}], diff --git a/test/workers/pr/index.spec.ts b/test/workers/pr/index.spec.ts index 912ee3f025..dc5ba56748 100644 --- a/test/workers/pr/index.spec.ts +++ b/test/workers/pr/index.spec.ts @@ -155,7 +155,7 @@ describe('workers/pr', () => { platform.getBranchStatus.mockResolvedValueOnce('failed'); config.prCreation = 'status-success'; const pr = await prWorker.ensurePr(config); - expect(pr).toBeNull(); + expect(pr).toEqual('pending'); }); it('should return needs-approval if prCreation set to approval', async () => { platform.getBranchStatus.mockResolvedValueOnce('success'); @@ -236,7 +236,7 @@ describe('workers/pr', () => { ); config.prCreation = 'not-pending'; const pr = await prWorker.ensurePr(config); - expect(pr).toBeNull(); + expect(pr).toEqual('pending'); }); it('should create PR if pending timeout hit', async () => { platform.getBranchStatus.mockResolvedValueOnce('pending'); -- GitLab