diff options
| author | Joakim Hulthe <joakim.hulthe@mullvad.net> | 2025-10-16 15:23:29 +0200 |
|---|---|---|
| committer | Joakim Hulthe <joakim.hulthe@mullvad.net> | 2025-10-24 13:54:29 +0200 |
| commit | 6bb1675b14cb7a4facd96f3e9a514d158dbef890 (patch) | |
| tree | 9be5e02f90df24fcf767ad6452df6459f175f816 | |
| parent | 2370ba83338e0444309608d2af5dcd74b6a90f3d (diff) | |
| download | mullvadvpn-6bb1675b14cb7a4facd96f3e9a514d158dbef890.tar.xz mullvadvpn-6bb1675b14cb7a4facd96f3e9a514d158dbef890.zip | |
Fix Display-impl of Rollout
| -rw-r--r-- | mullvad-update/mullvad-release/src/main.rs | 1 | ||||
| -rw-r--r-- | mullvad-update/src/snapshots/mullvad_update__version__test__rollout_display.snap | 10 | ||||
| -rw-r--r-- | mullvad-update/src/version.rs | 31 |
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. |
