File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff 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+ }
You can’t perform that action at this time.
0 commit comments