Skip to content

Commit ead2f6c

Browse files
Merge pull request #770 from Skgland/reclassify-no-space-on-fetch
reclassify prepare failure
2 parents 870a98f + 4e8be93 commit ead2f6c

File tree

5 files changed

+46
-43
lines changed

5 files changed

+46
-43
lines changed

src/report/display.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ impl ResultName for TestResult {
5858
fn short_name(&self) -> String {
5959
match self {
6060
TestResult::BrokenCrate(reason) => reason.short_name(),
61+
TestResult::PrepareFail(reason) => format!("prepare {}", reason.short_name()),
6162
TestResult::BuildFail(reason) => format!("build {}", reason.short_name()),
6263
TestResult::TestFail(reason) => format!("test {}", reason.short_name()),
6364
TestResult::TestSkipped => "test skipped".into(),
@@ -69,6 +70,7 @@ impl ResultName for TestResult {
6970

7071
fn long_name(&self) -> String {
7172
match self {
73+
TestResult::PrepareFail(reason) => format!("prepare {}", reason.long_name()),
7274
TestResult::BuildFail(reason) => format!("build {}", reason.long_name()),
7375
TestResult::TestFail(reason) => format!("test {}", reason.long_name()),
7476
TestResult::BrokenCrate(reason) => reason.long_name(),
@@ -103,6 +105,7 @@ impl ResultColor for Comparison {
103105
Comparison::SameTestPass => Color::Single("#72a156"),
104106
Comparison::Error => Color::Single("#d77026"),
105107
Comparison::Broken => Color::Single("#44176e"),
108+
Comparison::PrepareFail => Color::Striped("#44176e", "#d77026"),
106109
Comparison::SpuriousRegressed => Color::Striped("#db3026", "#d5433b"),
107110
Comparison::SpuriousFixed => Color::Striped("#5630db", "#5d3dcf"),
108111
}
@@ -117,6 +120,7 @@ impl ResultColor for TestResult {
117120
TestResult::TestFail(_) => Color::Single("#65461e"),
118121
TestResult::TestSkipped | TestResult::TestPass => Color::Single("#62a156"),
119122
TestResult::Error => Color::Single("#d77026"),
123+
TestResult::PrepareFail(_) => Color::Striped("#44176e", "#d77026"),
120124
TestResult::Skipped => Color::Single("#494b4a"),
121125
}
122126
}

src/report/mod.rs

Lines changed: 33 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ string_enum!(pub enum Comparison {
7171
Unknown => "unknown",
7272
Error => "error",
7373
Broken => "broken",
74+
PrepareFail => "prepare-fail",
7475
SameBuildFail => "build-fail",
7576
SameTestFail => "test-fail",
7677
SameTestSkipped => "test-skipped",
@@ -87,7 +88,8 @@ impl Comparison {
8788
| Comparison::Unknown
8889
| Comparison::Error
8990
| Comparison::SpuriousRegressed
90-
| Comparison::SpuriousFixed => true,
91+
| Comparison::SpuriousFixed
92+
| Comparison::PrepareFail => true,
9193
Comparison::Skipped
9294
| Comparison::Broken
9395
| Comparison::SameBuildFail
@@ -107,6 +109,7 @@ impl Comparison {
107109
| Comparison::SpuriousFixed
108110
| Comparison::Skipped
109111
| Comparison::Broken
112+
| Comparison::PrepareFail
110113
| Comparison::SameBuildFail
111114
| Comparison::SameTestFail
112115
| Comparison::SameTestSkipped
@@ -406,7 +409,9 @@ fn gen_retry_list(res: &RawTestResults) -> String {
406409
.crates
407410
.iter()
408411
.filter(|crate_res| {
409-
crate_res.res == Comparison::Regressed || crate_res.res == Comparison::SpuriousRegressed
412+
crate_res.res == Comparison::Regressed
413+
|| crate_res.res == Comparison::SpuriousRegressed
414+
|| crate_res.res == Comparison::PrepareFail
410415
})
411416
.map(|crate_res| &crate_res.krate);
412417

@@ -486,53 +491,37 @@ fn compare(
486491
}
487492
(BuildFail(_), BuildFail(FailureReason::ICE)) => Comparison::Regressed,
488493

494+
// same
489495
(BuildFail(_), BuildFail(_)) => Comparison::SameBuildFail,
490-
(TestFail(_), TestFail(_)) => Comparison::SameTestFail,
491496
(TestSkipped, TestSkipped) => Comparison::SameTestSkipped,
497+
(TestFail(_), TestFail(_)) => Comparison::SameTestFail,
492498
(TestPass, TestPass) => Comparison::SameTestPass,
493499

494-
(BuildFail(ref reason1), TestFail(ref reason2))
495-
if reason1.is_spurious() || reason2.is_spurious() =>
496-
{
497-
Comparison::SpuriousFixed
498-
}
499-
(BuildFail(ref reason), TestSkipped)
500-
| (BuildFail(ref reason), TestPass)
501-
| (TestFail(ref reason), TestPass)
502-
if reason.is_spurious() =>
503-
{
504-
Comparison::SpuriousFixed
505-
}
506-
(BuildFail(_), TestFail(_))
507-
| (BuildFail(_), TestSkipped)
508-
| (BuildFail(_), TestPass)
509-
| (TestFail(_), TestPass) => Comparison::Fixed,
510-
(TestFail(_), BuildFail(reason)) if !reason.is_spurious() => Comparison::Regressed,
511-
(TestFail(reason1), BuildFail(reason2))
512-
if reason1.is_spurious() || reason2.is_spurious() =>
513-
{
514-
Comparison::SpuriousRegressed
500+
// (spurious) fixed
501+
(BuildFail(reason), TestSkipped | TestFail(_) | TestPass)
502+
| (TestFail(reason), TestPass) => {
503+
if reason.is_spurious() {
504+
Comparison::SpuriousFixed
505+
} else {
506+
Comparison::Fixed
507+
}
515508
}
516-
(TestPass, TestFail(reason))
517-
| (TestPass, BuildFail(reason))
518-
| (TestSkipped, BuildFail(reason))
519-
| (TestFail(_), BuildFail(reason))
520-
if reason.is_spurious() =>
521-
{
522-
Comparison::SpuriousRegressed
509+
510+
// (spurious) regressed
511+
(TestSkipped | TestFail(_) | TestPass, BuildFail(reason))
512+
| (TestPass, TestFail(reason)) => {
513+
if reason.is_spurious() {
514+
Comparison::SpuriousRegressed
515+
} else {
516+
Comparison::Regressed
517+
}
523518
}
524-
(TestPass, TestFail(_))
525-
| (TestPass, BuildFail(_))
526-
| (TestSkipped, BuildFail(_))
527-
| (TestFail(_), BuildFail(_)) => Comparison::Regressed,
528519

520+
(PrepareFail(_), _) | (_, PrepareFail(_)) => Comparison::PrepareFail,
529521
(Error, _) | (_, Error) => Comparison::Error,
530522
(Skipped, _) | (_, Skipped) => Comparison::Skipped,
531523
(BrokenCrate(_), _) | (_, BrokenCrate(_)) => Comparison::Broken,
532-
(TestFail(_), TestSkipped)
533-
| (TestPass, TestSkipped)
534-
| (TestSkipped, TestFail(_))
535-
| (TestSkipped, TestPass) => {
524+
(TestFail(_) | TestPass, TestSkipped) | (TestSkipped, TestFail(_) | TestPass) => {
536525
panic!("can't compare {res1} and {res2}");
537526
}
538527
},
@@ -821,6 +810,7 @@ mod tests {
821810

822811
// Non-spurious fixes/regressions
823812
BuildFail(Unknown), TestFail(Unknown) => Fixed;
813+
BuildFail(Unknown), TestFail(OOM) => Fixed;
824814
BuildFail(Unknown), TestSkipped => Fixed;
825815
BuildFail(Unknown), TestPass => Fixed;
826816
TestFail(Unknown), TestPass => Fixed;
@@ -837,7 +827,6 @@ mod tests {
837827

838828
// Spurious fixes/regressions
839829
BuildFail(OOM), TestFail(Unknown) => SpuriousFixed;
840-
BuildFail(Unknown), TestFail(OOM) => SpuriousFixed;
841830
BuildFail(OOM), TestSkipped => SpuriousFixed;
842831
BuildFail(OOM), TestPass => SpuriousFixed;
843832
TestFail(OOM), TestPass => SpuriousFixed;
@@ -846,6 +835,10 @@ mod tests {
846835
TestSkipped, BuildFail(OOM) => SpuriousRegressed;
847836
TestFail(Unknown), BuildFail(OOM) => SpuriousRegressed;
848837

838+
// PrepareFail
839+
PrepareFail(Unknown), BuildFail(Unknown) => PrepareFail;
840+
BuildFail(Unknown), PrepareFail(Unknown) => PrepareFail;
841+
849842
// Errors
850843
Error, TestPass => Error;
851844
Error, TestSkipped => Error;

src/results/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,7 @@ string_enum!(pub enum BrokenReason {
307307
test_result_enum!(pub enum TestResult {
308308
with_reason {
309309
BrokenCrate(BrokenReason) => "broken",
310+
PrepareFail(FailureReason) => "prepare-fail",
310311
BuildFail(FailureReason) => "build-fail",
311312
TestFail(FailureReason) => "test-fail",
312313
}
@@ -356,6 +357,11 @@ mod tests {
356357

357358
//"build-fail:depends-on()" => BuildFail(DependsOn(vec!["001"])),
358359
test_from_str! {
360+
"prepare-fail:unknown" => PrepareFail(Unknown),
361+
"prepare-fail:oom" => PrepareFail(OOM),
362+
"prepare-fail:docker" => PrepareFail(Docker),
363+
"prepare-fail:no-space" => PrepareFail(NoSpace),
364+
"prepare-fail:timeout" => PrepareFail(Timeout),
359365
"build-fail:unknown" => BuildFail(Unknown),
360366
"build-fail:docker" => BuildFail(Docker),
361367
"build-fail:compiler-error(001, 002)" => BuildFail(CompilerError(btreeset!["001".parse().unwrap(), "002".parse().unwrap()])),

src/runner/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use rustwide::{Build, PrepareError};
1515
use std::collections::{BTreeSet, HashMap, HashSet};
1616
use std::io::ErrorKind;
1717

18-
fn failure_reason(err: &Error) -> FailureReason {
18+
pub(crate) fn failure_reason(err: &Error) -> FailureReason {
1919
if let Some(reason) = err.downcast_ref::<FailureReason>() {
2020
reason.clone()
2121
} else if let Some(command_error) = err.downcast_ref::<CommandError>() {

src/runner/worker.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::experiments::{Experiment, Mode};
44
use crate::prelude::*;
55
use crate::results::{BrokenReason, TestResult};
66
use crate::runner::tasks::{Task, TaskStep};
7-
use crate::runner::test::detect_broken;
7+
use crate::runner::test::{detect_broken, failure_reason};
88
use crate::runner::OverrideResult;
99
use crate::toolchain::Toolchain;
1010
use crate::utils;
@@ -244,7 +244,7 @@ impl<'a> Worker<'a> {
244244
let mut result = if self.config.is_broken(&krate) {
245245
TestResult::BrokenCrate(BrokenReason::Unknown)
246246
} else {
247-
TestResult::Error
247+
TestResult::PrepareFail(failure_reason(&err))
248248
};
249249

250250
if let Some(OverrideResult(res)) = err.downcast_ref() {

0 commit comments

Comments
 (0)