diff --git a/lib/workers/repository/config-migration/branch/create.spec.ts b/lib/workers/repository/config-migration/branch/create.spec.ts index 68c91f7895d6b5a8b5086e8142d2e7ec0c19eecb..c60671414718eee0be2eb134688b7d80c1a06936 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 e177384cb1b0fa3f65ee8917f2c49d5b77114c63..0e8bbe74dccfb1f18b17565cea5649152761f1c6 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 0fdc26170e06646bbdbe8981121c9c359cb2ff8b..81ab12b7f5e49456cbcc6b289df5818e8ba6768f 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 1da3459f0a4c85d45cfedd4b1e298fae41db50ad..06a3800915a6f881b4eea95eb5388c09756a5d2f 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: [