Commit Graph

13 Commits

Author SHA1 Message Date
Sebastian Poxhofer 1f6546b7a9 fix(versioning/cargo): convert ranges to semver in subset and intersects (#45146)
`cargo2npm` exists because a bare `1.2.3` in Cargo means `^1.2.3` and
`0.4` means `^0.4`, since caret requirements are the default. Every
range-consuming function in this module converts through it: `isValid`,
`matches`, `isLessThanRange`, `getSatisfyingVersion`,
`minSatisfyingVersion` and `getNewValue`.

`subset` and `intersects` did not. The exported `api` is built from a
`...npm` spread and never overrode them, so they received Cargo syntax
and interpreted it as semver syntax. Read that way, `1.70` means
`1.70.x` rather than `^1.70`:

    subset('1.70', '1.63')      was false, is now true
    intersects('1.70', '1.63')  was false, is now true
    intersects('1.63', '1.70')  was false, is now true

`subset` is called by `applyConstraintsFiltering`, so repositories using
`constraintsFiltering: 'strict'` had crate releases dropped whenever the
release constraint differed from the configured one. `intersects` has no
caller in this repository today, but it is part of `VersioningApi` and
was wrong in the same way.

Both are now wrapped the way `composer` does it, including the
`try`/`catch`, because the underlying semver calls throw on ranges they
cannot parse.

The module had no tests for either function, which is why this was not
caught. Both are now covered, including the throwing path.
2026-08-10 11:03:19 +00:00
Sergei Zharinov 930cf6633c refactor: Rewrite imports with .ts extensions (#40700)
fix: Additional vi.mock path corrections and prettier formatting
2026-01-26 22:48:17 +00:00
Rhys Arkins 0d5d7a8669 refactor!: remove rangeStrategy=pin from versioning modules (#36261)
Refactors `getNewValue` logic to replace it with an optional
`getPinnedValue()` where rangeStrategy=pin. This way each versioning
module doesn't need to add and test extensive "pin" logic.

This should not be breaking, but out of an abundance of caution, we'll
mark it as such.
2025-11-06 08:07:40 +00:00
Rhys Arkins 67935500d7 feat(versioning): isBreaking (#31859)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-05-09 08:17:14 +00:00
Sergei Zharinov 6af55c2cfe fix(cargo): Skip "replace" range upgrade if new version still matches (#33773) 2025-01-23 11:27:07 +00:00
Rhys Arkins e11badfe4c fix(versioning/cargo): bump simple versions to newVersion (#28632)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-04-25 08:12:06 +00:00
Rhys Arkins 4c77554ebd fix(versioning/cargo): consistent range precision length (#27386) 2024-02-18 10:37:25 +00:00
rami3l f9ae909058 fix(cargo): fix handling of x and x.y versions (#26263) 2023-12-13 15:17:04 +00:00
Sergei Zharinov b69416ce17 refactor(prettier): Force trailing commas (#25631) 2023-11-07 15:50:29 +00:00
RahulGautamSingh 938a36801e refactor: replace test.each with it.each (#21859) 2023-04-28 04:33:15 +00:00
Rhys Arkins 73c8227132 fix(versioning)!: bump short ranges to version (#20494)
When rangeStrategy=bump, and the existing range is "short" (e.g. `^1`), and a bump is required, the new result will be a version range (e.g. `^1.0.7`).

Closes #20488
2023-03-10 09:34:40 +01:00
Tobias Bieniek 675e569daa fix(cargo): fix pinning for wildcard constraints (#20355) 2023-02-12 08:33:03 +02:00
Rhys Arkins dca3418bbd refactor: lib/modules (#14488)
Moves datasource, manager, platform and versioning code from lib/ into new lib/modules/

BREAKING CHANGE: External tools must update paths to datasource, manager, platform and versioning
2022-03-04 09:04:02 +01:00