Skip to content

Commit d3ccce0

Browse files
committed
Auto merge of #597 - Mark-Simulacrum:classify-network, r=Mark-Simulacrum
Classify network errors as spurious This adds detection for a particularly common network error message. Resolves #580.
2 parents 0c572ab + dbd8752 commit d3ccce0

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

src/report/display.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ impl ResultName for FailureReason {
1212
match self {
1313
FailureReason::Unknown => "failed (unknown)".into(),
1414
FailureReason::Timeout => "timed out".into(),
15+
FailureReason::NetworkAccess => "network access".into(),
1516
FailureReason::OOM => "OOM".into(),
1617
FailureReason::ICE => "ICE".into(),
1718
FailureReason::CompilerError(_) => "compiler error".into(),
@@ -23,6 +24,7 @@ impl ResultName for FailureReason {
2324
match self {
2425
FailureReason::CompilerError(_) | FailureReason::DependsOn(_) => self.to_string(),
2526
FailureReason::Unknown
27+
| FailureReason::NetworkAccess
2628
| FailureReason::Timeout
2729
| FailureReason::OOM
2830
| FailureReason::ICE => self.short_name(),

src/results/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ pub enum FailureReason {
198198
OOM,
199199
Timeout,
200200
ICE,
201+
NetworkAccess,
201202
CompilerError(BTreeSet<DiagnosticCode>),
202203
DependsOn(BTreeSet<Crate>),
203204
}
@@ -211,6 +212,7 @@ impl ::std::fmt::Display for FailureReason {
211212
FailureReason::OOM => write!(f, "oom"),
212213
FailureReason::Timeout => write!(f, "timeout"),
213214
FailureReason::ICE => write!(f, "ice"),
215+
FailureReason::NetworkAccess => write!(f, "network-access"),
214216
FailureReason::CompilerError(codes) => write!(
215217
f,
216218
"compiler-error({})",
@@ -271,7 +273,7 @@ impl ::std::str::FromStr for FailureReason {
271273
impl FailureReason {
272274
pub(crate) fn is_spurious(&self) -> bool {
273275
match *self {
274-
FailureReason::OOM | FailureReason::Timeout => true,
276+
FailureReason::OOM | FailureReason::Timeout | FailureReason::NetworkAccess => true,
275277
FailureReason::CompilerError(_)
276278
| FailureReason::DependsOn(_)
277279
| FailureReason::Unknown

src/runner/test.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,15 @@ fn run_cargo<DB: WriteResults>(
9797
};
9898

9999
let mut did_ice = false;
100+
let mut did_network = false;
100101
let mut error_codes = BTreeSet::new();
101102
let mut deps = BTreeSet::new();
102103

103104
let mut detect_error = |line: &str, actions: &mut ProcessLinesActions| {
105+
if line.contains("urlopen error") && line.contains("Temporary failure in name resolution") {
106+
did_network = true;
107+
}
108+
104109
// Avoid trying to deserialize non JSON output
105110
if !line.starts_with('{') {
106111
return;
@@ -169,6 +174,8 @@ fn run_cargo<DB: WriteResults>(
169174
Err(e.context(FailureReason::DependsOn(deps)).into())
170175
} else if !error_codes.is_empty() {
171176
Err(e.context(FailureReason::CompilerError(error_codes)).into())
177+
} else if did_network {
178+
Err(e.context(FailureReason::NetworkAccess).into())
172179
} else {
173180
Err(e.into())
174181
}

0 commit comments

Comments
 (0)