Skip to content

Commit 434a549

Browse files
committed
Auto merge of #713 - Skgland:spurious-errors, r=Mark-Simulacrum
detect new spuroius error and fix a regression considered spurious - change from TestFail to non-spuriouse BuildFail is a regression (#703) - no space left on drive is spuriouse (#700)
2 parents 4ebb543 + 1ba0233 commit 434a549

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

src/report/display.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ impl ResultName for FailureReason {
1515
FailureReason::NetworkAccess => "network access".into(),
1616
FailureReason::OOM => "OOM".into(),
1717
FailureReason::ICE => "ICE".into(),
18+
FailureReason::NoSpace => "no space left on device".into(),
1819
FailureReason::CompilerError(_) => "compiler error".into(),
1920
FailureReason::DependsOn(_) => "faulty deps".into(),
2021
FailureReason::CompilerDiagnosticChange => "compiler diagnostic changed".into(),
@@ -28,6 +29,7 @@ impl ResultName for FailureReason {
2829
| FailureReason::NetworkAccess
2930
| FailureReason::Timeout
3031
| FailureReason::OOM
32+
| FailureReason::NoSpace
3133
| FailureReason::CompilerDiagnosticChange
3234
| FailureReason::ICE => self.short_name(),
3335
}

src/report/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ fn compare(
510510
| (BuildFail(_), TestSkipped)
511511
| (BuildFail(_), TestPass)
512512
| (TestFail(_), TestPass) => Comparison::Fixed,
513-
513+
(TestFail(_), BuildFail(reason)) if !reason.is_spurious() => Comparison::Regressed,
514514
(TestFail(reason1), BuildFail(reason2))
515515
if reason1.is_spurious() || reason2.is_spurious() =>
516516
{
@@ -831,6 +831,7 @@ mod tests {
831831
TestPass, BuildFail(Unknown) => Regressed;
832832
TestSkipped, BuildFail(Unknown) => Regressed;
833833
TestFail(Unknown), BuildFail(Unknown) => Regressed;
834+
TestFail(OOM), BuildFail(Unknown) => Regressed;
834835

835836
// ICE is special
836837
BuildFail(Unknown), BuildFail(ICE) => Regressed;
@@ -846,7 +847,6 @@ mod tests {
846847
TestPass, TestFail(OOM) => SpuriousRegressed;
847848
TestPass, BuildFail(OOM) => SpuriousRegressed;
848849
TestSkipped, BuildFail(OOM) => SpuriousRegressed;
849-
TestFail(OOM), BuildFail(Unknown) => SpuriousRegressed;
850850
TestFail(Unknown), BuildFail(OOM) => SpuriousRegressed;
851851

852852
// Errors

src/results/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ impl ::std::str::FromStr for DiagnosticCode {
194194
pub enum FailureReason {
195195
Unknown,
196196
OOM,
197+
NoSpace,
197198
Timeout,
198199
ICE,
199200
NetworkAccess,
@@ -209,6 +210,7 @@ impl ::std::fmt::Display for FailureReason {
209210
match self {
210211
FailureReason::Unknown => write!(f, "unknown"),
211212
FailureReason::OOM => write!(f, "oom"),
213+
FailureReason::NoSpace => write!(f, "no-space"),
212214
FailureReason::Timeout => write!(f, "timeout"),
213215
FailureReason::ICE => write!(f, "ice"),
214216
FailureReason::NetworkAccess => write!(f, "network-access"),
@@ -265,6 +267,7 @@ impl ::std::str::FromStr for FailureReason {
265267
"oom" => Ok(FailureReason::OOM),
266268
"timeout" => Ok(FailureReason::Timeout),
267269
"ice" => Ok(FailureReason::ICE),
270+
"no-space" => Ok(FailureReason::NoSpace),
268271
_ => bail!("unexpected value: {}", s),
269272
}
270273
}
@@ -275,6 +278,7 @@ impl FailureReason {
275278
pub(crate) fn is_spurious(&self) -> bool {
276279
match *self {
277280
FailureReason::OOM
281+
| FailureReason::NoSpace
278282
| FailureReason::Timeout
279283
| FailureReason::NetworkAccess
280284
| FailureReason::CompilerDiagnosticChange => true,
@@ -351,6 +355,7 @@ mod tests {
351355
"build-fail:compiler-error(001)" => BuildFail(CompilerError(btreeset!["001".parse().unwrap()])),
352356
"build-fail:oom" => BuildFail(OOM),
353357
"build-fail:ice" => BuildFail(ICE),
358+
"build-fail:no-space" => BuildFail(NoSpace),
354359
"test-fail:timeout" => TestFail(Timeout),
355360
"test-pass" => TestPass,
356361
"error" => Error,

src/runner/test.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ fn run_cargo<DB: WriteResults>(
112112
let mut did_ice = false;
113113
let mut did_network = false;
114114
let mut did_trybuild = false;
115+
let mut ran_out_of_space = false;
115116
let mut error_codes = BTreeSet::new();
116117
let mut deps = BTreeSet::new();
117118

@@ -122,6 +123,9 @@ fn run_cargo<DB: WriteResults>(
122123
if line.contains("Address already in use") {
123124
did_network = true;
124125
}
126+
if line.to_lowercase().contains("no space left on device") {
127+
ran_out_of_space = true;
128+
}
125129
if line.contains("code: 111") && line.contains("Connection refused") {
126130
did_network = true;
127131
}
@@ -205,6 +209,8 @@ fn run_cargo<DB: WriteResults>(
205209
Err(e.context(FailureReason::NetworkAccess).into())
206210
} else if did_trybuild {
207211
Err(e.context(FailureReason::CompilerDiagnosticChange).into())
212+
} else if ran_out_of_space {
213+
Err(e.context(FailureReason::NoSpace).into())
208214
} else {
209215
Err(e.into())
210216
}

0 commit comments

Comments
 (0)