summaryrefslogtreecommitdiffstats
path: root/third_party/rust/tracing/tests/max_level_hint.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/tracing/tests/max_level_hint.rs')
-rw-r--r--third_party/rust/tracing/tests/max_level_hint.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/third_party/rust/tracing/tests/max_level_hint.rs b/third_party/rust/tracing/tests/max_level_hint.rs
new file mode 100644
index 0000000000..63d3af6357
--- /dev/null
+++ b/third_party/rust/tracing/tests/max_level_hint.rs
@@ -0,0 +1,37 @@
+use tracing::Level;
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn max_level_hints() {
+ // This test asserts that when a subscriber provides us with the global
+ // maximum level that it will enable (by implementing the
+ // `Subscriber::max_level_hint` method), we will never call
+ // `Subscriber::enabled` for events above that maximum level.
+ //
+ // In this case, we test that by making the `enabled` method assert that no
+ // `Metadata` for spans or events at the `TRACE` or `DEBUG` levels.
+ let (subscriber, handle) = subscriber::mock()
+ .with_max_level_hint(Level::INFO)
+ .with_filter(|meta| {
+ assert!(
+ dbg!(meta).level() <= &Level::INFO,
+ "a TRACE or DEBUG event was dynamically filtered: "
+ );
+ true
+ })
+ .event(event::mock().at_level(Level::INFO))
+ .event(event::mock().at_level(Level::WARN))
+ .event(event::mock().at_level(Level::ERROR))
+ .done()
+ .run_with_handle();
+
+ tracing::subscriber::set_global_default(subscriber).unwrap();
+
+ tracing::info!("doing a thing that you might care about");
+ tracing::debug!("charging turboencabulator with interocitor");
+ tracing::warn!("extremely serious warning, pay attention");
+ tracing::trace!("interocitor charge level is 10%");
+ tracing::error!("everything is on fire");
+ handle.assert_finished();
+}