From bbc0daa301804032b38127ed6d037fba85069c13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kat=20March=C3=A1n?= Date: Wed, 28 Jun 2017 20:06:21 -0700 Subject: [PATCH] fix(semver): use loose semver parsing for *all* ops --- index.js | 4 ++-- test/index.js | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 87d9a95..04e7e7f 100644 --- a/index.js +++ b/index.js @@ -9,10 +9,10 @@ function pickManifest (packument, wanted, opts) { const spec = npa.resolve(packument.name, wanted) const type = spec.type if (type === 'version' || type === 'range') { - wanted = semver.clean(wanted) || wanted + wanted = semver.clean(wanted, true) || wanted } const distTags = packument['dist-tags'] || {} - const versions = Object.keys(packument.versions || {}).filter(v => semver.valid(v)) + const versions = Object.keys(packument.versions || {}).filter(v => semver.valid(v, true)) let err if (!versions.length) { diff --git a/test/index.js b/test/index.js index d466923..fae6da3 100644 --- a/test/index.js +++ b/test/index.js @@ -208,3 +208,17 @@ test('matches even if requested version has spaces', t => { t.equal(manifest.version, '1.0.0', 'picked the right manifest even though `wanted` had spaced') t.done() }) + +test('matches even if requested version has garbage', t => { + const metadata = { + versions: { + '1.0.0': { version: '1.0.0' }, + '1.0.1': { version: '1.0.1' }, + '1.0.2': { version: '1.0.2' }, + '2.0.0': { version: '2.0.0' } + } + } + const manifest = pickManifest(metadata, '== 1.0.0 || foo') + t.equal(manifest.version, '1.0.0', 'picked the right manifest even though `wanted` had garbage') + t.done() +})