diff options
| author | David Lönnhager <david.l@mullvad.net> | 2024-10-30 18:47:37 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2024-11-01 10:16:26 +0100 |
| commit | f0717f54ec71115e042841553fc81ebf5884111b (patch) | |
| tree | 0ce273aaa40baae7e9003e884b42df417814f4cc | |
| parent | a95fecf479e7fc3edd35122456360c7828418f44 (diff) | |
| download | mullvadvpn-f0717f54ec71115e042841553fc81ebf5884111b.tar.xz mullvadvpn-f0717f54ec71115e042841553fc81ebf5884111b.zip | |
Add unit test for parsing maybenot machines on Windows
| -rw-r--r-- | talpid-wireguard/src/wireguard_nt/daita.rs | 60 |
1 files changed, 40 insertions, 20 deletions
diff --git a/talpid-wireguard/src/wireguard_nt/daita.rs b/talpid-wireguard/src/wireguard_nt/daita.rs index 88c16c6a91..06129746fd 100644 --- a/talpid-wireguard/src/wireguard_nt/daita.rs +++ b/talpid-wireguard/src/wireguard_nt/daita.rs @@ -250,26 +250,8 @@ impl Machinist { static MAYBENOT_MACHINES: OnceCell<Vec<maybenot::Machine>> = OnceCell::new(); - let machines = MAYBENOT_MACHINES.get_or_try_init(|| { - let path = resource_dir.join("maybenot_machines_v2"); - log::debug!("Reading maybenot machines from {}", path.display()); - - let mut machines = vec![]; - let machines_str = fs::read_to_string(path).map_err(Error::EnumerateMachines)?; - for machine_str in machines_str.lines() { - let machine_str = machine_str.trim(); - if matches!(machine_str.chars().next(), None | Some('#')) { - continue; - } - log::debug!("Adding maybenot machine: {machine_str}"); - machines.push( - machine_str - .parse::<maybenot::Machine>() - .map_err(|_error| Error::InvalidMachine(machine_str.to_owned()))?, - ); - } - Ok(machines) - })?; + let machines = + MAYBENOT_MACHINES.get_or_try_init(|| load_maybenot_machines(resource_dir))?; let quit_event = talpid_windows::sync::Event::new(true, false).map_err(Error::InitializeQuitEvent)?; @@ -456,3 +438,41 @@ impl Machinist { } } } + +fn load_maybenot_machines(resource_dir: &Path) -> Result<Vec<maybenot::Machine>, Error> { + let path = resource_dir.join("maybenot_machines_v2"); + log::debug!("Reading maybenot machines from {}", path.display()); + + let mut machines = vec![]; + let machines_str = fs::read_to_string(path).map_err(Error::EnumerateMachines)?; + for machine_str in machines_str.lines() { + let machine_str = machine_str.trim(); + if matches!(machine_str.chars().next(), None | Some('#')) { + continue; + } + log::debug!("Adding maybenot machine: {machine_str}"); + machines.push( + machine_str + .parse::<maybenot::Machine>() + .map_err(|_error| Error::InvalidMachine(machine_str.to_owned()))?, + ); + } + Ok(machines) +} + +#[cfg(test)] +mod test { + use super::load_maybenot_machines; + use std::path::PathBuf; + + #[test] + fn test_load_maybenot_machines() { + let dist_assets = std::env::var("CARGO_MANIFEST_DIR") + .map(PathBuf::from) + .expect("CARGO_MANIFEST_DIR env var not set") + .join("..") + .join("dist-assets"); + + load_maybenot_machines(&dist_assets).unwrap(); + } +} |
