Function smart_config::testing::test
source · pub fn test<C: DeserializeConfig>(
sample: impl ConfigSource,
) -> Result<C, ParseErrors>
Expand description
Tests config deserialization from the provided sample
. Takes into account param aliases,
performs sample
preprocessing etc.
§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)]
flag: bool,
#[config(with = SizeUnit::MiB)]
size_mb: ByteSize,
}
let sample = smart_config::config!("size_mb": 2);
let config: TestConfig = testing::test(sample)?;
assert!(config.flag);
assert_eq!(config.size_mb, ByteSize(2 << 20));
§Testing errors
#[derive(Debug, DescribeConfig, DeserializeConfig)]
struct TestConfig {
#[config(default_t = true, alias = "flag")]
boolean: bool,
}
let sample = smart_config::config!("flag": "no");
let err = testing::test::<TestConfig>(sample).unwrap_err();
let err = err.first();
assert_eq!(err.path(), "boolean");
assert!(err
.inner()
.to_string()
.contains("provided string was not `true` or `false`"));