diff --git a/parser/tests/yaml-test-suite.rs b/parser/tests/yaml-test-suite.rs index 9048ebe..61f54b6 100644 --- a/parser/tests/yaml-test-suite.rs +++ b/parser/tests/yaml-test-suite.rs @@ -14,6 +14,7 @@ use yaml_rust::{ type Result> = std::result::Result; struct YamlTest { + yaml_visual: String, yaml: String, expected_events: String, expected_error: bool, @@ -53,13 +54,17 @@ fn run_yaml_test(test: &Test) -> Outcome { let desc = &test.data; let actual_events = parse_to_events(&desc.yaml); 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()), (Err(_), true) => None, (Err(e), false) => Some(format!("unexpected error {:?}", e)), (Ok(Some(diff)), false) => Some(format!("events differ: {}", diff)), (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) { (None, false) => Outcome::Passed, (Some(text), false) => Outcome::Failed { msg: Some(text) }, @@ -103,6 +108,7 @@ fn load_tests_from_file(entry: &DirEntry) -> Result>> { is_ignored: false, is_bench: false, data: YamlTest { + yaml_visual: current_test["yaml"].as_str().unwrap().to_string(), yaml: visual_to_raw(current_test["yaml"].as_str().unwrap()), expected_events: visual_to_raw(current_test["tree"].as_str().unwrap()), expected_error: current_test["fail"].as_bool() == Some(true),