summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJoakim Hulthe <joakim.hulthe@mullvad.net>2025-10-16 15:23:29 +0200
committerJoakim Hulthe <joakim.hulthe@mullvad.net>2025-10-24 13:54:29 +0200
commit6bb1675b14cb7a4facd96f3e9a514d158dbef890 (patch)
tree9be5e02f90df24fcf767ad6452df6459f175f816
parent2370ba83338e0444309608d2af5dcd74b6a90f3d (diff)
downloadmullvadvpn-6bb1675b14cb7a4facd96f3e9a514d158dbef890.tar.xz
mullvadvpn-6bb1675b14cb7a4facd96f3e9a514d158dbef890.zip
Fix Display-impl of Rollout
-rw-r--r--mullvad-update/mullvad-release/src/main.rs1
-rw-r--r--mullvad-update/src/snapshots/mullvad_update__version__test__rollout_display.snap10
-rw-r--r--mullvad-update/src/version.rs31
3 files changed, 30 insertions, 12 deletions
diff --git a/mullvad-update/mullvad-release/src/main.rs b/mullvad-update/mullvad-release/src/main.rs
index fd0535afe5..cedc426cfa 100644
--- a/mullvad-update/mullvad-release/src/main.rs
+++ b/mullvad-update/mullvad-release/src/main.rs
@@ -129,7 +129,6 @@ pub enum Opt {
/// By default, any non-zero rollout is accepted.
/// Setting the value to zero will also show supported versions that have
/// been released but are currently not being rolled out.
- // TODO: this prints 0%, but should print 1.1920929e-7
#[arg(long, default_value_t = mullvad_update::version::SUPPORTED_VERSION)]
rollout: Rollout,
},
diff --git a/mullvad-update/src/snapshots/mullvad_update__version__test__rollout_display.snap b/mullvad-update/src/snapshots/mullvad_update__version__test__rollout_display.snap
new file mode 100644
index 0000000000..19319967c9
--- /dev/null
+++ b/mullvad-update/src/snapshots/mullvad_update__version__test__rollout_display.snap
@@ -0,0 +1,10 @@
+---
+source: mullvad-update/src/version.rs
+expression: "&string_reprs"
+---
+-0 => -0
+0 => 0
+0.00000011920929 => 0.00000011920929
+0.33333334 => 0.33333334
+0.9999999 => 0.9999999
+1 => 1
diff --git a/mullvad-update/src/version.rs b/mullvad-update/src/version.rs
index 90e655daf6..9d53406996 100644
--- a/mullvad-update/src/version.rs
+++ b/mullvad-update/src/version.rs
@@ -216,14 +216,12 @@ impl Ord for Rollout {
}
}
-// TODO: the mullvad-release cli might rely on this being formatted as an f32
impl Display for Rollout {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- write!(f, "{}%", (self.0 * 100.) as u32)
+ Display::fmt(&self.0, f)
}
}
-// TODO: the mullvad-release cli might rely on this being formatted as an f32
impl FromStr for Rollout {
type Err = anyhow::Error;
@@ -267,7 +265,7 @@ pub fn generate_rollout_seed() -> u32 {
mod test {
use std::str::FromStr;
- use insta::assert_yaml_snapshot;
+ use insta::{assert_snapshot, assert_yaml_snapshot};
use super::*;
@@ -399,13 +397,12 @@ mod test {
}
const GOOD_ROLLOUT_EXAMPLES: &[f32] = &[
- -0.0,
- 0.0,
- -0.0 + f32::EPSILON,
- 1.0,
- 1.0 - 0.0,
- 1.0 - f32::EPSILON,
- 1.0 / 3.0,
+ -0.0, // 0%
+ 0.0, // 0%
+ -0.0 + f32::EPSILON, // > 0%
+ 1.0 / 3.0, // 33%
+ 1.0 - f32::EPSILON, // 99%
+ 1.0, // 100%
];
const BAD_ROLLOUT_EXAMPLES: &[f32] = &[
@@ -438,6 +435,18 @@ mod test {
}
}
+ /// Test that the `Display` impl of [Rollout] makes sense.
+ /// Note clap requires that `Display` must be the inverse of `FromStr`.
+ #[test]
+ fn test_rollout_display() {
+ let string_reprs = GOOD_ROLLOUT_EXAMPLES
+ .iter()
+ .map(|&f| format!("{f} => {}\n", Rollout::try_from(f).unwrap()))
+ .collect::<String>();
+
+ assert_snapshot!(&string_reprs);
+ }
+
#[test]
/// Check that the implementation of [rollout_threshold] yields different threshold values as
/// app version number progresses.