From 56258d6821a05961bcd9cf8dd46782cf9cd122ea Mon Sep 17 00:00:00 2001 From: evenyag Date: Sat, 7 May 2022 15:45:46 +0800 Subject: [PATCH] test: Add more test for opaque error --- src/common/error/src/ext.rs | 20 ++++++++++++++++++-- src/common/error/src/status_code.rs | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/common/error/src/ext.rs b/src/common/error/src/ext.rs index d78e35326c..31c8bf917a 100644 --- a/src/common/error/src/ext.rs +++ b/src/common/error/src/ext.rs @@ -97,6 +97,10 @@ mod tests { } impl ErrorExt for InnerError { + fn status_code(&self) -> StatusCode { + StatusCode::Internal + } + fn backtrace_opt(&self) -> Option<&snafu::Backtrace> { ErrorCompat::backtrace(self) } @@ -133,19 +137,31 @@ mod tests { #[test] fn test_opaque_error() { + // Test leaf error. let err: Error = throw_leaf().map_err(Into::into).err().unwrap(); let msg = format!("{:?}", err); assert!(msg.contains("\nBacktrace:\n")); - assert!(ErrorCompat::backtrace(&err).is_some()); + let fmt_msg = format!("{:?}", DebugFormat::new(&err)); assert_eq!(msg, fmt_msg); + assert!(ErrorCompat::backtrace(&err).is_some()); + assert!(err.backtrace_opt().is_some()); + assert_eq!("This is a leaf error, val: 10", err.to_string()); + assert_eq!(StatusCode::Internal, err.status_code()); + + // Test internal error. let err: Error = throw_internal().map_err(Into::into).err().unwrap(); let msg = format!("{:?}", err); assert!(msg.contains("\nBacktrace:\n")); assert!(msg.contains("Caused by")); - assert!(ErrorCompat::backtrace(&err).is_some()); + let fmt_msg = format!("{:?}", DebugFormat::new(&err)); assert_eq!(msg, fmt_msg); + + assert!(ErrorCompat::backtrace(&err).is_some()); + assert!(err.backtrace_opt().is_some()); + assert_eq!("This is an internal error", err.to_string()); + assert_eq!(StatusCode::Internal, err.status_code()); } } diff --git a/src/common/error/src/status_code.rs b/src/common/error/src/status_code.rs index 2b0a338b31..e81cc349fc 100644 --- a/src/common/error/src/status_code.rs +++ b/src/common/error/src/status_code.rs @@ -1,5 +1,5 @@ /// Common status code for public API. -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, PartialEq)] pub enum StatusCode { // ====== Begin of common status code ============== /// Unknown error.