Fix floating version functionality for FloatingBehavior.AbsoluteLatest in new dependency graph resolver #6070
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bug
Fixes: NuGet/Home#13830
Description
RemoteDependencyWalker.IsEqualToOrGreaterThan()
is calculating whether or not a VersionRange is equal to or greater than another VersionRange incorrectly in the case of*
or*-*
. For ranges like1.*
or1.0.*
, it treats the star as "highest possible" by converting the version range to useInt.MaxValue
for the parts of the version that are floating. However, for something like*
or*-*
, it falls back to just using the specified values and it uses0.0.0.0
instead which is always treated as lower. This makes the new dependency resolver pick the wrong versions or improperly detect downgrades.The change is to treat
*
or*-*
asInt.MaxValue.Int.MaxValue.Int.MaxValue.Int.MaxValue
, essentially the highest possible version range.PR Checklist