diff --git a/lib/manager/index.js b/lib/manager/index.js index 517032dcc85fa5d60e3c5563e92ca933087e6865..d4b38352cdd709b515b6dc54fbf7687f10ac8231 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 7e2a63ab1926e516feda4e27b55b2f701207f7a9..79e23f9fdcc3550d66880369d8622a7f13a52232 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 408f9dca0e1f03092c962d16526fdbfbf2028135..2e42480f44cdec81a1cf7bca2b24e692fec16abb 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 f7e3622095f0905c4c06cdc815c4c8c29b781793..93e4235da5f49b2b3531b5850b7139d95c53ab78 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 0000000000000000000000000000000000000000..1f45419e2f4144c2700c75684a760d1b114d37e4 --- /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 11ecaee6379e772d7ea5351d65be83d54ea6d7a7..4083507580819a8351ea9f66c1678cb9cf053d32 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(); });