use clap::Parser;
use v_utils_macros::Settings;
#[derive(Debug, Parser)]
#[allow(unused)]
struct Cli {
#[clap(flatten)]
settings_flags: SettingsFlags,
}
#[derive(Clone, Debug, Default, v_utils_macros::MyConfigPrimitives, Settings)]
struct DefaultedConfig {
#[serde(default)]
host: String,
#[serde(default)]
port: u16,
#[serde(default)]
debug: bool,
}
#[test]
fn missing_config_builds_from_defaults() {
assert!(
std::env::var_os("V_UTILS_MACROS__HOST").is_none(),
"test env is polluted with V_UTILS_MACROS__HOST — the defaults assertion below would be meaningless"
);
let flags = SettingsFlags {
config: None,
yes: false,
host: None,
port: None,
debug: None,
};
let cfg = DefaultedConfig::try_build(flags).expect("missing config file must build from defaults, not error");
assert_eq!(cfg.host, "");
assert_eq!(cfg.port, 0);
assert!(!cfg.debug);
}