• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {
test_records()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 
test_log_enabled()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]
log_is_enabled()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