max_level_hint.rs 1.4 KB

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