Skip to content

Commit 2d01126

Browse files
alfredsgenkinsisaacs
authored andcommittedDec 1, 2020
MinVersion failing for '^2.16.2 ^2.16' alike range
Patch for issue #340 EDIT(@isaacs): updated to make it not break other stuff, and added test. PR-URL: #341 Credit: @alfredsgenkins Close: #341 Reviewed-by: @isaacs
1 parent a7acc5d commit 2d01126

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed
 

‎ranges/min-version.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const minVersion = (range, loose) => {
1919
for (let i = 0; i < range.set.length; ++i) {
2020
const comparators = range.set[i]
2121

22+
let setMin = null
2223
comparators.forEach((comparator) => {
2324
// Clone to avoid manipulating the comparator's semver object.
2425
const compver = new SemVer(comparator.semver.version)
@@ -33,8 +34,8 @@ const minVersion = (range, loose) => {
3334
/* fallthrough */
3435
case '':
3536
case '>=':
36-
if (!minver || gt(minver, compver)) {
37-
minver = compver
37+
if (!setMin || gt(compver, setMin)) {
38+
setMin = compver
3839
}
3940
break
4041
case '<':
@@ -46,6 +47,8 @@ const minVersion = (range, loose) => {
4647
throw new Error(`Unexpected operation: ${comparator.operator}`)
4748
}
4849
})
50+
if (setMin && (!minver || gt(minver, setMin)))
51+
minver = setMin
4952
}
5053

5154
if (minver && range.test(minver)) {

‎test/ranges/min-version.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ test('minimum version in range tests', (t) => {
3333
['^1.1.1', '1.1.1'],
3434
['^1.1.1-beta', '1.1.1-beta'],
3535
['^1.1.1 || >=2', '1.1.1'],
36+
['^2.16.2 ^2.16', '2.16.2'],
3637

3738
// '-' operator
3839
['1.1.1 - 1.8.0', '1.1.1'],
@@ -69,7 +70,10 @@ test('minimum version in range tests', (t) => {
6970
const loose = tuple[2] || false
7071
const msg = `minVersion(${range}, ${loose}) = ${version}`
7172
const min = minVersion(range, loose)
72-
t.ok(min === version || (min && min.version === version), msg)
73+
t.ok(min === version || (min && min.version === version), msg, {
74+
found: min,
75+
wanted: version,
76+
})
7377
})
7478
t.end()
7579
})

0 commit comments

Comments
 (0)
Please sign in to comment.