diff --git a/lib/utils.js b/lib/utils.js index f015135c04..895e9d04d4 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -31,11 +31,14 @@ function isMaintenanceRange(range) { } function getUpperBound(range) { - return semver.valid(range) + const result = semver.valid(range) ? range - : ((semver.validRange(range) || '').match(/<(?\d+\.\d+\.\d+-\d+)$/) || [])[1] - // https://github.com/npm/node-semver/issues/322 - .replace(/-\d+$/, ''); + : ((semver.validRange(range) || '').match(/<(?\d+\.\d+\.\d+(-\d+)?)$/) || [])[1]; + + return result + ? // https://github.com/npm/node-semver/issues/322 + result.replace(/-\d+$/, '') + : result; } function getLowerBound(range) { diff --git a/test/utils.test.js b/test/utils.test.js index 0f609eb3b2..7ff6d2429c 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -71,17 +71,17 @@ test('isMaintenanceRange', (t) => { test('getUpperBound', (t) => { t.is(getUpperBound('1.x.x'), '2.0.0'); - // T.is(getUpperBound('1.X.X'), '2.0.0'); - // t.is(getUpperBound('10.x.x'), '11.0.0'); - // t.is(getUpperBound('1.x'), '2.0.0'); - // t.is(getUpperBound('10.x'), '11.0.0'); - // t.is(getUpperBound('1.0.x'), '1.1.0'); - // t.is(getUpperBound('10.0.x'), '10.1.0'); - // t.is(getUpperBound('10.10.x'), '10.11.0'); - // t.is(getUpperBound('1.0.0'), '1.0.0'); - // t.is(getUpperBound('10.0.0'), '10.0.0'); - - // t.is(getUpperBound('foo'), undefined); + t.is(getUpperBound('1.X.X'), '2.0.0'); + t.is(getUpperBound('10.x.x'), '11.0.0'); + t.is(getUpperBound('1.x'), '2.0.0'); + t.is(getUpperBound('10.x'), '11.0.0'); + t.is(getUpperBound('1.0.x'), '1.1.0'); + t.is(getUpperBound('10.0.x'), '10.1.0'); + t.is(getUpperBound('10.10.x'), '10.11.0'); + t.is(getUpperBound('1.0.0'), '1.0.0'); + t.is(getUpperBound('10.0.0'), '10.0.0'); + + t.is(getUpperBound('foo'), undefined); }); test('getLowerBound', (t) => {