From 317f8cae9856b3813cfbdeeb2deb024108319100 Mon Sep 17 00:00:00 2001 From: Maksim <m.v.sharipov@gmail.com> Date: Sat, 12 Mar 2022 23:31:46 +0100 Subject: [PATCH] refactor(migrations): automergeType (#14626) --- lib/config/migration.ts | 6 --- .../custom/automerge-type-migration.spec.ts | 38 +++++++++++++++++++ .../custom/automerge-type-migration.ts | 12 ++++++ lib/config/migrations/migrations-service.ts | 2 + 4 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 lib/config/migrations/custom/automerge-type-migration.spec.ts create mode 100644 lib/config/migrations/custom/automerge-type-migration.ts diff --git a/lib/config/migration.ts b/lib/config/migration.ts index f1c7834e9d..28c4249cc1 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 0000000000..14c96dd73e --- /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 0000000000..1956824a82 --- /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 072383bdf8..d24c4e2f7e 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, -- GitLab