summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJoakim Hulthe <joakim.hulthe@mullvad.net>2025-06-13 16:39:36 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2025-07-11 13:27:04 +0200
commitf6ba9619a0bfcff7751293ba9f1b806d26ea1d24 (patch)
tree0882d707b786980c2042c7d3fc754a05d561a536
parente56876808283f2e39c9d880ae592624ad1c20bf0 (diff)
downloadmullvadvpn-f6ba9619a0bfcff7751293ba9f1b806d26ea1d24.tar.xz
mullvadvpn-f6ba9619a0bfcff7751293ba9f1b806d26ea1d24.zip
Make dev-versions equal to themselves
-rw-r--r--mullvad-version/src/lib.rs26
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);