diff options
| author | Joakim Hulthe <joakim.hulthe@mullvad.net> | 2025-06-13 16:39:36 +0200 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2025-07-11 13:27:04 +0200 |
| commit | f6ba9619a0bfcff7751293ba9f1b806d26ea1d24 (patch) | |
| tree | 0882d707b786980c2042c7d3fc754a05d561a536 | |
| parent | e56876808283f2e39c9d880ae592624ad1c20bf0 (diff) | |
| download | mullvadvpn-f6ba9619a0bfcff7751293ba9f1b806d26ea1d24.tar.xz mullvadvpn-f6ba9619a0bfcff7751293ba9f1b806d26ea1d24.zip | |
Make dev-versions equal to themselves
| -rw-r--r-- | mullvad-version/src/lib.rs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/mullvad-version/src/lib.rs b/mullvad-version/src/lib.rs index 99e80e4920..fc5a23ac94 100644 --- a/mullvad-version/src/lib.rs +++ b/mullvad-version/src/lib.rs @@ -60,18 +60,20 @@ impl PartialOrd for Version { } }; - // The dev vs non-dev ordering. For a version of a given type, if all else is equal - // a dev version is greater than a non-dev version. - let dev_ordering = match (self.is_dev(), other.is_dev()) { - (true, false) => Some(Ordering::Greater), - (false, true) => Some(Ordering::Less), - (false, false) => Some(Ordering::Equal), - (true, true) => None, + // The dev vs non-dev ordering. + let dev_ordering = match (&self.dev, &other.dev) { + // All else being equal, a dev version is greater than a non-dev version + (Some(_), None) => Some(Ordering::Greater), + (None, Some(_)) => Some(Ordering::Less), + + // Dev-suffixes are not ordered, but they can be equal. + (Some(a), Some(b)) if a != b => None, + (Some(_), Some(_)) => Some(Ordering::Equal), + + (None, None) => Some(Ordering::Equal), }; - let release_ordering = self - .year - .cmp(&other.year) + let release_ordering = (self.year.cmp(&other.year)) .then(self.incremental.cmp(&other.incremental)) .then(type_ordering); @@ -251,9 +253,9 @@ mod tests { let v1 = parse("2021.3-dev-abc"); let v2 = parse("2021.3-dev-def"); - // Exactly the same version are equal, but has no ordering + // A dev version is equal to itself assert_eq!(v1, v1); - assert!(v1.partial_cmp(&v1).is_none()); + assert_eq!(v1.partial_cmp(&v1), Some(Ordering::Equal)); // Equal down to the dev suffix are not equal, and has no ordering assert_ne!(v1, v2); |
