Skip to content

Commit b4fa6e7

Browse files
committed
fix(cli): pass options to semver.valid() for loose version validation
The `--loose` flag was not being applied when validating input versions. The `options` object was already computed and passed to `coerce()` and `satisfies()`, but the `filter()` call using `semver.valid(v)` was missing the options parameter. This meant that loose versions like `1.2.3beta` would fail validation even when `-l` was specified, despite the documentation stating that `-l --loose` will "Interpret versions and ranges loosely".
1 parent d4f0f86 commit b4fa6e7

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

bin/semver.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ const main = () => {
105105
versions = versions.map((v) => {
106106
return coerce ? (semver.coerce(v, options) || { version: v }).version : v
107107
}).filter((v) => {
108-
return semver.valid(v)
108+
return semver.valid(v, options)
109109
})
110110
if (!versions.length) {
111111
return fail()

tap-snapshots/test/bin/semver.js.test.cjs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -348,15 +348,6 @@ Object {
348348
}
349349
`
350350

351-
exports[`test/bin/semver.js TAP inc tests > -i release 1.0.0-pre`] = `
352-
Object {
353-
"code": 0,
354-
"err": "",
355-
"out": "1.0.0\\n",
356-
"signal": null,
357-
}
358-
`
359-
360351
exports[`test/bin/semver.js TAP sorting and filtering > 1.2.3 -v 3.2.1 --version 2.3.4 -rv 1`] = `
361352
Object {
362353
"code": 0,
@@ -454,11 +445,24 @@ Object {
454445
}
455446
`
456447

448+
exports[`test/bin/semver.js TAP sorting and filtering > 1.2.3beta -l 1`] = `
449+
Object {
450+
"code": 0,
451+
"err": "",
452+
"out": "1.2.3-beta\\n",
453+
"signal": null,
454+
}
455+
`
456+
457457
exports[`test/bin/semver.js TAP sorting and filtering > 1.2.3foo 1.2.3-bar -l 1`] = `
458458
Object {
459459
"code": 0,
460460
"err": "",
461-
"out": "1.2.3-bar\\n",
461+
"out": String(
462+
1.2.3-bar
463+
1.2.3-foo
464+
465+
),
462466
"signal": null,
463467
}
464468
`
@@ -477,6 +481,7 @@ Object {
477481
"code": 0,
478482
"err": "",
479483
"out": String(
484+
2.0.0-asdf
480485
2.3.4-beta
481486
2.3.4
482487

test/bin/semver.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ t.test('sorting and filtering', t => Promise.all([
4949
['1.2.3', '-v', '3.2.1', '--version', '2.3.4', '-rv'],
5050
['1.2.3foo', '1.2.3-bar'],
5151
['1.2.3foo', '1.2.3-bar', '-l'],
52+
// Regression test: --loose should allow loose versions to be validated
53+
['1.2.3beta', '-l'],
5254
['1.2.3', '3.2.1', '-r', '2.x', '2.3.4'],
5355
['1.2.3', '3.2.1', '2.3.4', '2.3.4-beta', '2.0.0asdf', '-r', '2.x'],
5456
['1.2.3', '3.2.1', '2.3.4', '2.3.4-beta', '2.0.0asdf', '-r', '2.x', '-p'],

0 commit comments

Comments
 (0)