From 4b32768d1380605d37f914db0a76b85d530581df Mon Sep 17 00:00:00 2001 From: myyrakle Date: Wed, 24 Jul 2024 02:35:39 +0900 Subject: [PATCH] =?UTF-8?q?[#132]=20Error=20mod.rs=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/errors/mod.rs | 28 ++++++++++++++++++++++++++++ src/errors/server_error.rs | 11 +++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/errors/mod.rs b/src/errors/mod.rs index 5b77bb7..c0f3d55 100644 --- a/src/errors/mod.rs +++ b/src/errors/mod.rs @@ -28,3 +28,31 @@ impl ToString for RRDBError { } } } + +#[cfg(test)] +mod tests { + use predule::{ExecuteError, IntoError, LexingError, ParsingError, ServerError, TypeError}; + + use super::*; + + #[test] + fn test_rrdb_error_to_string() { + let error = ExecuteError::wrap("test"); + assert!(error.to_string().contains("test")); + + let error = IntoError::wrap("test"); + assert!(error.to_string().contains("test")); + + let error = LexingError::wrap("test"); + assert!(error.to_string().contains("test")); + + let error = ParsingError::wrap("test"); + assert!(error.to_string().contains("test")); + + let error = ServerError::wrap("test"); + assert!(error.to_string().contains("test")); + + let error = TypeError::wrap("test"); + assert!(error.to_string().contains("test")); + } +} diff --git a/src/errors/server_error.rs b/src/errors/server_error.rs index c5f93c5..71345a7 100644 --- a/src/errors/server_error.rs +++ b/src/errors/server_error.rs @@ -1,3 +1,5 @@ +use super::RRDBError; + #[derive(Debug)] pub struct ServerError { pub message: String, @@ -23,6 +25,15 @@ impl ServerError { } } +impl ServerError { + pub fn wrap(message: T) -> RRDBError { + RRDBError::ServerError(Self { + message: message.to_string(), + backtrace: std::backtrace::Backtrace::capture(), + }) + } +} + impl std::error::Error for ServerError {} impl std::fmt::Display for ServerError {