Skip to content

Commit 508e4e6

Browse files
committed
Add test whether unreachable is reachable
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
1 parent 74a0a80 commit 508e4e6

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

src/de.rs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,3 +459,58 @@ impl<'de> de::Deserializer<'de> for Config {
459459
identifier ignored_any unit_struct tuple_struct tuple
460460
}
461461
}
462+
463+
#[cfg(test)]
464+
mod tests {
465+
use super::*;
466+
use crate::Config;
467+
use crate::File;
468+
use crate::FileFormat;
469+
470+
#[derive(Deserialize)]
471+
struct CFG {
472+
e: EnumConfig,
473+
}
474+
475+
#[derive(Deserialize)]
476+
enum EnumConfig {
477+
Foo,
478+
Bar { filename: std::path::PathBuf },
479+
}
480+
481+
#[test]
482+
fn test_unreachable_reachable_not_panicing_1() {
483+
let working_config = r#"
484+
e.bar.filename = "blah"
485+
"#;
486+
487+
let mut c = Config::default();
488+
c.merge(File::from_str(working_config, FileFormat::Toml))
489+
.unwrap();
490+
let c: CFG = c.try_into().unwrap();
491+
}
492+
#[test]
493+
fn test_unreachable_reachable_not_panicing_2() {
494+
let working_config = r#"
495+
e = "foo"
496+
"#;
497+
498+
let mut c = Config::default();
499+
c.merge(File::from_str(working_config, FileFormat::Toml))
500+
.unwrap();
501+
let c: CFG = c.try_into().unwrap();
502+
}
503+
504+
#[test]
505+
#[should_panic]
506+
fn test_unreachable_reachable_panicing() {
507+
let panicing_config = r#"
508+
e = "bar"
509+
"#;
510+
511+
let mut c = Config::default();
512+
c.merge(File::from_str(panicing_config, FileFormat::Toml))
513+
.unwrap();
514+
let c: CFG = c.try_into().unwrap();
515+
}
516+
}

0 commit comments

Comments
 (0)