Skip to content

Commit 089ff9d

Browse files
committed
categorize docker errors as spurious
1 parent 4101cd0 commit 089ff9d

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

src/report/display.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ impl ResultName for FailureReason {
1313
FailureReason::Unknown => "failed (unknown)".into(),
1414
FailureReason::Timeout => "timed out".into(),
1515
FailureReason::NetworkAccess => "network access".into(),
16+
FailureReason::Docker => "docker".into(),
1617
FailureReason::OOM => "OOM".into(),
1718
FailureReason::ICE => "ICE".into(),
1819
FailureReason::NoSpace => "no space left on device".into(),
@@ -27,6 +28,7 @@ impl ResultName for FailureReason {
2728
FailureReason::CompilerError(_) | FailureReason::DependsOn(_) => self.to_string(),
2829
FailureReason::Unknown
2930
| FailureReason::NetworkAccess
31+
| FailureReason::Docker
3032
| FailureReason::Timeout
3133
| FailureReason::OOM
3234
| FailureReason::NoSpace

src/results/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ pub enum FailureReason {
200200
Timeout,
201201
ICE,
202202
NetworkAccess,
203+
Docker,
203204
CompilerDiagnosticChange,
204205
CompilerError(BTreeSet<DiagnosticCode>),
205206
DependsOn(BTreeSet<Crate>),
@@ -216,6 +217,7 @@ impl ::std::fmt::Display for FailureReason {
216217
FailureReason::Timeout => write!(f, "timeout"),
217218
FailureReason::ICE => write!(f, "ice"),
218219
FailureReason::NetworkAccess => write!(f, "network-access"),
220+
FailureReason::Docker => write!(f, "docker"),
219221
FailureReason::CompilerError(codes) => write!(
220222
f,
221223
"compiler-error({})",
@@ -283,6 +285,7 @@ impl FailureReason {
283285
| FailureReason::NoSpace
284286
| FailureReason::Timeout
285287
| FailureReason::NetworkAccess
288+
| FailureReason::Docker
286289
| FailureReason::CompilerDiagnosticChange => true,
287290
FailureReason::CompilerError(_)
288291
| FailureReason::DependsOn(_)

src/runner/test.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,23 @@ use std::io::ErrorKind;
1717

1818
fn failure_reason(err: &Error) -> FailureReason {
1919
for cause in err.chain() {
20-
if let Some(&CommandError::SandboxOOM) = cause.downcast_ref() {
21-
return FailureReason::OOM;
22-
} else if let Some(&CommandError::NoOutputFor(_) | &CommandError::Timeout(_)) =
23-
cause.downcast_ref()
24-
{
25-
return FailureReason::Timeout;
26-
} else if let Some(reason) = cause.downcast_ref::<FailureReason>() {
20+
if let Some(command_error) = cause.downcast_ref::<CommandError>() {
21+
match command_error {
22+
CommandError::NoOutputFor(_)
23+
| CommandError::Timeout(_)
24+
| CommandError::KillAfterTimeoutFailed(_) => return FailureReason::Timeout,
25+
CommandError::SandboxOOM => return FailureReason::OOM,
26+
CommandError::SandboxImagePullFailed(_)
27+
| CommandError::SandboxImageMissing(_)
28+
| CommandError::SandboxContainerCreate(_)
29+
| CommandError::WorkspaceNotMountedCorrectly
30+
| CommandError::InvalidDockerInspectOutput(_) => return FailureReason::Docker,
31+
32+
CommandError::ExecutionFailed { .. } | CommandError::IO(_) | _ => {}
33+
}
34+
}
35+
36+
if let Some(reason) = cause.downcast_ref::<FailureReason>() {
2737
return reason.clone();
2838
} else if let Some(CommandError::IO(io)) = cause.downcast_ref() {
2939
match io.kind() {

0 commit comments

Comments
 (0)