use config::prelude::*;
use std::env::{set_var, var};
#[test]
fn add_env_vars_should_load_environment_variables() {
let config = config::builder().add_env_vars().build().unwrap();
let expected = var("CARGO_PKG_NAME").unwrap();
let actual = config.get("CargoPkgName");
assert_eq!(actual, Some(&*expected));
}
#[test]
fn add_env_vars_should_load_filtered_environment_variables() {
let config = config::builder()
.add_env_vars_with_prefix("CARGO_PKG_")
.build()
.unwrap();
let expected = var("CARGO_PKG_NAME").unwrap();
let actual = config.get("Name");
assert_eq!(actual, Some(&*expected));
assert_eq!(config.get("Path"), None);
}
#[test]
fn add_env_vars_should_translate_double_underscore_to_colon() {
let expected = "any";
set_var("FOO__BAR__BAZ", expected);
let config = config::builder().add_env_vars().build().unwrap();
let actual = config.get("Foo:Bar:Baz");
assert_eq!(actual, Some(expected));
}