Merge pull request #58 from palfrey/quickcheck

Fix quote escaping
This commit is contained in:
David Tolnay 2017-05-08 10:48:23 -07:00 committed by GitHub
commit 2a1bac3d56
4 changed files with 26 additions and 2 deletions

View file

@ -1,6 +1,6 @@
language: rust language: rust
rust: rust:
- 1.8.0 - 1.9.0
- 1.16.0 - 1.16.0
- beta - beta
- nightly - nightly

View file

@ -11,3 +11,6 @@ repository = "https://github.com/chyh1990/yaml-rust"
[dependencies] [dependencies]
clippy = { version = "^0.*", optional = true } clippy = { version = "^0.*", optional = true }
linked-hash-map = ">=0.0.9, <0.4" linked-hash-map = ">=0.0.9, <0.4"
[dev-dependencies]
quickcheck = "0.4"

View file

@ -263,7 +263,7 @@ fn need_quotes(string: &str) -> bool {
|| need_quotes_spaces(string) || need_quotes_spaces(string)
|| string.contains(|character: char| { || string.contains(|character: char| {
match character { match character {
':' | '{' | '}' | '[' | ']' | ',' | '&' | '*' | '#' | '?' | '|' | '-' | '<' | '>' | '=' | '!' | '%' | '@' | '`' | '\\' | '\0' ... '\x06' | '\t' | '\n' | '\r' | '\x0e' ... '\x1a' | '\x1c' ... '\x1f' => true, ':' | '{' | '}' | '[' | ']' | ',' | '&' | '*' | '#' | '?' | '|' | '-' | '<' | '>' | '=' | '!' | '%' | '@' | '`' | '\"' | '\'' | '\\' | '\0' ... '\x06' | '\t' | '\n' | '\r' | '\x0e' ... '\x1a' | '\x1c' ... '\x1f' => true,
_ => false, _ => false,
} }
}) })

View file

@ -0,0 +1,21 @@
extern crate yaml_rust;
#[macro_use]
extern crate quickcheck;
use quickcheck::TestResult;
use yaml_rust::{Yaml, YamlLoader, YamlEmitter};
use std::error::Error;
quickcheck! {
fn test_check_weird_keys(xs: Vec<String>) -> TestResult {
let mut out_str = String::new();
{
let mut emitter = YamlEmitter::new(&mut out_str);
emitter.dump(&Yaml::Array(xs.into_iter().map(|s| Yaml::String(s)).collect())).unwrap();
}
if let Err(err) = YamlLoader::load_from_str(&out_str) {
return TestResult::error(err.description());
}
return TestResult::passed();
}
}