Skip to content

Commit f67fab2

Browse files
committed
handle other PrepareErrors
blocked on rust-lang/rustwide#103
1 parent 78250a7 commit f67fab2

File tree

3 files changed

+32
-17
lines changed

3 files changed

+32
-17
lines changed

Cargo.lock

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,6 @@ zstd = "0.13.0"
7777
assert_cmd = "2.0.4"
7878
difference = "2.0.0"
7979
predicates = "3.0.4"
80+
81+
[patch.crates-io]
82+
rustwide = { git = "https://github.com/rust-lang/rustwide.git", rev = "refs/pull/103/head" }

src/runner/test.rs

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,24 +48,37 @@ pub(super) fn detect_broken<T>(res: Result<T, Error>) -> Result<T, Error> {
4848
match res {
4949
Ok(ok) => Ok(ok),
5050
Err(err) => {
51-
let mut reason = None;
52-
5351
if let Some(error) = err.downcast_ref() {
54-
reason = match *error {
55-
PrepareError::MissingCargoToml => Some(BrokenReason::CargoToml),
56-
PrepareError::InvalidCargoTomlSyntax => Some(BrokenReason::CargoToml),
57-
PrepareError::YankedDependencies(_) => Some(BrokenReason::Yanked),
58-
PrepareError::MissingDependencies(_) => Some(BrokenReason::MissingDependencies),
59-
PrepareError::PrivateGitRepository => Some(BrokenReason::MissingGitRepository),
60-
_ => None,
61-
}
62-
}
52+
let reason = match *error {
53+
PrepareError::MissingCargoToml => {
54+
TestResult::BrokenCrate(BrokenReason::CargoToml)
55+
}
56+
PrepareError::InvalidCargoTomlSyntax => {
57+
TestResult::BrokenCrate(BrokenReason::CargoToml)
58+
}
59+
PrepareError::YankedDependencies(_) => {
60+
TestResult::BrokenCrate(BrokenReason::Yanked)
61+
}
62+
PrepareError::MissingDependencies(_) => {
63+
TestResult::BrokenCrate(BrokenReason::MissingDependencies)
64+
}
65+
PrepareError::PrivateGitRepository => {
66+
TestResult::BrokenCrate(BrokenReason::MissingGitRepository)
67+
}
68+
_ => {
69+
let reason = failure_reason(&err);
70+
if reason.is_spurious() || matches!(reason, FailureReason::Unknown) {
71+
TestResult::PrepareFail(reason)
72+
} else {
73+
TestResult::BrokenCrate(BrokenReason::Unknown)
74+
}
75+
}
76+
};
6377

64-
if let Some(reason) = reason {
65-
Err(err.context(OverrideResult(TestResult::BrokenCrate(reason))))
66-
} else {
67-
Err(err)
78+
return Err(err.context(OverrideResult(reason)));
6879
}
80+
81+
Err(err)
6982
}
7083
}
7184
}

0 commit comments

Comments
 (0)