Skip to content

Commit f128742

Browse files
committed
Use libtest_mimic to run gix-url fixture tests
I wanted fancy nextest output and it turns out getting it is simpler than I originally thought.
1 parent cbaf339 commit f128742

File tree

4 files changed

+51
-20
lines changed

4 files changed

+51
-20
lines changed

Cargo.lock

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gix-url/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ rust-version = "1.65"
1212
[lib]
1313
doctest = false
1414

15+
[[test]]
16+
name = "baseline"
17+
harness = false
18+
1519
[features]
1620
## Data structures implement `serde::Serialize` and `serde::Deserialize`.
1721
serde = ["dep:serde", "bstr/serde"]
@@ -30,6 +34,7 @@ document-features = { version = "0.2.0", optional = true }
3034

3135
[dev-dependencies]
3236
gix-testtools = { path = "../tests/tools" }
37+
libtest-mimic = "0.6.1"
3338

3439
[package.metadata.docs.rs]
3540
all-features = true

gix-url/tests/baseline/mod.rs renamed to gix-url/tests/baseline/main.rs

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,31 @@
11
use bstr::ByteSlice;
2+
use libtest_mimic::{Arguments, Failed, Trial};
23

3-
#[test]
4-
fn we_match_git_for_typical_cases() {
5-
let mut count = 0;
6-
let mut errs = Vec::new();
7-
for (url, expected) in baseline::URLS.iter() {
8-
count += 1;
9-
if std::panic::catch_unwind(|| {
10-
let actual = gix_url::parse(url).expect("valid urls can be parsed");
11-
assert_urls_equal(expected, &actual);
4+
fn main() {
5+
let args = Arguments::from_args();
6+
let tests = get_baseline_test_cases();
7+
8+
libtest_mimic::run(&args, tests).exit();
9+
}
10+
11+
fn get_baseline_test_cases() -> Vec<Trial> {
12+
baseline::URLS
13+
.iter()
14+
.map(|(url, expected)| {
15+
Trial::test(
16+
format!("baseline {}", url.to_str().expect("url is valid utf-8")),
17+
move || {
18+
std::panic::catch_unwind(|| {
19+
assert_urls_equal(&expected, &gix_url::parse(url).expect("valid urls can be parsed"))
20+
})
21+
.map_err(|err| match err.downcast_ref::<&str>() {
22+
Some(panic_message) => panic_message.into(),
23+
None => Failed::without_message(),
24+
})
25+
},
26+
)
1227
})
13-
.is_err()
14-
{
15-
errs.push((url, expected, gix_url::parse(url)));
16-
}
17-
}
18-
if !errs.is_empty() {
19-
let valid = count - errs.len();
20-
dbg!(errs);
21-
assert_eq!(count, valid, "All parsed URLs should match the baseline");
22-
}
28+
.collect::<_>()
2329
}
2430

2531
fn assert_urls_equal(expected: &baseline::GitDiagUrl<'_>, actual: &gix_url::Url) {

gix-url/tests/url.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ pub type Error = Box<dyn std::error::Error>;
22
pub type Result = std::result::Result<(), Error>;
33

44
mod access;
5-
mod baseline;
65
mod expand_path;
76
mod parse;

0 commit comments

Comments
 (0)