diff --git a/saphyr/Cargo.toml b/saphyr/Cargo.toml index f00d0a9..545c20d 100644 --- a/saphyr/Cargo.toml +++ b/saphyr/Cargo.toml @@ -13,4 +13,4 @@ repository = "https://github.com/chyh1990/yaml-rust" linked-hash-map = ">=0.0.9, <0.6" [dev-dependencies] -quickcheck = "0.6" +quickcheck = "0.7" diff --git a/saphyr/src/yaml.rs b/saphyr/src/yaml.rs index 6652abb..f5967b0 100644 --- a/saphyr/src/yaml.rs +++ b/saphyr/src/yaml.rs @@ -639,6 +639,63 @@ c: ~ assert_eq!(first[0]["important"].as_bool().unwrap(), true); } + #[test] + fn test_indentation_equality() { + + let four_spaces = YamlLoader::load_from_str(r#" +hash: + with: + indentations +"#).unwrap().into_iter().next().unwrap(); + + let two_spaces = YamlLoader::load_from_str(r#" +hash: + with: + indentations +"#).unwrap().into_iter().next().unwrap(); + + let one_space = YamlLoader::load_from_str(r#" +hash: + with: + indentations +"#).unwrap().into_iter().next().unwrap(); + + let mixed_spaces = YamlLoader::load_from_str(r#" +hash: + with: + indentations +"#).unwrap().into_iter().next().unwrap(); + + assert_eq!(four_spaces, two_spaces); + assert_eq!(two_spaces, one_space); + assert_eq!(four_spaces, mixed_spaces); + } + + #[test] + fn test_two_space_indentations() { + // https://github.com/kbknapp/clap-rs/issues/965 + + let s = r#" +subcommands: + - server: + about: server related commands +subcommands2: + - server: + about: server related commands +subcommands3: + - server: + about: server related commands + "#; + + let out = YamlLoader::load_from_str(&s).unwrap(); + let doc = &out.into_iter().next().unwrap(); + + println!("{:#?}", doc); + assert_eq!(doc["subcommands"][0]["server"], Yaml::Null); + assert!(doc["subcommands2"][0]["server"].as_hash().is_some()); + assert!(doc["subcommands3"][0]["server"].as_hash().is_some()); + } + #[test] fn test_recursion_depth_check_objects() { let s = "{a:".repeat(10_000) + &"}".repeat(10_000);