From c6be31543df1ef1edfd41daf5bb600ebdb192ad8 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 4 Mar 2018 07:35:18 +0100 Subject: [PATCH] refactor: improve migration scripts --- lib/config/migration.js | 21 +++----- .../migrate-validate.spec.js.snap | 4 +- .../__snapshots__/migration.spec.js.snap | 49 +++++++------------ .../config/__snapshots__/presets.spec.js.snap | 4 +- test/config/migration.spec.js | 2 - 5 files changed, 30 insertions(+), 50 deletions(-) diff --git a/lib/config/migration.js b/lib/config/migration.js index 138717c71f..29ad98347a 100644 --- a/lib/config/migration.js +++ b/lib/config/migration.js @@ -52,7 +52,7 @@ function migrateConfig(config) { if (val[i] === 'config:application' || val[i] === ':js-app') { isMigrated = true; migratedConfig.extends[i] = 'config:js-app'; - } else if (val[i] === 'config:library') { + } else if (val[i] === ':library' || val[i] === 'config:library') { isMigrated = true; migratedConfig.extends[i] = 'config:js-lib'; } @@ -81,24 +81,17 @@ function migrateConfig(config) { typeof val === 'string' && ['none', 'patch', 'minor', 'any'].indexOf(val) !== -1 ) { - delete migratedConfig.automerge; isMigrated = true; + delete migratedConfig.automerge; + migratedConfig.extends = migratedConfig.extends || []; if (val === 'none') { - migratedConfig.automerge = false; + migratedConfig.extends.push(':automergeDisabled'); } else if (val === 'patch') { - migratedConfig.patch = migratedConfig.patch || {}; - migratedConfig.patch.automerge = true; - migratedConfig.minor = migratedConfig.minor || {}; - migratedConfig.minor.automerge = false; - migratedConfig.major = migratedConfig.major || {}; - migratedConfig.major.automerge = false; + migratedConfig.extends.push(':automergePatch'); } else if (val === 'minor') { - migratedConfig.minor = migratedConfig.minor || {}; - migratedConfig.minor.automerge = true; - migratedConfig.major = migratedConfig.major || {}; - migratedConfig.major.automerge = false; + migratedConfig.extends.push(':automergeMinor'); } else if (val === 'any') { - migratedConfig.automerge = true; + migratedConfig.extends.push(':automergeAll'); } } 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 1ac51fbf44..a71ec42566 100644 --- a/test/config/__snapshots__/migrate-validate.spec.js.snap +++ b/test/config/__snapshots__/migrate-validate.spec.js.snap @@ -22,8 +22,10 @@ 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 7afd0def49..3aa3a49543 100644 --- a/test/config/__snapshots__/migration.spec.js.snap +++ b/test/config/__snapshots__/migration.spec.js.snap @@ -9,30 +9,29 @@ 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 { - "major": Object { - "automerge": false, - }, - "minor": Object { - "automerge": true, - }, + "extends": Array [ + ":automergeMinor", + ], "schedule": Array [], }, "enabled": true, "extends": Array [ "config:js-app", "config:js-lib", + ":automergeDisabled", ], "ignorePaths": Array [ "node_modules/", ], "lockFileMaintenance": Object { - "automerge": true, + "extends": Array [ + ":automergeAll", + ], "schedule": "before 5am", }, "major": Object { @@ -46,12 +45,9 @@ Object { }, "onboarding": false, "optionalDependencies": Object { - "major": Object { - "automerge": false, - }, - "minor": Object { - "automerge": true, - }, + "extends": Array [ + ":automergeMinor", + ], "respectLatest": false, "schedule": "before 5am on Monday", }, @@ -93,7 +89,9 @@ Object { exports[`config/migration migrateConfig(config, parentConfig) it migrates node to travis 1`] = ` Object { "node": Object { - "automerge": false, + "extends": Array [ + ":automergeDisabled", + ], "supportPolicy": Array [ "lts", ], @@ -127,24 +125,15 @@ Object { exports[`config/migration migrateConfig(config, parentConfig) it overrides existing automerge setting 1`] = ` Object { - "major": Object { - "automerge": false, - }, - "minor": Object { - "automerge": true, - }, + "extends": Array [ + ":automergeMinor", + ], "packageRules": Array [ Object { - "major": Object { - "automerge": false, - }, - "minor": Object { - "automerge": false, - }, + "extends": Array [ + ":automergePatch", + ], "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 4eb4714d24..376bc6a475 100644 --- a/test/config/__snapshots__/presets.spec.js.snap +++ b/test/config/__snapshots__/presets.spec.js.snap @@ -259,6 +259,7 @@ 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 { @@ -280,9 +281,6 @@ 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 076df2910e..dd77c9153f 100644 --- a/test/config/migration.spec.js +++ b/test/config/migration.spec.js @@ -66,7 +66,6 @@ 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', () => { @@ -192,7 +191,6 @@ 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 = { -- GitLab