#[macro_use] extern crate must; extern crate log; use log::{LogLevelFilter, LogMetadata, LogRecord, SetLoggerError}; use must::prelude::*; struct SimpleLogger; impl log::Log for SimpleLogger { fn enabled(&self, _metadata: &LogMetadata) -> bool { true } fn log(&self, record: &LogRecord) { if self.enabled(record.metadata()) { println!("{} - {} - {}", record.level(), record.metadata().target(), record.args()); } } } fn init_log() -> Result<(), SetLoggerError> { log::set_logger(|max_log_level| { max_log_level.set(LogLevelFilter::Trace); Box::new(SimpleLogger) }) } #[test] #[should_panic(expected = "\"1\" must be 2")] fn test_on_drop() { let _ = init_log(); 1.must_eq(2); } #[test] #[should_panic(expected = "\"Some(5)\" must be Some(6)")] fn test_only_once_when_or_called() { let _ = init_log(); Some(5).must_eq(Some(6)).or(fail!()); }