| 1 | use tracing::Level; |
| 2 | use tracing_mock::*; |
| 3 | |
| 4 | #[cfg_attr (target_arch = "wasm32" , wasm_bindgen_test::wasm_bindgen_test)] |
| 5 | #[test] |
| 6 | fn max_level_hints() { |
| 7 | // This test asserts that when a subscriber provides us with the global |
| 8 | // maximum level that it will enable (by implementing the |
| 9 | // `Subscriber::max_level_hint` method), we will never call |
| 10 | // `Subscriber::enabled` for events above that maximum level. |
| 11 | // |
| 12 | // In this case, we test that by making the `enabled` method assert that no |
| 13 | // `Metadata` for spans or events at the `TRACE` or `DEBUG` levels. |
| 14 | let (subscriber, handle) = subscriber::mock() |
| 15 | .with_max_level_hint(Level::INFO) |
| 16 | .with_filter(|meta| { |
| 17 | assert!( |
| 18 | dbg!(meta).level() <= &Level::INFO, |
| 19 | "a TRACE or DEBUG event was dynamically filtered: " |
| 20 | ); |
| 21 | true |
| 22 | }) |
| 23 | .event(expect::event().at_level(Level::INFO)) |
| 24 | .event(expect::event().at_level(Level::WARN)) |
| 25 | .event(expect::event().at_level(Level::ERROR)) |
| 26 | .only() |
| 27 | .run_with_handle(); |
| 28 | |
| 29 | tracing::subscriber::set_global_default(subscriber).unwrap(); |
| 30 | |
| 31 | tracing::info!("doing a thing that you might care about" ); |
| 32 | tracing::debug!("charging turboencabulator with interocitor" ); |
| 33 | tracing::warn!("extremely serious warning, pay attention" ); |
| 34 | tracing::trace!("interocitor charge level is 10%" ); |
| 35 | tracing::error!("everything is on fire" ); |
| 36 | handle.assert_finished(); |
| 37 | } |
| 38 | |