1 | #![cfg (all(feature = "env-filter" , feature = "tracing-log" ))] |
2 | |
3 | use tracing::{self, Level}; |
4 | use tracing_mock::*; |
5 | use tracing_subscriber::{filter::EnvFilter, prelude::*}; |
6 | |
7 | mod my_module { |
8 | pub(crate) fn test_records() { |
9 | log::trace!("this should be disabled" ); |
10 | log::info!("this shouldn't be" ); |
11 | log::debug!("this should be disabled" ); |
12 | log::warn!("this should be enabled" ); |
13 | log::warn!(target: "something else" , "this shouldn't be enabled" ); |
14 | log::error!("this should be enabled too" ); |
15 | } |
16 | |
17 | pub(crate) fn test_log_enabled() { |
18 | assert!( |
19 | log::log_enabled!(log::Level::Info), |
20 | "info should be enabled inside `my_module`" |
21 | ); |
22 | assert!( |
23 | !log::log_enabled!(log::Level::Debug), |
24 | "debug should not be enabled inside `my_module`" |
25 | ); |
26 | assert!( |
27 | log::log_enabled!(log::Level::Warn), |
28 | "warn should be enabled inside `my_module`" |
29 | ); |
30 | } |
31 | } |
32 | |
33 | #[test] |
34 | fn log_is_enabled() { |
35 | let filter: EnvFilter = "filter_log::my_module=info" |
36 | .parse() |
37 | .expect("filter should parse" ); |
38 | let (subscriber, finished) = subscriber::mock() |
39 | .event(expect::event().at_level(Level::INFO)) |
40 | .event(expect::event().at_level(Level::WARN)) |
41 | .event(expect::event().at_level(Level::ERROR)) |
42 | .only() |
43 | .run_with_handle(); |
44 | |
45 | // Note: we have to set the global default in order to set the `log` max |
46 | // level, which can only be set once. |
47 | subscriber.with(filter).init(); |
48 | |
49 | my_module::test_records(); |
50 | log::info!("this is disabled" ); |
51 | |
52 | my_module::test_log_enabled(); |
53 | assert!( |
54 | !log::log_enabled!(log::Level::Info), |
55 | "info should not be enabled outside `my_module`" |
56 | ); |
57 | assert!( |
58 | !log::log_enabled!(log::Level::Warn), |
59 | "warn should not be enabled outside `my_module`" |
60 | ); |
61 | |
62 | finished.assert_finished(); |
63 | } |
64 | |