(dig,hpk) add test and fix for wrong dbs

This commit is contained in:
holger krekel
2019-07-18 11:16:38 +02:00
parent c7db15352a
commit 7b736fe635
3 changed files with 19 additions and 12 deletions

View File

@@ -558,12 +558,7 @@ impl Imap {
Some(ref mut session) => {
if let Ok(caps) = session.capabilities() {
if !context.sql.is_open() {
warn!(
context,
0,
"IMAP-LOGIN as {} ok but ABORTING",
lp.mail_user,
);
warn!(context, 0, "IMAP-LOGIN as {} ok but ABORTING", lp.mail_user,);
teardown = true;
} else {
let can_idle = caps.has("IDLE");

View File

@@ -141,7 +141,7 @@ impl Sql {
}
pub fn table_exists(&self, name: impl AsRef<str>) -> bool {
self.with_conn(|conn| Ok(table_exists(conn, name)))
self.with_conn(|conn| table_exists(conn, name))
.unwrap_or_default()
}
@@ -261,16 +261,14 @@ impl Sql {
}
}
fn table_exists(conn: &Connection, name: impl AsRef<str>) -> bool {
fn table_exists(conn: &Connection, name: impl AsRef<str>) -> Result<bool> {
let mut exists = false;
conn.pragma(None, "table_info", &format!("{}", name.as_ref()), |_row| {
// will only be executed if the info was found
exists = true;
Ok(())
})
.expect("bad sqlite state");
exists
})?;
Ok(exists)
}
fn open(

View File

@@ -998,6 +998,20 @@ fn test_chat() {
}
}
#[test]
fn test_wrong_db() {
unsafe {
let mut ctx = dc_context_new(Some(cb), std::ptr::null_mut(), std::ptr::null_mut());
let dir = tempdir().unwrap();
let dbfile = dir.path().join("db.sqlite");
std::fs::write(&dbfile, b"123").unwrap();
let dbfile_c = CString::new(dbfile.to_str().unwrap()).unwrap();
let res = dc_open(&mut ctx, dbfile_c.as_ptr(), std::ptr::null());
assert_eq!(res, 0);
}
}
#[test]
fn test_arr_to_string() {
let arr2: [uint32_t; 4] = [