mirror of
https://github.com/launchbadge/sqlx.git
synced 2025-10-05 08:45:14 +00:00
add unit tests for DatabaseError
downcasting
This commit is contained in:
parent
673f133cab
commit
6e3fa49ad5
@ -43,3 +43,22 @@ impl From<MySqlError> for crate::Error {
|
|||||||
crate::Error::Database(Box::new(err))
|
crate::Error::Database(Box::new(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_error_downcasting() {
|
||||||
|
let error = MySqlError(ErrPacket {
|
||||||
|
error_code: 0xABCD,
|
||||||
|
sql_state: None,
|
||||||
|
error_message: "".into()
|
||||||
|
});
|
||||||
|
|
||||||
|
let error = crate::Error::from(error);
|
||||||
|
|
||||||
|
let db_err = match error {
|
||||||
|
crate::Error::Database(db_err) => db_err,
|
||||||
|
e => panic!("expected crate::Error::Database, got {:?}", e)
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(db_err.downcast_ref::<MySqlError>().0.error_code, 0xABCD);
|
||||||
|
assert_eq!(db_err.downcast::<MySqlError>().0.error_code, 0xABCD);
|
||||||
|
}
|
@ -63,3 +63,38 @@ impl From<PgError> for crate::Error {
|
|||||||
crate::Error::Database(Box::new(err))
|
crate::Error::Database(Box::new(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_error_downcasting() {
|
||||||
|
use super::protocol::Severity;
|
||||||
|
|
||||||
|
let error = PgError(Response {
|
||||||
|
severity: Severity::Panic,
|
||||||
|
code: "".into(),
|
||||||
|
message: "".into(),
|
||||||
|
detail: None,
|
||||||
|
hint: None,
|
||||||
|
position: None,
|
||||||
|
internal_position: None,
|
||||||
|
internal_query: None,
|
||||||
|
where_: None,
|
||||||
|
schema: None,
|
||||||
|
table: None,
|
||||||
|
column: None,
|
||||||
|
data_type: None,
|
||||||
|
constraint: None,
|
||||||
|
file: None,
|
||||||
|
line: None,
|
||||||
|
routine: None
|
||||||
|
});
|
||||||
|
|
||||||
|
let error = crate::Error::from(error);
|
||||||
|
|
||||||
|
let db_err = match error {
|
||||||
|
crate::Error::Database(db_err) => db_err,
|
||||||
|
e => panic!("expected Error::Database, got {:?}", e)
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(db_err.downcast_ref::<PgError>().0.severity, Severity::Panic);
|
||||||
|
assert_eq!(db_err.downcast::<PgError>().0.severity, Severity::Panic);
|
||||||
|
}
|
@ -60,7 +60,7 @@ pub(crate) use message::Message;
|
|||||||
pub(crate) use notification_response::NotificationResponse;
|
pub(crate) use notification_response::NotificationResponse;
|
||||||
pub(crate) use parameter_description::ParameterDescription;
|
pub(crate) use parameter_description::ParameterDescription;
|
||||||
pub(crate) use ready_for_query::ReadyForQuery;
|
pub(crate) use ready_for_query::ReadyForQuery;
|
||||||
pub(crate) use response::Response;
|
pub(crate) use response::{Response, Severity};
|
||||||
pub(crate) use row_description::{Field, RowDescription};
|
pub(crate) use row_description::{Field, RowDescription};
|
||||||
|
|
||||||
pub(crate) trait Write {
|
pub(crate) trait Write {
|
||||||
|
@ -3,7 +3,7 @@ use std::str::{self, FromStr};
|
|||||||
|
|
||||||
use crate::postgres::database::Postgres;
|
use crate::postgres::database::Postgres;
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
pub(crate) enum Severity {
|
pub(crate) enum Severity {
|
||||||
Panic,
|
Panic,
|
||||||
Fatal,
|
Fatal,
|
||||||
|
@ -71,3 +71,21 @@ impl From<SqliteError> for crate::Error {
|
|||||||
crate::Error::Database(Box::new(err))
|
crate::Error::Database(Box::new(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_error_downcasting() {
|
||||||
|
let error = SqliteError {
|
||||||
|
code: "SQLITE_ERR_SOMETHING".into(),
|
||||||
|
message: "Some hypothetical error message".into()
|
||||||
|
};
|
||||||
|
|
||||||
|
let error = crate::Error::from(error);
|
||||||
|
|
||||||
|
let db_err = match error {
|
||||||
|
crate::Error::Database(db_err) => db_err,
|
||||||
|
e => panic!("expected Error::Database, got {:?}", e)
|
||||||
|
};
|
||||||
|
|
||||||
|
assert_eq!(&db_err.downcast_ref::<SqliteError>().code, "SQLITE_ERR_SOMETHING");
|
||||||
|
assert_eq!(db_err.downcast::<SqliteError>().code, "SQLITE_ERR_SOMETHING");
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user