Skip to content

Commit

Permalink
Simplify some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh committed Mar 15, 2024
1 parent edde44c commit 4818abf
Showing 1 changed file with 10 additions and 55 deletions.
65 changes: 10 additions & 55 deletions crates/pep440-rs/src/version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2414,30 +2414,15 @@ pub(crate) fn compare_release(this: &[u64], other: &[u64]) -> Ordering {
fn sortable_tuple(version: &Version) -> (u64, u64, Option<u64>, u64, &[LocalSegment]) {
// If the version is a "max" version, use a post version larger than any possible post version.
let post = if version.is_max() {
// But don't convert a `dev` version to a `post` version. `1.0.dev0` should _not_ be greater
// than `1.0.post0.dev0`, since the latter means "a dev release of a post release of 1.0",
// not "a post release of a dev release of 1.0".
if version.is_dev() && !version.is_post() {
None
} else {
Some(u64::MAX)
}
Some(u64::MAX)
} else {
version.post()
};

// If the version is a "max" version, use a local version larger than any possible local version.
let local = if version.is_max() {
&[LocalSegment::Number(u64::MAX)]
} else {
version.local()
};

match (version.pre(), post, version.dev(), version.min()) {
// min release
(_pre, post, _dev, Some(n)) => (0, 0, post, n, local),
(_pre, post, _dev, Some(n)) => (0, 0, post, n, version.local()),
// dev release
(None, None, Some(n), None) => (1, 0, None, n, local),
(None, None, Some(n), None) => (1, 0, None, n, version.local()),
// alpha release
(
Some(PreRelease {
Expand All @@ -2447,7 +2432,7 @@ fn sortable_tuple(version: &Version) -> (u64, u64, Option<u64>, u64, &[LocalSegm
post,
dev,
None,
) => (2, n, post, dev.unwrap_or(u64::MAX), local),
) => (2, n, post, dev.unwrap_or(u64::MAX), version.local()),
// beta release
(
Some(PreRelease {
Expand All @@ -2457,7 +2442,7 @@ fn sortable_tuple(version: &Version) -> (u64, u64, Option<u64>, u64, &[LocalSegm
post,
dev,
None,
) => (3, n, post, dev.unwrap_or(u64::MAX), local),
) => (3, n, post, dev.unwrap_or(u64::MAX), version.local()),
// alpha release
(
Some(PreRelease {
Expand All @@ -2467,11 +2452,13 @@ fn sortable_tuple(version: &Version) -> (u64, u64, Option<u64>, u64, &[LocalSegm
post,
dev,
None,
) => (4, n, post, dev.unwrap_or(u64::MAX), local),
) => (4, n, post, dev.unwrap_or(u64::MAX), version.local()),
// final release
(None, None, None, None) => (5, 0, None, 0, local),
(None, None, None, None) => (5, 0, None, 0, version.local()),
// post release
(None, Some(post), dev, None) => (6, 0, Some(post), dev.unwrap_or(u64::MAX), local),
(None, Some(post), dev, None) => {
(6, 0, Some(post), dev.unwrap_or(u64::MAX), version.local())
}
}
}

Expand Down Expand Up @@ -3775,38 +3762,6 @@ mod tests {
);
}

// Ensure that the `.max` suffix plays nicely with dev versions.
let greater = Version::new([1, 0]).with_dev(Some(5)).with_max(Some(0));

let versions = &["1.dev5", "1.dev5+local"];

for less in versions.iter() {
let less = less.parse::<Version>().unwrap();
assert_eq!(
less.cmp(&greater),
Ordering::Less,
"less: {:?}\ngreater: {:?}",
less.as_bloated_debug(),
greater.as_bloated_debug()
);
}

// Ensure that the `.max` suffix plays nicely with dev versions.
let less = Version::new([1, 0]).with_dev(Some(5)).with_max(Some(0));

let versions = &["1.post1.dev5", "1.0"];

for greater in versions.iter() {
let greater = greater.parse::<Version>().unwrap();
assert_eq!(
less.cmp(&greater),
Ordering::Less,
"less: {:?}\ngreater: {:?}",
less.as_bloated_debug(),
greater.as_bloated_debug()
);
}

// Ensure that the `.max` suffix plays nicely with pre-release versions.
let greater = Version::new([1, 0])
.with_pre(Some(PreRelease {
Expand Down

0 comments on commit 4818abf

Please sign in to comment.