From 2054f6c23f3c16bb19ec641d4c90a5027a8a90e2 Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Mon, 10 Jul 2023 15:35:01 +0200 Subject: [PATCH] Test default error formatting --- crates/err/src/lib.rs | 57 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/crates/err/src/lib.rs b/crates/err/src/lib.rs index dabaea5..7781499 100644 --- a/crates/err/src/lib.rs +++ b/crates/err/src/lib.rs @@ -492,31 +492,64 @@ mod test { WithStringContentFmt(String), } - fn failing_a() -> Result<(), SomeErrorEnumA> { + #[derive(Debug, ThisError, Serialize, Deserialize)] + enum SomeErrorEnumB0 { + FromA(#[from] SomeErrorEnumA), + } + + #[derive(Debug, ThisError, Serialize, Deserialize)] + enum SomeErrorEnumB1 { + FromA(#[from] SomeErrorEnumA), + #[error("caffe")] + Caffe(SomeErrorEnumA), + } + + fn failing_a_00() -> Result<(), SomeErrorEnumA> { Err(SomeErrorEnumA::BadCase) } - #[test] - fn error_handle_00() { - assert_eq!(format!("{}", SomeErrorEnumA::BadCase), "BadCase"); + fn failing_b0_00() -> Result<(), SomeErrorEnumB0> { + let ret = failing_a_00()?; + Ok(ret) + } + + fn failing_b1_00() -> Result<(), SomeErrorEnumB1> { + let ret = failing_a_00()?; + Ok(ret) } #[test] - fn error_handle_01() { + fn error_handle_a_00() { + assert_eq!(format!("{}", SomeErrorEnumA::BadCase), "SomeErrorEnumA::BadCase"); + } + + #[test] + fn error_handle_a_01() { assert_eq!( - format!("{}", SomeErrorEnumA::WithStringContent(format!("inner"))), - "WithStringContent" + SomeErrorEnumA::WithStringContent(format!("inner")).to_string(), + "SomeErrorEnumA::WithStringContent" ); } #[test] - fn error_handle_02() { + fn error_handle_a_02() { assert_eq!( - format!( - "{}", - SomeErrorEnumA::WithStringContentFmt(format!("inner failure \"quoted\"")) - ), + SomeErrorEnumA::WithStringContentFmt(format!("inner failure \"quoted\"")).to_string(), "bad: inner failure \"quoted\"" ); } + + #[test] + fn error_handle_b0_00() { + let e = failing_b0_00().unwrap_err(); + let s = e.to_string(); + assert_eq!(s, "SomeErrorEnumB0::FromA(SomeErrorEnumA::BadCase)"); + } + + #[test] + fn error_handle_b1_00() { + let e = failing_b1_00().unwrap_err(); + let s = e.to_string(); + assert_eq!(s, "SomeErrorEnumB1::FromA(SomeErrorEnumA::BadCase)"); + } }