Skip to content

Commit aae797c

Browse files
committed
Bump libtest-mimic to 0.8.1.
Co-Author: Cristian Le <git@lecris.dev>
1 parent 61edd60 commit aae797c

File tree

1 file changed

+28
-31
lines changed

1 file changed

+28
-31
lines changed

parser/tests/yaml-test-suite.rs

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
use std::{
22
borrow::Cow,
33
fs::{self, DirEntry},
4+
process::ExitCode,
45
};
56

6-
use libtest_mimic::{run_tests, Arguments, Outcome, Test};
7+
use libtest_mimic::{run, Arguments, Failed, Trial};
78

89
use saphyr::{LoadableYamlNode, Mapping, Scalar, Yaml};
910
use saphyr_parser::{
@@ -19,18 +20,18 @@ struct YamlTest {
1920
expected_error: bool,
2021
}
2122

22-
fn main() -> Result<()> {
23+
fn main() -> Result<ExitCode> {
2324
if !std::path::Path::new("tests/yaml-test-suite").is_dir() {
2425
eprintln!("===================================================================");
2526
eprintln!("/!\\ yaml-test-suite directory not found, Skipping tests /!\\");
2627
eprintln!("If you intend to contribute to the library, restore the test suite.");
2728
eprintln!("===================================================================");
28-
return Ok(());
29+
return Ok(ExitCode::SUCCESS);
2930
}
3031

3132
let mut arguments = Arguments::from_args();
32-
if arguments.num_threads.is_none() {
33-
arguments.num_threads = Some(1);
33+
if arguments.test_threads.is_none() {
34+
arguments.test_threads = Some(1);
3435
}
3536
let tests: Vec<Vec<_>> = std::fs::read_dir("tests/yaml-test-suite/src")?
3637
.map(|entry| -> Result<_> {
@@ -40,17 +41,17 @@ fn main() -> Result<()> {
4041
})
4142
.collect::<Result<_>>()?;
4243
let mut tests: Vec<_> = tests.into_iter().flatten().collect();
43-
tests.sort_by_key(|t| t.name.clone());
44+
tests.sort_by(|a, b| a.name().cmp(b.name()));
4445

45-
run_tests(&arguments, tests, run_yaml_test).exit();
46+
Ok(run(&arguments, tests).exit_code())
4647
}
4748

48-
fn run_yaml_test(test: &Test<YamlTest>) -> Outcome {
49-
let desc = &test.data;
50-
let reporter = parse_to_events(&desc.yaml);
49+
#[allow(clippy::needless_pass_by_value)]
50+
fn run_yaml_test(data: YamlTest) -> Result<(), Failed> {
51+
let reporter = parse_to_events(&data.yaml);
5152
let actual_events = reporter.as_ref().map(|reporter| &reporter.events);
52-
let events_diff = actual_events.map(|events| events_differ(events, &desc.expected_events));
53-
let error_text = match (&events_diff, desc.expected_error) {
53+
let events_diff = actual_events.map(|events| events_differ(events, &data.expected_events));
54+
let error_text = match (&events_diff, data.expected_error) {
5455
(Ok(x), true) => Some(format!("no error when expected: {x:#?}")),
5556
(Err(_), true) | (Ok(None), false) => None,
5657
(Err(e), false) => Some(format!("unexpected error {e:?}")),
@@ -60,19 +61,19 @@ fn run_yaml_test(test: &Test<YamlTest>) -> Outcome {
6061
if let Some(mut txt) = error_text {
6162
add_error_context(
6263
&mut txt,
63-
desc,
64+
&data,
6465
events_diff.err().map(saphyr::ScanError::marker),
6566
);
66-
Outcome::Failed { msg: Some(txt) }
67+
Err(txt.into())
6768
} else if let Some((mut msg, span)) = reporter
6869
.as_ref()
6970
.ok()
7071
.and_then(|reporter| reporter.span_failures.first().cloned())
7172
{
72-
add_error_context(&mut msg, desc, Some(&span.start));
73-
Outcome::Failed { msg: Some(msg) }
73+
add_error_context(&mut msg, &data, Some(&span.start));
74+
Err(msg.into())
7475
} else {
75-
Outcome::Passed
76+
Ok(())
7677
}
7778
}
7879

@@ -100,7 +101,7 @@ fn add_error_context(text: &mut String, desc: &YamlTest, marker: Option<&Marker>
100101
}
101102
}
102103

103-
fn load_tests_from_file(entry: &DirEntry) -> Result<Vec<Test<YamlTest>>> {
104+
fn load_tests_from_file(entry: &DirEntry) -> Result<Vec<Trial>> {
104105
let file_name = entry.file_name().to_string_lossy().to_string();
105106
let test_name = file_name
106107
.strip_suffix(".yaml")
@@ -131,21 +132,17 @@ fn load_tests_from_file(entry: &DirEntry) -> Result<Vec<Test<YamlTest>>> {
131132
continue;
132133
}
133134

134-
result.push(Test {
135-
name,
136-
kind: String::new(),
137-
is_ignored: false,
138-
is_bench: false,
139-
data: YamlTest {
135+
result.push(Trial::test(name, move || {
136+
run_yaml_test(YamlTest {
140137
yaml_visual: current_test["yaml"].as_str().unwrap().to_string(),
141138
yaml: visual_to_raw(current_test["yaml"].as_str().unwrap()),
142139
expected_events: visual_to_raw(current_test["tree"].as_str().unwrap()),
143140
expected_error: current_test
144141
.as_mapping_get("fail")
145142
.map(|x| x.as_bool().unwrap_or(false))
146143
== Some(true),
147-
},
148-
});
144+
})
145+
}));
149146
}
150147
Ok(result)
151148
}
@@ -224,12 +221,12 @@ impl<'input> SpannedEventReceiver<'input> for EventReporter<'input> {
224221
Event::DocumentEnd => "-DOC".into(),
225222

226223
Event::SequenceStart(idx, tag) => {
227-
format!("+SEQ{}{}", format_index(idx), format_tag(&tag))
224+
format!("+SEQ{}{}", format_index(idx), format_tag(tag.as_ref()))
228225
}
229226
Event::SequenceEnd => "-SEQ".into(),
230227

231228
Event::MappingStart(idx, tag) => {
232-
format!("+MAP{}{}", format_index(idx), format_tag(&tag))
229+
format!("+MAP{}{}", format_index(idx), format_tag(tag.as_ref()))
233230
}
234231
Event::MappingEnd => "-MAP".into(),
235232

@@ -244,7 +241,7 @@ impl<'input> SpannedEventReceiver<'input> for EventReporter<'input> {
244241
format!(
245242
"=VAL{}{} {kind}{}",
246243
format_index(idx),
247-
format_tag(tag),
244+
format_tag(tag.as_ref()),
248245
escape_text(text)
249246
)
250247
}
@@ -277,8 +274,8 @@ fn escape_text(text: &str) -> String {
277274
text
278275
}
279276

280-
fn format_tag(tag: &Option<Cow<'_, Tag>>) -> String {
281-
if let Some(tag) = tag.as_ref().map(Cow::as_ref) {
277+
fn format_tag(tag: Option<&Cow<'_, Tag>>) -> String {
278+
if let Some(tag) = tag {
282279
format!(" <{}{}>", tag.handle, tag.suffix)
283280
} else {
284281
String::new()

0 commit comments

Comments
 (0)