diff --git a/lib/config/migration.ts b/lib/config/migration.ts index 27154e54c2a543da44381f33a507d4200acbfabf..59dd5a52d2fa3d3a352368b6752c4b331331a153 100644 --- a/lib/config/migration.ts +++ b/lib/config/migration.ts @@ -412,9 +412,6 @@ export function migrateConfig( } migratedConfig[key] = newArray; } - } else if (key === 'compatibility' && is.object(val)) { - migratedConfig.constraints = migratedConfig.compatibility; - delete migratedConfig.compatibility; } else if (is.object(val)) { const subMigrate = migrateConfig( migratedConfig[key] as RenovateConfig, diff --git a/lib/config/migrations/custom/compatibility-migration.spec.ts b/lib/config/migrations/custom/compatibility-migration.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8e44860120a0fdfb8c517ede4a846031b18c2233 --- /dev/null +++ b/lib/config/migrations/custom/compatibility-migration.spec.ts @@ -0,0 +1,27 @@ +import { CompatibilityMigration } from './compatibility-migration'; + +describe('config/migrations/custom/compatibility-migration', () => { + it('should migrate object', () => { + expect(CompatibilityMigration).toMigrate( + { + compatibility: { + test: 'test', + }, + }, + { + constraints: { + test: 'test', + }, + } + ); + }); + + it('should just remove property when compatibility is not an object', () => { + expect(CompatibilityMigration).toMigrate( + { + compatibility: 'test', + }, + {} + ); + }); +}); diff --git a/lib/config/migrations/custom/compatibility-migration.ts b/lib/config/migrations/custom/compatibility-migration.ts new file mode 100644 index 0000000000000000000000000000000000000000..a22ddb1485a81dd0f871f1afd7e4acb7b7bd3bf1 --- /dev/null +++ b/lib/config/migrations/custom/compatibility-migration.ts @@ -0,0 +1,13 @@ +import is from '@sindresorhus/is'; +import { AbstractMigration } from '../base/abstract-migration'; + +export class CompatibilityMigration extends AbstractMigration { + override readonly deprecated = true; + override readonly propertyName = 'compatibility'; + + override run(value: unknown): void { + if (is.object(value)) { + this.setSafely('constraints', value); + } + } +} diff --git a/lib/config/migrations/migrations-service.ts b/lib/config/migrations/migrations-service.ts index 447d57c645e78f472d47b539e30a03d068fc279c..60caacfd7a8cef7b73513e4334927b7d12195012 100644 --- a/lib/config/migrations/migrations-service.ts +++ b/lib/config/migrations/migrations-service.ts @@ -3,6 +3,7 @@ import type { RenovateConfig } from '../types'; import { RemovePropertyMigration } from './base/remove-property-migration'; import { RenamePropertyMigration } from './base/rename-property-migration'; import { BinarySourceMigration } from './custom/binary-source-migration'; +import { CompatibilityMigration } from './custom/compatibility-migration'; import { ComposerIgnorePlatformReqsMigration } from './custom/composer-ignore-platform-reqs-migration'; import { EnabledManagersMigration } from './custom/enabled-managers-migration'; import { GoModTidyMigration } from './custom/go-mod-tidy-migration'; @@ -48,6 +49,7 @@ export class MigrationsService { static readonly customMigrations: ReadonlyArray<MigrationConstructor> = [ BinarySourceMigration, + CompatibilityMigration, ComposerIgnorePlatformReqsMigration, EnabledManagersMigration, GoModTidyMigration,