diff --git a/lib/config/migration.js b/lib/config/migration.js index feaeae93a239a64c34da31a2e6e8da46eae7d0d6..b6e53fa9ea72d766364de1cfb55fa073a37cf1b5 100644 --- a/lib/config/migration.js +++ b/lib/config/migration.js @@ -81,17 +81,24 @@ function migrateConfig(config) { typeof val === 'string' && ['none', 'patch', 'minor', 'any'].indexOf(val) !== -1 ) { - isMigrated = true; delete migratedConfig.automerge; - migratedConfig.extends = migratedConfig.extends || []; + isMigrated = true; if (val === 'none') { - migratedConfig.extends.push(':automergeDisabled'); + migratedConfig.automerge = false; } else if (val === 'patch') { - migratedConfig.extends.push(':automergePatch'); + migratedConfig.patch = migratedConfig.patch || {}; + migratedConfig.patch.automerge = true; + migratedConfig.minor = migratedConfig.minor || {}; + migratedConfig.minor.automerge = false; + migratedConfig.major = migratedConfig.major || {}; + migratedConfig.major.automerge = false; } else if (val === 'minor') { - migratedConfig.extends.push(':automergeMinor'); + migratedConfig.minor = migratedConfig.minor || {}; + migratedConfig.minor.automerge = true; + migratedConfig.major = migratedConfig.major || {}; + migratedConfig.major.automerge = false; } else if (val === 'any') { - migratedConfig.extends.push(':automergeAll'); + migratedConfig.automerge = true; } } else if (key === 'packages') { isMigrated = true; diff --git a/test/config/__snapshots__/migrate-validate.spec.js.snap b/test/config/__snapshots__/migrate-validate.spec.js.snap index a71ec4256632c7dff47904af39f72bf93fcf3103..1ac51fbf44ea88d34e6a1d13867c1819d8c5ddbd 100644 --- a/test/config/__snapshots__/migrate-validate.spec.js.snap +++ b/test/config/__snapshots__/migrate-validate.spec.js.snap @@ -22,10 +22,8 @@ Object { exports[`config/migrate-validate migrateAndValidate() handles migration 1`] = ` Object { + "automerge": false, "errors": Array [], - "extends": Array [ - ":automergeDisabled", - ], "warnings": Array [], } `; diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap index 3aa3a495430b4bdaab272c6bf1bbbe94ebc61ae1..7afd0def49684d713aaa290d156a86a09bf68a7e 100644 --- a/test/config/__snapshots__/migration.spec.js.snap +++ b/test/config/__snapshots__/migration.spec.js.snap @@ -9,29 +9,30 @@ Object { exports[`config/migration migrateConfig(config, parentConfig) it migrates config 1`] = ` Object { "autodiscover": true, + "automerge": false, "baseBranches": Array [ "next", ], "commitMessage": "some commit message", "devDependencies": Object { - "extends": Array [ - ":automergeMinor", - ], + "major": Object { + "automerge": false, + }, + "minor": Object { + "automerge": true, + }, "schedule": Array [], }, "enabled": true, "extends": Array [ "config:js-app", "config:js-lib", - ":automergeDisabled", ], "ignorePaths": Array [ "node_modules/", ], "lockFileMaintenance": Object { - "extends": Array [ - ":automergeAll", - ], + "automerge": true, "schedule": "before 5am", }, "major": Object { @@ -45,9 +46,12 @@ Object { }, "onboarding": false, "optionalDependencies": Object { - "extends": Array [ - ":automergeMinor", - ], + "major": Object { + "automerge": false, + }, + "minor": Object { + "automerge": true, + }, "respectLatest": false, "schedule": "before 5am on Monday", }, @@ -89,9 +93,7 @@ Object { exports[`config/migration migrateConfig(config, parentConfig) it migrates node to travis 1`] = ` Object { "node": Object { - "extends": Array [ - ":automergeDisabled", - ], + "automerge": false, "supportPolicy": Array [ "lts", ], @@ -125,15 +127,24 @@ Object { exports[`config/migration migrateConfig(config, parentConfig) it overrides existing automerge setting 1`] = ` Object { - "extends": Array [ - ":automergeMinor", - ], + "major": Object { + "automerge": false, + }, + "minor": Object { + "automerge": true, + }, "packageRules": Array [ Object { - "extends": Array [ - ":automergePatch", - ], + "major": Object { + "automerge": false, + }, + "minor": Object { + "automerge": false, + }, "packagePatterns": "^(@angular|typescript)", + "patch": Object { + "automerge": true, + }, }, ], } diff --git a/test/config/__snapshots__/presets.spec.js.snap b/test/config/__snapshots__/presets.spec.js.snap index 376bc6a475a142d087b025a2de57f195281ad3e6..4eb4714d24a41776b1a68333b5092cbd49c37ff6 100644 --- a/test/config/__snapshots__/presets.spec.js.snap +++ b/test/config/__snapshots__/presets.spec.js.snap @@ -259,7 +259,6 @@ Object { "Use <code>renovate/</code> as prefix for all branch names", "If semantic commits detected, use <code>fix(deps):</code> for dependencies and <code>chore(deps):</code> for all others", "Require all status checks to pass before any automerging", - "Automerge patch or minor upgrades if they pass tests", "Pin dependency versions for <code>devDependencies</code> and retain semver ranges for others", ], "devDependencies": Object { @@ -281,6 +280,9 @@ Object { "before 8am on Monday", ], }, + "major": Object { + "automerge": false, + }, "minor": Object { "automerge": true, }, diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js index dd77c9153f3562c36411612fbd2d4cc038665f54..076df2910e6f332e49ab6f1c5fc6c1a0197015e0 100644 --- a/test/config/migration.spec.js +++ b/test/config/migration.spec.js @@ -66,6 +66,7 @@ describe('config/migration', () => { expect(isMigrated).toBe(true); expect(migratedConfig.depTypes).not.toBeDefined(); expect(migratedConfig.optionalDependencies.respectLatest).toBe(false); + expect(migratedConfig.automerge).toEqual(false); expect(migratedConfig).toMatchSnapshot(); }); it('migrates before and after schedules', () => { @@ -191,6 +192,7 @@ describe('config/migration', () => { ); expect(isMigrated).toBe(true); expect(migratedConfig).toMatchSnapshot(); + expect(migratedConfig.packageRules[0].minor.automerge).toBe(false); }); it('it does not migrate config', () => { const config = {