Return error message from SQLite

This commit is contained in:
Ivan Ukhov 2015-05-29 14:33:39 -04:00
parent 4baf4517f8
commit ef550d6d75
2 changed files with 26 additions and 1 deletions

View File

@ -8,10 +8,24 @@ macro_rules! raise(
);
macro_rules! success(
($result:expr, $database:expr) => (
match $result {
::raw::SQLITE_OK => {},
code => match ::Error::last($database) {
Some(error) => return Err(error),
None => return Err(::Error::from(::result::code_from_raw(code))),
},
}
);
($result:expr) => (
match $result {
::raw::SQLITE_OK => {},
code => return Err(::Error::from(::result::code_from_raw(code))),
code => return Err(::Error {
code: ::result::code_from_raw(code),
message: Some(c_str_to_string!(unsafe {
::raw::sqlite3_errstr(code)
})),
}),
}
);
);

View File

@ -55,6 +55,17 @@ fn workflow() {
}
}
#[test]
fn failure() {
let (path, _directory) = setup();
let mut database = ok!(sqlite::open(&path));
match database.execute(":)", None) {
Err(error) => assert_eq!(error.message,
Some(String::from("SQL logic error or missing database"))),
_ => assert!(false),
}
}
fn setup() -> (PathBuf, Directory) {
let directory = ok!(Directory::new("sqlite"));
(directory.path().join("database.sqlite3"), directory)