test_logger/
lib.rs

1extern crate env_logger;
2
3use std::sync::{Once, ONCE_INIT};
4
5static LOGGER_INIT: Once = ONCE_INIT;
6
7#[macro_export]
8macro_rules! test {
9    (should_panic, $name:ident, $test:block) => {
10        test!(#[should_panic], $name, $test);
11    };
12    ($(#[$attr:meta])*, $name:ident, $test:block) => {
13        #[test]
14        $( #[$attr] )*
15        fn $name() {
16            test_logger::ensure_env_logger_initialized();
17            $test
18        }
19    };
20    ($name:ident, $test:block) => {
21        test!(, $name, $test);
22    };
23}
24
25pub fn ensure_env_logger_initialized() {
26    LOGGER_INIT.call_once(|| env_logger::init().unwrap());
27}
28
29
30