From 527c355b487c80ffa39def7f5d840eab89e85b65 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 3 Jun 2018 14:25:05 +0200 Subject: [PATCH] refactor: move getRangeStrategy to manager (#2072) --- lib/manager/index.js | 13 ++++++++++ lib/manager/npm/index.js | 2 ++ .../process/lookup => manager/npm}/range.js | 0 .../repository/process/lookup/index.js | 2 +- .../lookup => manager/npm}/range.spec.js | 4 +-- test/manager/range.spec.js | 25 +++++++++++++++++++ .../repository/process/lookup/index.spec.js | 1 + 7 files changed, 43 insertions(+), 4 deletions(-) rename lib/{workers/repository/process/lookup => manager/npm}/range.js (100%) rename test/{workers/repository/process/lookup => manager/npm}/range.spec.js (93%) create mode 100644 test/manager/range.spec.js diff --git a/lib/manager/index.js b/lib/manager/index.js index 517032dcc8..d4b38352cd 100644 --- a/lib/manager/index.js +++ b/lib/manager/index.js @@ -44,3 +44,16 @@ for (const f of managerFunctions) { return null; }; } + +module.exports.getRangeStrategy = config => { + const { manager, rangeStrategy } = config; + if (managers[manager].getRangeStrategy) { + // Use manager's own function if it exists + return managers[manager].getRangeStrategy(config); + } + if (rangeStrategy === 'auto') { + // default to 'replace' for auto + return 'replace'; + } + return config.rangeStrategy; +}; diff --git a/lib/manager/npm/index.js b/lib/manager/npm/index.js index 7e2a63ab19..79e23f9fdc 100644 --- a/lib/manager/npm/index.js +++ b/lib/manager/npm/index.js @@ -1,9 +1,11 @@ const { extractDependencies, postExtract } = require('./extract'); const { updateDependency } = require('./update'); +const { getRangeStrategy } = require('./range'); module.exports = { extractDependencies, postExtract, + getRangeStrategy, updateDependency, supportsLockFileMaintenance: true, }; diff --git a/lib/workers/repository/process/lookup/range.js b/lib/manager/npm/range.js similarity index 100% rename from lib/workers/repository/process/lookup/range.js rename to lib/manager/npm/range.js diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index 408f9dca0e..2e42480f44 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -1,7 +1,7 @@ const versioning = require('../../../../versioning/semver'); const moment = require('moment'); const { getRollbackUpdate } = require('./rollback'); -const { getRangeStrategy } = require('./range'); +const { getRangeStrategy } = require('../../../../manager'); const { filterVersions } = require('./filter'); const npmApi = require('../../../../datasource/npm'); const github = require('../../../../datasource/github'); diff --git a/test/workers/repository/process/lookup/range.spec.js b/test/manager/npm/range.spec.js similarity index 93% rename from test/workers/repository/process/lookup/range.spec.js rename to test/manager/npm/range.spec.js index f7e3622095..93e4235da5 100644 --- a/test/workers/repository/process/lookup/range.spec.js +++ b/test/manager/npm/range.spec.js @@ -1,6 +1,4 @@ -const { - getRangeStrategy, -} = require('../../../../../lib/workers/repository/process/lookup/range'); +const { getRangeStrategy } = require('../../../lib/manager/npm'); describe('getRangeStrategy', () => { it('returns same if not auto', () => { diff --git a/test/manager/range.spec.js b/test/manager/range.spec.js new file mode 100644 index 0000000000..1f45419e2f --- /dev/null +++ b/test/manager/range.spec.js @@ -0,0 +1,25 @@ +const { getRangeStrategy } = require('../../lib/manager'); + +describe('getRangeStrategy', () => { + it('returns same if not auto', () => { + const config = { manager: 'npm', rangeStrategy: 'widen' }; + expect(getRangeStrategy(config)).toEqual('widen'); + }); + it('returns manager strategy', () => { + const config = { + manager: 'npm', + rangeStrategy: 'auto', + depType: 'dependencies', + packageJsonType: 'app', + }; + expect(getRangeStrategy(config)).toEqual('pin'); + }); + it('defaults to replace', () => { + const config = { manager: 'circleci', rangeStrategy: 'auto' }; + expect(getRangeStrategy(config)).toEqual('replace'); + }); + it('returns rangeStrategy if not auto', () => { + const config = { manager: 'circleci', rangeStrategy: 'future' }; + expect(getRangeStrategy(config)).toEqual('future'); + }); +}); diff --git a/test/workers/repository/process/lookup/index.spec.js b/test/workers/repository/process/lookup/index.spec.js index 11ecaee637..4083507580 100644 --- a/test/workers/repository/process/lookup/index.spec.js +++ b/test/workers/repository/process/lookup/index.spec.js @@ -15,6 +15,7 @@ let config; describe('manager/npm/lookup', () => { beforeEach(() => { config = { ...require('../../../../../lib/config/defaults').getConfig() }; + config.manager = 'npm'; config.rangeStrategy = 'replace'; jest.resetAllMocks(); }); -- GitLab