| //! 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(feature = "trace")] |
| fn main() { |
| use lazy_static::lazy_static; |
| use std::os::raw::c_int; |
| use std::sync::Mutex; |
| |
| lazy_static! { |
| static ref LOGS_RECEIVED: Mutex<Vec<(c_int, String)>> = 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(not(feature = "trace"))] |
| fn main() {} |