diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2022-11-28 18:13:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-28 18:13:20 +0100 |
commit | 834a1635e2f8317fa3697988bfe85f6b2f4bfded (patch) | |
tree | f0541de8a0fe5126311cf98c2d9f23ae090c11f0 | |
parent | cea4debca004cee5227be5345db570a6c6b4a944 (diff) | |
parent | 912f1edd2eb220ee10d4161a7595999ce7f8c698 (diff) |
Merge pull request #188 from matthiasbeyer/log-deser
Add test for log::Level deserialization
-rw-r--r-- | Cargo.toml | 1 | ||||
-rw-r--r-- | tests/log.rs | 56 |
2 files changed, 57 insertions, 0 deletions
@@ -53,3 +53,4 @@ glob = "0.3" lazy_static = "1" notify = "^5.0.0" temp-env = "0.3.0" +log = { version = "0.4", features = ["serde"] } diff --git a/tests/log.rs b/tests/log.rs new file mode 100644 index 0000000..a468ada --- /dev/null +++ b/tests/log.rs @@ -0,0 +1,56 @@ +extern crate config; +extern crate log; + +#[macro_use] +extern crate serde_derive; +extern crate serde_json; + +use config::*; + +#[derive(Debug, Deserialize)] +struct Settings { + log: log::Level, +} + +fn config(s: &str) -> Config { + Config::builder() + .add_source(File::from_str(s, FileFormat::Json)) + .build() + .unwrap() +} + +#[test] +fn test_load_level_uppercase() { + let s = r#"{ "log": "ERROR" }"#; + let c = config(s); + let l = c.get::<log::Level>("log").unwrap(); + assert_eq!(l, log::Level::Error); +} + +#[test] +fn test_case_sensitivity_log_level_from_str() { + // to verify that this works + + use std::str::FromStr; + let l = log::Level::from_str("error").unwrap(); + assert_eq!(l, log::Level::Error); +} + +#[test] +fn test_case_sensitivity_json_from_str() { + // to confirm serde_json works as expected + let s = r#"{ "log": "error" }"#; + + let j: Settings = serde_json::from_str(s).unwrap(); + assert_eq!(j.log, log::Level::Error); +} + +#[test] +fn test_load_level_lowercase_succeeding() { + let s = r#"{ "log": "error" }"#; + let c = config(s); + assert_eq!(c.get_string("log").unwrap(), "error"); + let s = c.try_deserialize::<Settings>(); + assert!(s.is_ok(), "Expected Ok(_) for {:?}", s); + assert_eq!(s.unwrap().log, log::Level::Error); +} |