From 7949a2afeef4b2830061591f3c29884fc31db8b7 Mon Sep 17 00:00:00 2001 From: RahulGautamSingh <rahultesnik@gmail.com> Date: Fri, 4 Aug 2023 13:05:25 +0545 Subject: [PATCH] fix(core/automerge): care only about automergeSchedule when branch exists (#23561) Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> Co-authored-by: Rhys Arkins <rhys@arkins.net> --- docs/usage/configuration-options.md | 4 ++++ .../repository/update/branch/index.spec.ts | 23 +++++++++++++++++++ lib/workers/repository/update/branch/index.ts | 6 +++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index 9101b42677..5ff4585270 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -190,6 +190,10 @@ So for example you could choose to automerge all (passing) `devDependencies` onl } ``` +<!-- prettier-ignore --> +!!! note + Branches creation follows [`schedule`](#schedule) and the automerge follows [`automergeSchedule`](#automergeschedule). + <!-- prettier-ignore --> !!! warning "Negative reviews on GitHub block Renovate automerge" Renovate won't automerge on GitHub if a PR has a negative review. diff --git a/lib/workers/repository/update/branch/index.spec.ts b/lib/workers/repository/update/branch/index.spec.ts index ebb9d62ba9..ba0f04efa4 100644 --- a/lib/workers/repository/update/branch/index.spec.ts +++ b/lib/workers/repository/update/branch/index.spec.ts @@ -610,6 +610,29 @@ describe('workers/repository/update/branch/index', () => { }); }); + // automerge should respect only automergeSchedule + // mock a case where branchPr does not exist, pr-creation is off-schedule, and the branch is configured for automerge + it('automerges when there is no pr and, pr-creation is off-schedule', async () => { + schedule.isScheduledNow.mockReturnValueOnce(false); + getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce( + partial<PackageFilesResult>({ + updatedPackageFiles: [partial<FileChange>()], + }) + ); + npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({ + artifactErrors: [], + updatedArtifacts: [partial<FileChange>()], + }); + scm.branchExists.mockResolvedValue(true); + commit.commitFilesToBranch.mockResolvedValueOnce(null); + automerge.tryBranchAutomerge.mockResolvedValueOnce('automerged'); + config.automerge = true; + config.automergeType = 'branch'; + await branchWorker.processBranch(config); + expect(automerge.tryBranchAutomerge).toHaveBeenCalledTimes(1); + expect(prWorker.ensurePr).toHaveBeenCalledTimes(0); + }); + it('returns if branch automerged', async () => { getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce( partial<PackageFilesResult>({ diff --git a/lib/workers/repository/update/branch/index.ts b/lib/workers/repository/update/branch/index.ts index 2b7b603b64..4bacd8fe75 100644 --- a/lib/workers/repository/update/branch/index.ts +++ b/lib/workers/repository/update/branch/index.ts @@ -309,8 +309,10 @@ export async function processBranch( result: 'update-not-scheduled', }; } - // istanbul ignore if - if (!branchPr) { + if ( + !branchPr && + !(config.automerge && config.automergeType === 'branch') // if branch is configured for automerge there's no need for a PR + ) { logger.debug('Skipping PR creation out of schedule'); return { branchExists, -- GitLab