diff --git a/lib/config/migration.js b/lib/config/migration.js index e922f503b393ff832c3707dd0f10b4e34496dbe4..3d81881c16ced72b2b01a330972e42d7cffe1471 100644 --- a/lib/config/migration.js +++ b/lib/config/migration.js @@ -42,15 +42,23 @@ function migrateConfig(config, parentConfig) { if (val === 'none') { migratedConfig.automerge = false; } - if (val === 'patch' || val === 'minor') { + if (val === 'patch') { delete migratedConfig.automerge; migratedConfig.patch = migratedConfig.patch || {}; migratedConfig.patch.automerge = true; + migratedConfig.minor = migratedConfig.minor || {}; + migratedConfig.minor.automerge = false; + migratedConfig.major = migratedConfig.major || {}; + migratedConfig.major.automerge = false; } if (val === 'minor') { delete migratedConfig.automerge; + migratedConfig.patch = migratedConfig.patch || {}; + migratedConfig.patch.automerge = true; migratedConfig.minor = migratedConfig.minor || {}; migratedConfig.minor.automerge = true; + migratedConfig.major = migratedConfig.major || {}; + migratedConfig.major.automerge = false; } if (val === 'any') { migratedConfig.automerge = true; diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap index e18f201fc84889db5f75fa16f2f0ccb513cb4c38..beb03b78254af640ce26a8f1bac1e3f8fc92eedc 100644 --- a/test/config/__snapshots__/migration.spec.js.snap +++ b/test/config/__snapshots__/migration.spec.js.snap @@ -6,6 +6,9 @@ Object { "automerge": false, "commitMessage": "some commit message", "devDependencies": Object { + "major": Object { + "automerge": false, + }, "minor": Object { "automerge": true, }, @@ -70,3 +73,31 @@ Object { }, } `; + +exports[`config/migration migrateConfig(config, parentConfig) it overrides existing automerge setting 1`] = ` +Object { + "major": Object { + "automerge": false, + }, + "minor": Object { + "automerge": true, + }, + "packageRules": Array [ + Object { + "major": Object { + "automerge": false, + }, + "minor": Object { + "automerge": false, + }, + "packagePatterns": "^(@angular|typescript)", + "patch": Object { + "automerge": true, + }, + }, + ], + "patch": Object { + "automerge": true, + }, +} +`; diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js index 97c155f819763723e0480b9636283107f3193608..17b71fb3a447128b627105652190aed82711e285 100644 --- a/test/config/migration.spec.js +++ b/test/config/migration.spec.js @@ -72,6 +72,25 @@ describe('config/migration', () => { expect(isMigrated).toBe(true); expect(migratedConfig).toMatchSnapshot(); }); + it('it overrides existing automerge setting', () => { + const config = { + automerge: 'minor', + packages: [ + { + packagePatterns: '^(@angular|typescript)', + automerge: 'patch', + }, + ], + }; + const parentConfig = { ...defaultConfig }; + const { isMigrated, migratedConfig } = configMigration.migrateConfig( + config, + parentConfig + ); + expect(isMigrated).toBe(true); + expect(migratedConfig).toMatchSnapshot(); + expect(migratedConfig.packageRules[0].minor.automerge).toBe(false); + }); it('it does not migrate config', () => { const config = { enabled: true,