fallow_engine/health/
health_error.rs1#[derive(Debug, Clone)]
9pub enum HealthError {
10 Message {
12 message: String,
14 exit_code: u8,
16 },
17 Printed(u8),
19}
20
21impl HealthError {
22 #[must_use]
24 pub fn message(message: impl Into<String>, exit_code: u8) -> Self {
25 Self::Message {
26 message: message.into(),
27 exit_code,
28 }
29 }
30
31 #[must_use]
33 pub fn exit_code(&self) -> u8 {
34 match self {
35 Self::Message { exit_code, .. } => *exit_code,
36 Self::Printed(code) => *code,
37 }
38 }
39}
40
41#[cfg(test)]
42mod tests {
43 use super::*;
44
45 #[test]
46 fn message_carries_text_and_code() {
47 let err = HealthError::message("boom", 2);
48 assert_eq!(err.exit_code(), 2);
49 match err {
50 HealthError::Message { message, exit_code } => {
51 assert_eq!(message, "boom");
52 assert_eq!(exit_code, 2);
53 }
54 HealthError::Printed(_) => panic!("expected Message variant"),
55 }
56 }
57
58 #[test]
59 fn printed_carries_only_code() {
60 let err = HealthError::Printed(5);
61 assert_eq!(err.exit_code(), 5);
62 assert!(matches!(err, HealthError::Printed(5)));
63 }
64}