//! This file contains unit tests for `rusqlite::trace::config_log`. This //! function affects SQLite process-wide and so is not safe to run as a normal //! #[test] in the library. #[cfg(all( feature = "trace", not(any( feature = "loadable_extension", feature = "loadable_extension_embedded" )) ))] fn main() { use lazy_static::lazy_static; use std::os::raw::c_int; use std::sync::Mutex; lazy_static! { static ref LOGS_RECEIVED: Mutex> = Mutex::new(Vec::new()); } fn log_handler(err: c_int, message: &str) { let mut logs_received = LOGS_RECEIVED.lock().unwrap(); logs_received.push((err, message.to_owned())); } use rusqlite::trace; unsafe { trace::config_log(Some(log_handler)) }.unwrap(); trace::log(10, "First message from rusqlite"); unsafe { trace::config_log(None) }.unwrap(); trace::log(11, "Second message from rusqlite"); let logs_received = LOGS_RECEIVED.lock().unwrap(); assert_eq!(logs_received.len(), 1); assert_eq!(logs_received[0].0, 10); assert_eq!(logs_received[0].1, "First message from rusqlite"); } #[cfg(any( not(feature = "trace"), feature = "loadable_extension", feature = "loadable_extension_embedded" ))] fn main() {}