fallow_cli/report/ci/
severity.rs1use fallow_config::Severity;
2
3use crate::output_envelope::CodeClimateSeverity;
4
5#[must_use]
6pub const fn sarif_level(severity: Severity) -> &'static str {
7 match severity {
8 Severity::Error => "error",
9 Severity::Warn => "warning",
10 Severity::Off => unreachable!(),
11 }
12}
13
14#[must_use]
15pub const fn review_label(severity: Severity) -> &'static str {
16 match severity {
17 Severity::Error => "error",
18 Severity::Warn => "warn",
19 Severity::Off => "off",
20 }
21}
22
23#[must_use]
24pub const fn codeclimate_severity(severity: Severity) -> CodeClimateSeverity {
25 match severity {
26 Severity::Error => CodeClimateSeverity::Major,
27 Severity::Warn => CodeClimateSeverity::Minor,
28 Severity::Off => unreachable!(),
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn maps_error_across_ci_surfaces() {
38 assert_eq!(sarif_level(Severity::Error), "error");
39 assert_eq!(review_label(Severity::Error), "error");
40 assert_eq!(
41 codeclimate_severity(Severity::Error),
42 CodeClimateSeverity::Major
43 );
44 }
45
46 #[test]
47 fn maps_warn_across_ci_surfaces() {
48 assert_eq!(sarif_level(Severity::Warn), "warning");
49 assert_eq!(review_label(Severity::Warn), "warn");
50 assert_eq!(
51 codeclimate_severity(Severity::Warn),
52 CodeClimateSeverity::Minor
53 );
54 }
55
56 #[test]
57 #[should_panic(expected = "internal error: entered unreachable code")]
58 fn codeclimate_severity_off_is_unreachable() {
59 let _ = codeclimate_severity(Severity::Off);
60 }
61}