yaml-test-suite: print the YAML text on failure
This commit is contained in:
parent
af569b50d7
commit
3cdb815556
1 changed files with 7 additions and 1 deletions
|
@ -14,6 +14,7 @@ use yaml_rust::{
|
||||||
type Result<T, E=Box<dyn std::error::Error>> = std::result::Result<T, E>;
|
type Result<T, E=Box<dyn std::error::Error>> = std::result::Result<T, E>;
|
||||||
|
|
||||||
struct YamlTest {
|
struct YamlTest {
|
||||||
|
yaml_visual: String,
|
||||||
yaml: String,
|
yaml: String,
|
||||||
expected_events: String,
|
expected_events: String,
|
||||||
expected_error: bool,
|
expected_error: bool,
|
||||||
|
@ -53,13 +54,17 @@ fn run_yaml_test(test: &Test<YamlTest>) -> Outcome {
|
||||||
let desc = &test.data;
|
let desc = &test.data;
|
||||||
let actual_events = parse_to_events(&desc.yaml);
|
let actual_events = parse_to_events(&desc.yaml);
|
||||||
let events_diff = actual_events.map(|events| events_differ(events, &desc.expected_events));
|
let events_diff = actual_events.map(|events| events_differ(events, &desc.expected_events));
|
||||||
let error_text = match (events_diff, desc.expected_error) {
|
let mut error_text = match (events_diff, desc.expected_error) {
|
||||||
(Ok(_), true) => Some("no error when expected".into()),
|
(Ok(_), true) => Some("no error when expected".into()),
|
||||||
(Err(_), true) => None,
|
(Err(_), true) => None,
|
||||||
(Err(e), false) => Some(format!("unexpected error {:?}", e)),
|
(Err(e), false) => Some(format!("unexpected error {:?}", e)),
|
||||||
(Ok(Some(diff)), false) => Some(format!("events differ: {}", diff)),
|
(Ok(Some(diff)), false) => Some(format!("events differ: {}", diff)),
|
||||||
(Ok(None), false) => None,
|
(Ok(None), false) => None,
|
||||||
};
|
};
|
||||||
|
if let Some(text) = &mut error_text {
|
||||||
|
use std::fmt::Write;
|
||||||
|
let _ = write!(text, "\n### Input:\n{}\n### End", desc.yaml_visual);
|
||||||
|
}
|
||||||
match (error_text, desc.is_xfail) {
|
match (error_text, desc.is_xfail) {
|
||||||
(None, false) => Outcome::Passed,
|
(None, false) => Outcome::Passed,
|
||||||
(Some(text), false) => Outcome::Failed { msg: Some(text) },
|
(Some(text), false) => Outcome::Failed { msg: Some(text) },
|
||||||
|
@ -103,6 +108,7 @@ fn load_tests_from_file(entry: &DirEntry) -> Result<Vec<Test<YamlTest>>> {
|
||||||
is_ignored: false,
|
is_ignored: false,
|
||||||
is_bench: false,
|
is_bench: false,
|
||||||
data: YamlTest {
|
data: YamlTest {
|
||||||
|
yaml_visual: current_test["yaml"].as_str().unwrap().to_string(),
|
||||||
yaml: visual_to_raw(current_test["yaml"].as_str().unwrap()),
|
yaml: visual_to_raw(current_test["yaml"].as_str().unwrap()),
|
||||||
expected_events: visual_to_raw(current_test["tree"].as_str().unwrap()),
|
expected_events: visual_to_raw(current_test["tree"].as_str().unwrap()),
|
||||||
expected_error: current_test["fail"].as_bool() == Some(true),
|
expected_error: current_test["fail"].as_bool() == Some(true),
|
||||||
|
|
Loading…
Reference in a new issue