From 6c6b1756cb2504a593ca85331a3a64147d882002 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@keylocation.sg> Date: Wed, 2 Aug 2017 14:41:25 +0200 Subject: [PATCH] fix: Migration check should set flag true at all times (#578) --- lib/config/migration.js | 7 ++++++ .../__snapshots__/migration.spec.js.snap | 10 +++++++++ test/config/migration.spec.js | 22 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/lib/config/migration.js b/lib/config/migration.js index 9c017cf294..eb2376f8dc 100644 --- a/lib/config/migration.js +++ b/lib/config/migration.js @@ -34,7 +34,14 @@ function migrateConfig(config) { } } }); + isMigrated = true; delete migratedConfig.depTypes; + } else if (isObject(val)) { + const subMigrate = migrateConfig(val); + if (subMigrate.isMigrated) { + isMigrated = true; + migratedConfig[key] = subMigrate.migratedConfig; + } } } return { isMigrated, migratedConfig }; diff --git a/test/config/__snapshots__/migration.spec.js.snap b/test/config/__snapshots__/migration.spec.js.snap index 6ea6cee4fc..ef00800e7f 100644 --- a/test/config/__snapshots__/migration.spec.js.snap +++ b/test/config/__snapshots__/migration.spec.js.snap @@ -8,3 +8,13 @@ Object { }, } `; + +exports[`config/migration migrateConfig(config) it migrates subconfig 1`] = ` +Object { + "lockFileMaintenance": Object { + "optionalDependencies": Object { + "respectLatest": false, + }, + }, +} +`; diff --git a/test/config/migration.spec.js b/test/config/migration.spec.js index eebde0d06b..4e9db9c9a2 100644 --- a/test/config/migration.spec.js +++ b/test/config/migration.spec.js @@ -33,5 +33,27 @@ describe('config/migration', () => { expect(isMigrated).toBe(false); expect(migratedConfig).toMatchObject(config); }); + it('it migrates subconfig', () => { + const config = { + lockFileMaintenance: { + depTypes: [ + 'dependencies', + { + depType: 'optionalDependencies', + respectLatest: false, + }, + ], + }, + }; + const { isMigrated, migratedConfig } = configMigration.migrateConfig( + config + ); + expect(isMigrated).toBe(true); + expect(migratedConfig).toMatchSnapshot(); + expect(migratedConfig.lockFileMaintenance.depTypes).not.toBeDefined(); + expect( + migratedConfig.lockFileMaintenance.optionalDependencies.respectLatest + ).toBe(false); + }); }); }); -- GitLab