diff --git a/lib/config/migration.ts b/lib/config/migration.ts index f1c7834e9dab1aef5bc82eb4dd5e040840ab9f26..28c4249cc17467e1e9a9490b3cbc02d1dbd7624d 100644 --- a/lib/config/migration.ts +++ b/lib/config/migration.ts @@ -198,12 +198,6 @@ export function migrateConfig( } } delete migratedConfig.unpublishSafe; - } else if ( - key === 'automergeType' && - is.string(val) && - val.startsWith('branch-') - ) { - migratedConfig.automergeType = 'branch'; } else if (key === 'automergeMinor') { migratedConfig.minor = migratedConfig.minor || {}; migratedConfig.minor.automerge = !!val; diff --git a/lib/config/migrations/custom/automerge-type-migration.spec.ts b/lib/config/migrations/custom/automerge-type-migration.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..14c96dd73e409803280e0358f414ca3e710b39a3 --- /dev/null +++ b/lib/config/migrations/custom/automerge-type-migration.spec.ts @@ -0,0 +1,38 @@ +import { AutomergeTypeMigration } from './automerge-type-migration'; + +describe('config/migrations/custom/automerge-type-migration', () => { + it('should migrate string like "branch-" to "branch"', () => { + expect(AutomergeTypeMigration).toMigrate( + { + automergeType: 'branch-test', + }, + { + automergeType: 'branch', + } + ); + }); + + it('should not migrate another string value', () => { + expect(AutomergeTypeMigration).toMigrate( + { + automergeType: 'test', + }, + { + automergeType: 'test', + }, + false + ); + }); + + it('should not migrate non string value', () => { + expect(AutomergeTypeMigration).toMigrate( + { + automergeType: true, + }, + { + automergeType: true, + }, + false + ); + }); +}); diff --git a/lib/config/migrations/custom/automerge-type-migration.ts b/lib/config/migrations/custom/automerge-type-migration.ts new file mode 100644 index 0000000000000000000000000000000000000000..1956824a82d9f9648edd77511dd5c3622ca599cd --- /dev/null +++ b/lib/config/migrations/custom/automerge-type-migration.ts @@ -0,0 +1,12 @@ +import is from '@sindresorhus/is'; +import { AbstractMigration } from '../base/abstract-migration'; + +export class AutomergeTypeMigration extends AbstractMigration { + override readonly propertyName = 'automergeType'; + + override run(value: unknown): void { + if (is.string(value) && value.startsWith('branch-')) { + this.rewrite('branch'); + } + } +} diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts index 072383bdf861b4cbc519c9d5787f006f995dc27e..d24c4e2f7eb3a1a86f77848a78236ba69b403f43 100644 --- a/lib/config/migrations/migrations-service.ts +++ b/lib/config/migrations/migrations-service.ts @@ -2,6 +2,7 @@ import { dequal } from 'dequal'; import type { RenovateConfig } from '../types'; import { RemovePropertyMigration } from './base/remove-property-migration'; import { RenamePropertyMigration } from './base/rename-property-migration'; +import { AutomergeTypeMigration } from './custom/automerge-type-migration'; import { BinarySourceMigration } from './custom/binary-source-migration'; import { CompatibilityMigration } from './custom/compatibility-migration'; import { ComposerIgnorePlatformReqsMigration } from './custom/composer-ignore-platform-reqs-migration'; @@ -54,6 +55,7 @@ export class MigrationsService { ]); static readonly customMigrations: ReadonlyArray<MigrationConstructor> = [ + AutomergeTypeMigration, BinarySourceMigration, CompatibilityMigration, ComposerIgnorePlatformReqsMigration,