diff options
| author | tv <tv@krebsco.de> | 2026-10-30 16:10:34 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-30 16:10:34 +0100 |
| commit | 0ee0cd19b7ceabf5d75e1b8fdd074a6e758bc6db (patch) | |
| tree | 741690960d20823792f3eac0b5fe1d12835755fc /src/config/mod.rs | |
| parent | dfac9af1d96702f451b9d48ec7127455c3a1c560 (diff) | |
decouple simulation test from mycelium
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 68 |
1 files changed, 48 insertions, 20 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 0c57713..22cbef2 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -1394,27 +1394,42 @@ mod tests { use super::*; use serde_json::json; + /// The first transport this build has: what the tests run on when they don't name + /// one, so they pass with any of the transport features. + fn built_transport() -> &'static str { + TRANSPORTS + .iter() + .find(|(_, built)| *built) + .map(|(name, _)| *name) + .expect("a build has a transport") + } + + fn entry(value: JsonValue) -> Entry { + Entry { + value, + origin: Origin { + provenance: Provenance::Argument, + unset: false, + imports: Vec::new(), + templates: Vec::new(), + written: None, + }, + } + } + + /// `values` as arguments, with this build's first transport unless they name some + /// (`built_transport`). fn layer(values: JsonValue) -> Layer { - values + let mut layer: Layer = values .as_object() .unwrap() .iter() - .map(|(name, value)| { - ( - name.clone(), - Entry { - value: value.clone(), - origin: Origin { - provenance: Provenance::Argument, - unset: false, - imports: Vec::new(), - templates: Vec::new(), - written: None, - }, - }, - ) - }) - .collect() + .map(|(name, value)| (name.clone(), entry(value.clone()))) + .collect(); + layer + .entry("transports".to_owned()) + .or_insert_with(|| entry(json!([built_transport()]))); + layer } #[test] @@ -1511,6 +1526,12 @@ mod tests { file(json!("a")), Overlay::FileOverFile, ); + overlay( + &mut merged, + "transports".into(), + file(json!([built_transport()])), + Overlay::FileOverFile, + ); // Both in one source: an error. let mut same = merged.clone(); @@ -1673,13 +1694,17 @@ mod tests { assert!(relay(json!({ "node-key-file": "node.key" })).is_err()); assert!(relay(json!({ "seeds": ["a"] })).is_err()); assert!(relay(json!({ "transports": ["mycelium"] })).is_err()); + assert!(relay(json!({ "transports": ["tor"] })).is_err()); assert!(relay(json!({ "libp2p-listen": [] })).is_err()); assert!(transports(json!(["pigeon"])).is_err()); assert!(transports(json!(["mycelium", "mycelium"])).is_err()); - assert!(transports(json!(["mycelium"])).is_ok()); + assert_eq!( + transports(json!(["mycelium"])).is_ok(), + cfg!(feature = "mycelium") + ); assert_eq!( transports(json!(["libp2p", "mycelium"])).is_ok(), - cfg!(feature = "libp2p") + cfg!(feature = "libp2p") && cfg!(feature = "mycelium") ); } @@ -1729,9 +1754,12 @@ mod tests { "c-${env:CONTINUUM_TEST_SITE}", ]) .unwrap(); - let layer = arguments(&matches).unwrap(); + let mut layer = arguments(&matches).unwrap(); assert!(!layer["alias"].origin.is_imported()); assert_eq!(layer["alias"].shown("alias"), "\"node-berlin\""); + layer + .entry("transports".to_owned()) + .or_insert_with(|| entry(json!([built_transport()]))); let loaded = resolve(layer, Vec::new()).unwrap(); let report = loaded.report(Values::Interpolated); |
