From 75d977a25937c6b70e0841962d45cc78783c08ec Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 24 Nov 2021 10:11:35 -0500 Subject: [PATCH] Impl and test Default for high-level configs --- crates/arti-client/src/config.rs | 20 ++++++++++++++++++++ crates/arti-config/src/options.rs | 25 ++++++++++++++++++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/crates/arti-client/src/config.rs b/crates/arti-client/src/config.rs index 91ab6fc45..83b077438 100644 --- a/crates/arti-client/src/config.rs +++ b/crates/arti-client/src/config.rs @@ -97,6 +97,12 @@ fn default_state_dir() -> CfgPath { CfgPath::new("${ARTI_LOCAL_DATA}".to_owned()) } +impl Default for StorageConfig { + fn default() -> Self { + Self::builder().build().expect("Default builder failed") + } +} + impl StorageConfig { /// Return a new StorageConfigBuilder. pub fn builder() -> StorageConfigBuilder { @@ -381,3 +387,17 @@ impl From for TorClientConfigBuilder { } } } + +#[cfg(test)] +mod test { + #![allow(clippy::unwrap_used)] + use super::*; + + #[test] + fn defaults() { + let dflt = TorClientConfig::sane_defaults().unwrap(); + let b2 = TorClientConfigBuilder::from(dflt.clone()); + let dflt2 = b2.build().unwrap(); + assert_eq!(&dflt, &dflt2); + } +} diff --git a/crates/arti-config/src/options.rs b/crates/arti-config/src/options.rs index 1e12778d0..d2f8ebb9c 100644 --- a/crates/arti-config/src/options.rs +++ b/crates/arti-config/src/options.rs @@ -41,6 +41,12 @@ fn default_trace_filter() -> String { "debug".to_owned() } +impl Default for LoggingConfig { + fn default() -> Self { + Self::builder().build().expect("Default builder failed") + } +} + impl LoggingConfig { /// Return a new LoggingConfigBuilder pub fn builder() -> LoggingConfigBuilder { @@ -76,6 +82,12 @@ fn default_socks_port() -> Option { Some(9150) } +impl Default for ProxyConfig { + fn default() -> Self { + Self::builder().build().expect("Default builder failed") + } +} + impl ProxyConfig { /// Return a new [`ProxyConfigBuilder`]. pub fn builder() -> ProxyConfigBuilder { @@ -108,7 +120,7 @@ impl From for ProxyConfigBuilder { /// /// NOTE: These are NOT the final options or their final layout. /// Expect NO stability here. -#[derive(Deserialize, Debug, Clone, Eq, PartialEq)] +#[derive(Deserialize, Debug, Clone, Eq, PartialEq, Default)] #[serde(deny_unknown_fields)] pub struct ArtiConfig { /// Configuration for proxy listeners @@ -191,7 +203,7 @@ mod test { use super::*; #[test] - fn load_default_config() { + fn default_config() { // TODO: this is duplicate code. let mut cfg = config::Config::new(); cfg.merge(config::File::from_str( @@ -200,6 +212,13 @@ mod test { )) .unwrap(); - let _parsed: ArtiConfig = cfg.try_into().unwrap(); + let parsed: ArtiConfig = cfg.try_into().unwrap(); + let default = ArtiConfig::default(); + assert_eq!(&parsed, &default); + + // Make sure that the client configuration this gives us is the default one. + let client_config = parsed.tor_client_config().unwrap(); + let dflt_client_config = TorClientConfig::sane_defaults().unwrap(); + assert_eq!(&client_config, &dflt_client_config); } }