• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[cfg(all(feature = "bundled", not(feature = "loadable_extension")))]
2 #[test]
auto_ext() -> rusqlite::Result<()>3 fn auto_ext() -> rusqlite::Result<()> {
4     use rusqlite::auto_extension::*;
5     use rusqlite::{ffi, Connection, Error, Result};
6     use std::os::raw::{c_char, c_int};
7 
8     fn test_ok(_: Connection) -> Result<()> {
9         Ok(())
10     }
11     unsafe extern "C" fn sqlite_test_ok(
12         db: *mut ffi::sqlite3,
13         pz_err_msg: *mut *mut c_char,
14         _: *const ffi::sqlite3_api_routines,
15     ) -> c_int {
16         init_auto_extension(db, pz_err_msg, test_ok)
17     }
18     fn test_err(_: Connection) -> Result<()> {
19         Err(Error::SqliteFailure(
20             ffi::Error::new(ffi::SQLITE_CORRUPT),
21             Some("AutoExtErr".to_owned()),
22         ))
23     }
24     unsafe extern "C" fn sqlite_test_err(
25         db: *mut ffi::sqlite3,
26         pz_err_msg: *mut *mut c_char,
27         _: *const ffi::sqlite3_api_routines,
28     ) -> c_int {
29         init_auto_extension(db, pz_err_msg, test_err)
30     }
31 
32     //assert!(!cancel_auto_extension(sqlite_test_ok));
33     unsafe { register_auto_extension(sqlite_test_ok)? };
34     Connection::open_in_memory()?;
35     assert!(cancel_auto_extension(sqlite_test_ok));
36     assert!(!cancel_auto_extension(sqlite_test_ok));
37     unsafe { register_auto_extension(sqlite_test_err)? };
38     Connection::open_in_memory().unwrap_err();
39     reset_auto_extension();
40     Ok(())
41 }
42