Run yaml-test-suite over both input variants.

This commit is contained in:
Ethiraric 2024-10-20 16:09:29 +02:00
parent 6069e1d0e3
commit 0f71c8e68a
2 changed files with 18 additions and 1 deletions

View file

@ -209,6 +209,7 @@ pub trait Input {
); );
} }
'#' => { '#' => {
self.skip(); // Skip over '#'
while !is_breakz(self.look_ch()) { while !is_breakz(self.look_ch()) {
self.skip(); self.skip();
chars_consumed += 1; chars_consumed += 1;

View file

@ -137,9 +137,25 @@ fn load_tests_from_file(entry: &DirEntry) -> Result<Vec<Test<YamlTest>>> {
} }
fn parse_to_events(source: &str) -> Result<EventReporter, ScanError> { fn parse_to_events(source: &str) -> Result<EventReporter, ScanError> {
let mut reporter = EventReporter::default(); // Parse as string
let mut str_events = vec![];
for x in Parser::new_from_str(source) { for x in Parser::new_from_str(source) {
let x = x?; let x = x?;
str_events.push(x);
}
// Parse as iter
let mut iter_events = vec![];
for x in Parser::new_from_iter(source.chars()) {
let x = x?;
iter_events.push(x);
}
// No matter the input, we should parse into the same events.
assert_eq!(str_events, iter_events);
// Put events into the reporter, for comparison with the test suite.
let mut reporter = EventReporter::default();
for x in str_events {
reporter.on_event(x.0, x.1); reporter.on_event(x.0, x.1);
} }
Ok(reporter) Ok(reporter)