Visitar URL original
fix: align caret includePrerelease lower bounds (#872) · npm/node-semver@046da7f · GitHub
Skip to content

Commit 046da7f

Browse files
authored
fix: align caret includePrerelease lower bounds (#872)
## Summary - keep exact caret lower bounds at the release version when `includePrerelease` is enabled - add regression fixtures for `^0.0.3` and `^0.2.3` prerelease versions matching the existing `^1.0.0` behavior ## Root Cause For exact `0.x` caret ranges without an explicit prerelease, `replaceCaret` appended `-0` to the lower bound when `includePrerelease` was enabled. That turned `^0.0.3` into `>=0.0.3-0 <0.0.4-0`, allowing `0.0.3-alpha` while exact `1.x` caret ranges kept `>=1.2.3` and rejected `1.2.3-alpha`. ## Test Plan - RED: Node assert script confirmed `satisfies('0.0.3-alpha', '^0.0.3', { includePrerelease: true })` returned `true` before the fix - GREEN: Node assert script for `0.0.3-alpha`, `0.2.3-alpha`, and `1.2.3-alpha` all returning `false` - `node` fixture script covering range include/exclude fixtures: 121 include and 98 exclude cases - broader `node` range verification script: 1348 checks across range parsing, intersects, outside/gtr/ltr, min/max satisfying, and toComparators - `git diff --check HEAD^ HEAD` Fixes #557
1 parent efafcf8 commit 046da7f

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

‎classes/range.js‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,10 +373,10 @@ const replaceCaret = (comp, options) => {
373373
if (M === '0') {
374374
if (m === '0') {
375375
ret = `>=${M}.${m}.${p
376-
}${z} <${M}.${m}.${+p + 1}-0`
376+
} <${M}.${m}.${+p + 1}-0`
377377
} else {
378378
ret = `>=${M}.${m}.${p
379-
}${z} <${M}.${+m + 1}.0-0`
379+
} <${M}.${+m + 1}.0-0`
380380
}
381381
} else {
382382
ret = `>=${M}.${m}.${p

‎test/fixtures/range-exclude.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ module.exports = [
7979
['>=2', false],
8080

8181
['2.x', '3.0.0-pre.0', { includePrerelease: true }],
82+
['^0.0.3', '0.0.3-alpha', { includePrerelease: true }],
83+
['^0.2.3', '0.2.3-alpha', { includePrerelease: true }],
8284
['^1.0.0', '1.0.0-rc1', { includePrerelease: true }],
8385
['^1.0.0', '2.0.0-rc1', { includePrerelease: true }],
8486
['^1.2.3-rc2', '2.0.0', { includePrerelease: true }],

0 commit comments

Comments
 (0)