test: Add more test for opaque error

This commit is contained in:
evenyag
2022-05-07 15:45:46 +08:00
parent ec63353364
commit 56258d6821
2 changed files with 19 additions and 3 deletions

View File

@@ -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());
}
}

View File

@@ -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.