From f910e6f9b6fb6d35a22f480190ce747875c4d637 Mon Sep 17 00:00:00 2001 From: Gabriel-Ladzaretti <97394622+Gabriel-Ladzaretti@users.noreply.github.com> Date: Sun, 4 Sep 2022 17:51:35 +0300 Subject: [PATCH] fix(repository/migration): create migration branch from the default branch (#17535) --- .../repository/config-migration/branch/create.spec.ts | 11 ++++++++++- .../repository/config-migration/branch/create.ts | 4 +++- .../repository/config-migration/branch/rebase.spec.ts | 8 ++++++++ .../repository/config-migration/branch/rebase.ts | 7 ++++++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/workers/repository/config-migration/branch/create.spec.ts b/lib/workers/repository/config-migration/branch/create.spec.ts index 68c91f7895..c606714147 100644 --- a/lib/workers/repository/config-migration/branch/create.spec.ts +++ b/lib/workers/repository/config-migration/branch/create.spec.ts @@ -1,6 +1,6 @@ import { Fixtures } from '../../../../../test/fixtures'; import { RenovateConfig, getConfig, platform } from '../../../../../test/util'; -import { commitFiles } from '../../../../util/git'; +import { checkoutBranch, commitFiles } from '../../../../util/git'; import { createConfigMigrationBranch } from './create'; import type { MigratedData } from './migrated-data'; @@ -18,12 +18,15 @@ describe('workers/repository/config-migration/branch/create', () => { beforeEach(() => { jest.clearAllMocks(); config = getConfig(); + config.baseBranch = 'dev'; + config.defaultBranch = 'master'; migratedConfigData = { content: renovateConfig, filename }; }); describe('createConfigMigrationBranch', () => { it('applies the default commit message', async () => { await createConfigMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(commitFiles).toHaveBeenCalledWith({ branchName: 'renovate/migrate-config', files: [ @@ -43,6 +46,7 @@ describe('workers/repository/config-migration/branch/create', () => { await createConfigMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(platform.commitFiles).toHaveBeenCalledWith({ branchName: 'renovate/migrate-config', files: [ @@ -64,6 +68,7 @@ describe('workers/repository/config-migration/branch/create', () => { await createConfigMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(commitFiles).toHaveBeenCalledWith({ branchName: 'renovate/migrate-config', files: [ @@ -86,6 +91,7 @@ describe('workers/repository/config-migration/branch/create', () => { const message = `PREFIX: migrate config renovate.json`; await createConfigMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(commitFiles).toHaveBeenCalledWith({ branchName: 'renovate/migrate-config', files: [ @@ -109,6 +115,7 @@ describe('workers/repository/config-migration/branch/create', () => { const message = `Migrate config renovate.json ${suffix}`; await createConfigMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(commitFiles).toHaveBeenCalledWith({ branchName: 'renovate/migrate-config', files: [ @@ -133,6 +140,7 @@ describe('workers/repository/config-migration/branch/create', () => { await createConfigMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(commitFiles).toHaveBeenCalledWith({ branchName: 'renovate/migrate-config', files: [ @@ -156,6 +164,7 @@ describe('workers/repository/config-migration/branch/create', () => { await createConfigMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(commitFiles).toHaveBeenCalledWith({ branchName: 'renovate/migrate-config', files: [ diff --git a/lib/workers/repository/config-migration/branch/create.ts b/lib/workers/repository/config-migration/branch/create.ts index e177384cb1..0e8bbe74dc 100644 --- a/lib/workers/repository/config-migration/branch/create.ts +++ b/lib/workers/repository/config-migration/branch/create.ts @@ -2,11 +2,12 @@ import { GlobalConfig } from '../../../../config/global'; import type { RenovateConfig } from '../../../../config/types'; import { logger } from '../../../../logger'; import { commitAndPush } from '../../../../modules/platform/commit'; +import { checkoutBranch } from '../../../../util/git'; import { getMigrationBranchName } from '../common'; import { ConfigMigrationCommitMessageFactory } from './commit-message'; import type { MigratedData } from './migrated-data'; -export function createConfigMigrationBranch( +export async function createConfigMigrationBranch( config: Partial<RenovateConfig>, migratedConfigData: MigratedData ): Promise<string | null> { @@ -28,6 +29,7 @@ export function createConfigMigrationBranch( return Promise.resolve(null); } + await checkoutBranch(config.defaultBranch!); return commitAndPush({ branchName: getMigrationBranchName(config), files: [ diff --git a/lib/workers/repository/config-migration/branch/rebase.spec.ts b/lib/workers/repository/config-migration/branch/rebase.spec.ts index 0fdc26170e..81ab12b7f5 100644 --- a/lib/workers/repository/config-migration/branch/rebase.spec.ts +++ b/lib/workers/repository/config-migration/branch/rebase.spec.ts @@ -6,6 +6,7 @@ import { platform, } from '../../../../../test/util'; import { GlobalConfig } from '../../../../config/global'; +import { checkoutBranch } from '../../../../util/git'; import type { MigratedData } from './migrated-data'; import { rebaseMigrationBranch } from './rebase'; @@ -34,12 +35,15 @@ describe('workers/repository/config-migration/branch/rebase', () => { config = { ...getConfig(), repository: 'some/repo', + baseBranch: 'dev', + defaultBranch: 'master', }; }); it('does not rebase modified branch', async () => { git.isBranchModified.mockResolvedValueOnce(true); await rebaseMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledTimes(0); expect(git.commitFiles).toHaveBeenCalledTimes(0); }); @@ -48,12 +52,14 @@ describe('workers/repository/config-migration/branch/rebase', () => { .mockResolvedValueOnce(renovateConfig) .mockResolvedValueOnce(renovateConfig); await rebaseMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledTimes(0); expect(git.commitFiles).toHaveBeenCalledTimes(0); }); it('rebases migration branch', async () => { git.isBranchBehindBase.mockResolvedValueOnce(true); await rebaseMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(git.commitFiles).toHaveBeenCalledTimes(1); }); @@ -63,6 +69,7 @@ describe('workers/repository/config-migration/branch/rebase', () => { }); git.isBranchBehindBase.mockResolvedValueOnce(true); await rebaseMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledTimes(0); expect(git.commitFiles).toHaveBeenCalledTimes(0); }); @@ -70,6 +77,7 @@ describe('workers/repository/config-migration/branch/rebase', () => { config.platformCommit = true; git.isBranchBehindBase.mockResolvedValueOnce(true); await rebaseMigrationBranch(config, migratedConfigData); + expect(checkoutBranch).toHaveBeenCalledWith(config.defaultBranch); expect(platform.commitFiles).toHaveBeenCalledTimes(1); }); }); diff --git a/lib/workers/repository/config-migration/branch/rebase.ts b/lib/workers/repository/config-migration/branch/rebase.ts index 1da3459f0a..06a3800915 100644 --- a/lib/workers/repository/config-migration/branch/rebase.ts +++ b/lib/workers/repository/config-migration/branch/rebase.ts @@ -2,7 +2,11 @@ import { GlobalConfig } from '../../../../config/global'; import type { RenovateConfig } from '../../../../config/types'; import { logger } from '../../../../logger'; import { commitAndPush } from '../../../../modules/platform/commit'; -import { getFile, isBranchModified } from '../../../../util/git'; +import { + checkoutBranch, + getFile, + isBranchModified, +} from '../../../../util/git'; import { getMigrationBranchName } from '../common'; import { ConfigMigrationCommitMessageFactory } from './commit-message'; import type { MigratedData } from './migrated-data'; @@ -37,6 +41,7 @@ export async function rebaseMigrationBranch( ); const commitMessage = commitMessageFactory.getCommitMessage(); + await checkoutBranch(config.defaultBranch!); return commitAndPush({ branchName, files: [ -- GitLab