use v_utils_macros::Settings;
#[derive(Clone, Debug, Default, Settings, v_utils_macros::MyConfigPrimitives)]
#[settings(use_env = false, config_name = "parent_app/sub_tool")]
struct SubToolConfig {
#[serde(default)]
host: String,
#[serde(default)]
port: u16,
}
#[test]
fn resolves_config_at_overridden_nested_path() {
let tmp = tempfile::tempdir().unwrap();
unsafe {
std::env::set_var("XDG_CONFIG_HOME", tmp.path());
}
let config_dir = tmp.path().join("parent_app");
std::fs::create_dir_all(&config_dir).unwrap();
std::fs::write(config_dir.join("sub_tool.toml"), "host = \"example.com\"\nport = 8080\n").unwrap();
let flags = SettingsFlags {
config: None,
yes: false,
host: None,
port: None,
};
let cfg = SubToolConfig::try_build(flags).expect("config at the overridden location must be found and parsed");
assert_eq!(cfg.host, "example.com");
assert_eq!(cfg.port, 8080);
}