diff --git a/lib/versioning/pep440/range.js b/lib/versioning/pep440/range.js index 092de87e74ebc891e3864ea8969bca73b50d425d..e4a9e21a6741137d82b352595bd9677ed267cb70 100644 --- a/lib/versioning/pep440/range.js +++ b/lib/versioning/pep440/range.js @@ -2,7 +2,7 @@ module.exports = { getNewValue, }; -function getNewValue(config, currentValue, fromVersion, toVersion) { +function getNewValue(config, fromVersion, toVersion) { const { rangeStrategy } = config; // istanbul ignore if if (rangeStrategy !== 'pin') { diff --git a/lib/versioning/semver/range.js b/lib/versioning/semver/range.js index 5a047141505193254451875574e1dbb5432bd476..89571cd306ab4e3a22245d11a1e75453c6061820 100644 --- a/lib/versioning/semver/range.js +++ b/lib/versioning/semver/range.js @@ -1,13 +1,13 @@ -const { inc: increment, major, minor, valid } = require('semver'); +const { inc: increment, major, minor, valid: isVersion } = require('semver'); const { parseRange } = require('semver-utils'); module.exports = { getNewValue, }; -function getNewValue(config, currentValue, fromVersion, toVersion) { - const { rangeStrategy } = config; - if (rangeStrategy === 'pin' || valid(currentValue)) { +function getNewValue(config, fromVersion, toVersion) { + const { currentValue, rangeStrategy } = config; + if (rangeStrategy === 'pin' || isVersion(currentValue)) { return toVersion; } const parsedRange = parseRange(currentValue); @@ -15,7 +15,6 @@ function getNewValue(config, currentValue, fromVersion, toVersion) { if (rangeStrategy === 'widen') { const newValue = getNewValue( { ...config, rangeStrategy: 'replace' }, - currentValue, fromVersion, toVersion ); diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index 1947b5da3bfa10bdc463e355d2855a06301a538c..3267151f0284bb8d9b6979af46c894831588c779 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -12,7 +12,8 @@ module.exports = { }; async function lookupUpdates(config) { - const { versionScheme, depName, currentValue, lockedVersion } = config; + const { depName, currentValue } = config; + logger.debug({ depName, currentValue }, 'lookupUpdates'); const { getMajor, getMinor, @@ -20,15 +21,15 @@ async function lookupUpdates(config) { isRange, matches, getNewValue, - } = versioning(versionScheme); - logger.debug({ depName, currentValue }, 'lookupUpdates'); - let dependency; + } = versioning(config.versionScheme); const purl = parse(config.purl); if (!purl) { logger.error('Missing purl'); return []; } + let dependency; if (purl.type === 'npm') { + // TODO: move this into datasource npmApi.setNpmrc( config.npmrc, config.global ? config.global.exposeEnv : false @@ -50,14 +51,15 @@ async function lookupUpdates(config) { { dependency: depName, packageFile: config.packageFile }, result.message ); + // TODO: return an object return [result]; } - const { latestVersion } = dependency; const allVersions = Object.keys(dependency.versions); // istanbul ignore if if (allVersions.length === 0) { const message = `No versions returned from registry for this package`; logger.warn({ dependency }, message); + // TODO: return an object return [ { type: 'warning', @@ -65,6 +67,7 @@ async function lookupUpdates(config) { }, ]; } + // Check that existing constraint can be satisfied const allSatisfyingVersions = allVersions.filter(version => matches(version, currentValue) ); @@ -73,13 +76,7 @@ async function lookupUpdates(config) { updates.push(getRollbackUpdate(config, allVersions)); } const rangeStrategy = getRangeStrategy(config); - const fromVersion = getFromVersion( - config, - currentValue, - rangeStrategy, - lockedVersion, - allVersions - ); + const fromVersion = getFromVersion(config, rangeStrategy, allVersions); if (isRange(currentValue) && rangeStrategy === 'pin') { updates.push({ type: 'pin', @@ -89,10 +86,11 @@ async function lookupUpdates(config) { unpublishable: false, }); } + // Filter latest, unstable, etc const filteredVersions = filterVersions( config, fromVersion, - latestVersion, + dependency.latestVersion, allVersions ); if (!filteredVersions.length) { @@ -101,7 +99,7 @@ async function lookupUpdates(config) { const buckets = {}; for (const toVersion of filteredVersions) { const update = { fromVersion, toVersion }; - update.newValue = getNewValue(config, currentValue, fromVersion, toVersion); + update.newValue = getNewValue(config, fromVersion, toVersion); if (!update.newValue || update.newValue === currentValue) { continue; // eslint-disable-line no-continue } @@ -175,14 +173,8 @@ function getBucket(config, update) { return type; } -function getFromVersion( - config, - currentValue, - rangeStrategy, - lockedVersion, - allVersions -) { - const { versionScheme } = config; +function getFromVersion(config, rangeStrategy, allVersions) { + const { currentValue, lockedVersion, versionScheme } = config; const { isRange, maxSatisfyingVersion, minSatisfyingVersion } = versioning( versionScheme ); diff --git a/lib/workers/repository/process/lookup/rollback.js b/lib/workers/repository/process/lookup/rollback.js index 3e6fed8a4dcf9ee80d539c974f823b5ec49cc9b8..2da5e4729efd22562cc2e9a53d3e90e0473ea34a 100644 --- a/lib/workers/repository/process/lookup/rollback.js +++ b/lib/workers/repository/process/lookup/rollback.js @@ -13,7 +13,7 @@ function getRollbackUpdate(config, versions) { if (!isLessThanRange) { logger.info( { versionScheme }, - 'Current version scheme does not suppot isLessThanRange()' + 'Current version scheme does not support isLessThanRange()' ); return []; } @@ -35,7 +35,7 @@ function getRollbackUpdate(config, versions) { lessThanVersions.sort(sortVersions); const toVersion = lessThanVersions.pop(); let fromVersion; - const newValue = getNewValue(config, currentValue, fromVersion, toVersion); + const newValue = getNewValue(config, fromVersion, toVersion); return { type: 'rollback', branchName: diff --git a/test/versioning/semver.spec.js b/test/versioning/semver.spec.js index 3f5d5d7218f9d56b6a42c065a490676c76a2cdd7..fa2b4df48ea9c3e11ac6d80dbfbbbb5ae54cb034 100644 --- a/test/versioning/semver.spec.js +++ b/test/versioning/semver.spec.js @@ -40,14 +40,17 @@ describe('semver.isRange(input)', () => { describe('semver.getNewValue()', () => { it('bumps equals', () => { expect( - semver.getNewValue({ rangeStrategy: 'bump' }, '=1.0.0', '1.0.0', '1.1.0') + semver.getNewValue( + { currentValue: '=1.0.0', rangeStrategy: 'bump' }, + '1.0.0', + '1.1.0' + ) ).toEqual('=1.1.0'); }); it('replaces equals', () => { expect( semver.getNewValue( - { rangeStrategy: 'replace' }, - '=1.0.0', + { currentValue: '=1.0.0', rangeStrategy: 'replace' }, '1.0.0', '1.1.0' )