Function smart_config::testing::test_complete
source · pub fn test_complete<C: DeserializeConfig>(
sample: impl ConfigSource,
) -> Result<C, ParseErrors>
Expand description
Tests config deserialization ensuring that all declared config params are covered.
§Panics
Panics if the sample
doesn’t recursively cover all params in the config. The config message
will contain paths to the missing params.
§Errors
Propagates parsing errors, which allows testing negative cases.
§Examples
§Basic usage
use smart_config::{metadata::SizeUnit, testing, ByteSize};
#[derive(DescribeConfig, DeserializeConfig)]
struct TestConfig {
#[config(default_t = true, alias = "flag")]
boolean: bool,
#[config(with = SizeUnit::MiB)]
size_mb: ByteSize,
}
let sample = smart_config::config!("flag": "false", "size_mb": 64);
let config: TestConfig = testing::test_complete(sample)?;
assert!(!config.boolean);
assert_eq!(config.size_mb, ByteSize(64 << 20));
§Panics on incomplete sample
ⓘ
#[derive(DescribeConfig, DeserializeConfig)]
struct TestConfig {
#[config(default_t = true, alias = "flag")]
boolean: bool,
#[config(with = SizeUnit::MiB)]
size_mb: ByteSize,
}
let incomplete_sample = smart_config::config!("size_mb": 64);
// Will panic with a message detailing missing params (`flag` in this case)
testing::test_complete::<TestConfig>(incomplete_sample)?;