aboutsummaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-30 16:10:34 +0100
committertv <tv@krebsco.de>2026-10-30 16:10:34 +0100
commit0ee0cd19b7ceabf5d75e1b8fdd074a6e758bc6db (patch)
tree741690960d20823792f3eac0b5fe1d12835755fc /src/config
parentdfac9af1d96702f451b9d48ec7127455c3a1c560 (diff)
decouple simulation test from mycelium
Diffstat (limited to 'src/config')
-rw-r--r--src/config/mod.rs68
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);