summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2024-10-30 18:47:37 +0100
committerDavid Lönnhager <david.l@mullvad.net>2024-11-01 10:16:26 +0100
commitf0717f54ec71115e042841553fc81ebf5884111b (patch)
tree0ce273aaa40baae7e9003e884b42df417814f4cc
parenta95fecf479e7fc3edd35122456360c7828418f44 (diff)
downloadmullvadvpn-f0717f54ec71115e042841553fc81ebf5884111b.tar.xz
mullvadvpn-f0717f54ec71115e042841553fc81ebf5884111b.zip
Add unit test for parsing maybenot machines on Windows
-rw-r--r--talpid-wireguard/src/wireguard_nt/daita.rs60
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();
+ }
+}