Skip to content

Instantly share code, notes, and snippets.

@killercup
Last active March 23, 2018 20:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save killercup/3a28a5fb380ab9345823c3b086069005 to your computer and use it in GitHub Desktop.
Save killercup/3a28a5fb380ab9345823c3b086069005 to your computer and use it in GitHub Desktop.
/// just some api ideas
#[test]
fn config_loading() {
let fs = MockFS::new()
.file("/usr/local/etc/foo", "fancy = 10")
.file("~/.config/foo", "fancy = 20")
.file(".env", "LE_PREFIX_FANCY=30");
#[derive(Default, Configure, StructOpt)]
struct Args {
fancy: i32,
}
let args = Args::config()
.config_source(ConfigSource::toml().with_mock_fs(fs))
.config_source(ConfigSource::dot_env("LE_PREFIX"))
.config_source(ConfigSource::env("LE_PREFIX"));
assert_eq!(args.clone().load(), Args { fancy: 30 });
std::env::set_var("LE_PREFIX_FANCY", "40");
assert_eq!(args.clone().load(), Args { fancy: 40 });
let args = args.clone()
.config_source(ConfigSource::structopt()
.handle_help_and_version()
.with_mock_args(&["--fancy=50"])
);
assert_eq!(args.clone().load(), Args { fancy: 50 });
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment