-
Notifications
You must be signed in to change notification settings - Fork 105
Expand file tree
/
Copy pathdisplay.rs
More file actions
119 lines (108 loc) · 4.29 KB
/
Copy pathdisplay.rs
File metadata and controls
119 lines (108 loc) · 4.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
use crate::prelude::*;
use crate::report::Comparison;
use crate::results::{BrokenReason, FailureReason, TestResult};
pub trait ResultName {
fn short_name(&self) -> String;
fn long_name(&self) -> String;
}
impl ResultName for FailureReason {
fn short_name(&self) -> String {
match self {
FailureReason::Unknown => "failed (unknown)".into(),
FailureReason::Timeout => "timed out".into(),
FailureReason::NetworkAccess => "network access".into(),
FailureReason::OOM => "OOM".into(),
FailureReason::ICE => "ICE".into(),
FailureReason::CompilerError(_) => "compiler error".into(),
FailureReason::BuildScript => "build script failure".into(),
FailureReason::DependsOn(_) => "faulty deps".into(),
}
}
fn long_name(&self) -> String {
match self {
FailureReason::CompilerError(_) | FailureReason::DependsOn(_) => self.to_string(),
FailureReason::Unknown
| FailureReason::NetworkAccess
| FailureReason::Timeout
| FailureReason::BuildScript
| FailureReason::OOM
| FailureReason::ICE => self.short_name(),
}
}
}
impl ResultName for BrokenReason {
fn short_name(&self) -> String {
match self {
BrokenReason::Unknown => "broken crate".into(),
BrokenReason::CargoToml => "broken Cargo.toml".into(),
BrokenReason::Yanked => "deps yanked".into(),
BrokenReason::MissingGitRepository => "missing repo".into(),
BrokenReason::MissingDependencies => "missing deps".into(),
}
}
fn long_name(&self) -> String {
self.short_name()
}
}
impl ResultName for TestResult {
fn short_name(&self) -> String {
match self {
TestResult::BrokenCrate(reason) => reason.short_name(),
TestResult::BuildFail(reason) => format!("build {}", reason.short_name()),
TestResult::TestFail(reason) => format!("test {}", reason.short_name()),
TestResult::TestSkipped => "test skipped".into(),
TestResult::TestPass => "test passed".into(),
TestResult::Error => "error".into(),
TestResult::Skipped => "skipped".into(),
}
}
fn long_name(&self) -> String {
match self {
TestResult::BuildFail(reason) => format!("build {}", reason.long_name()),
TestResult::TestFail(reason) => format!("test {}", reason.long_name()),
TestResult::BrokenCrate(reason) => reason.long_name(),
TestResult::TestSkipped
| TestResult::TestPass
| TestResult::Error
| TestResult::Skipped => self.short_name(),
}
}
}
#[derive(Serialize)]
pub enum Color {
Single(&'static str),
Striped(&'static str, &'static str),
}
pub trait ResultColor {
fn color(&self) -> Color;
}
impl ResultColor for Comparison {
fn color(&self) -> Color {
match self {
Comparison::Regressed => Color::Single("#db3026"),
Comparison::Fixed => Color::Single("#5630db"),
Comparison::Skipped => Color::Striped("#494b4a", "#555555"),
Comparison::Unknown => Color::Single("#494b4a"),
Comparison::SameBuildFail => Color::Single("#65461e"),
Comparison::SameTestFail => Color::Single("#788843"),
Comparison::SameTestSkipped => Color::Striped("#72a156", "#80b65f"),
Comparison::SameTestPass => Color::Single("#72a156"),
Comparison::Error => Color::Single("#d77026"),
Comparison::Broken => Color::Single("#44176e"),
Comparison::SpuriousRegressed => Color::Striped("#db3026", "#d5433b"),
Comparison::SpuriousFixed => Color::Striped("#5630db", "#5d3dcf"),
}
}
}
impl ResultColor for TestResult {
fn color(&self) -> Color {
match self {
TestResult::BrokenCrate(_) => Color::Single("#44176e"),
TestResult::BuildFail(_) => Color::Single("#db3026"),
TestResult::TestFail(_) => Color::Single("#65461e"),
TestResult::TestSkipped | TestResult::TestPass => Color::Single("#62a156"),
TestResult::Error => Color::Single("#d77026"),
TestResult::Skipped => Color::Single("#494b4a"),
}
}
}