summaryrefslogtreecommitdiffstats
path: root/vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs')
-rw-r--r--vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs123
1 files changed, 123 insertions, 0 deletions
diff --git a/vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs b/vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs
new file mode 100644
index 000000000..00e98a994
--- /dev/null
+++ b/vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs
@@ -0,0 +1,123 @@
+#![cfg(feature = "registry")]
+mod support;
+use self::support::*;
+use tracing::Level;
+use tracing_subscriber::{filter::LevelFilter, prelude::*};
+
+#[test]
+fn layer_filters() {
+ let (unfiltered, unfiltered_handle) = unfiltered("unfiltered");
+ let (filtered, filtered_handle) = filtered("filtered");
+
+ let _subscriber = tracing_subscriber::registry()
+ .with(unfiltered)
+ .with(filtered.with_filter(filter()))
+ .set_default();
+
+ events();
+
+ unfiltered_handle.assert_finished();
+ filtered_handle.assert_finished();
+}
+
+#[test]
+fn layered_layer_filters() {
+ let (unfiltered1, unfiltered1_handle) = unfiltered("unfiltered_1");
+ let (unfiltered2, unfiltered2_handle) = unfiltered("unfiltered_2");
+ let unfiltered = unfiltered1.and_then(unfiltered2);
+
+ let (filtered1, filtered1_handle) = filtered("filtered_1");
+ let (filtered2, filtered2_handle) = filtered("filtered_2");
+ let filtered = filtered1
+ .with_filter(filter())
+ .and_then(filtered2.with_filter(filter()));
+
+ let _subscriber = tracing_subscriber::registry()
+ .with(unfiltered)
+ .with(filtered)
+ .set_default();
+
+ events();
+
+ unfiltered1_handle.assert_finished();
+ unfiltered2_handle.assert_finished();
+ filtered1_handle.assert_finished();
+ filtered2_handle.assert_finished();
+}
+
+#[test]
+fn out_of_order() {
+ let (unfiltered1, unfiltered1_handle) = unfiltered("unfiltered_1");
+ let (unfiltered2, unfiltered2_handle) = unfiltered("unfiltered_2");
+
+ let (filtered1, filtered1_handle) = filtered("filtered_1");
+ let (filtered2, filtered2_handle) = filtered("filtered_2");
+
+ let _subscriber = tracing_subscriber::registry()
+ .with(unfiltered1)
+ .with(filtered1.with_filter(filter()))
+ .with(unfiltered2)
+ .with(filtered2.with_filter(filter()))
+ .set_default();
+ events();
+
+ unfiltered1_handle.assert_finished();
+ unfiltered2_handle.assert_finished();
+ filtered1_handle.assert_finished();
+ filtered2_handle.assert_finished();
+}
+
+#[test]
+fn mixed_layered() {
+ let (unfiltered1, unfiltered1_handle) = unfiltered("unfiltered_1");
+ let (unfiltered2, unfiltered2_handle) = unfiltered("unfiltered_2");
+ let (filtered1, filtered1_handle) = filtered("filtered_1");
+ let (filtered2, filtered2_handle) = filtered("filtered_2");
+
+ let layered1 = filtered1.with_filter(filter()).and_then(unfiltered1);
+ let layered2 = unfiltered2.and_then(filtered2.with_filter(filter()));
+
+ let _subscriber = tracing_subscriber::registry()
+ .with(layered1)
+ .with(layered2)
+ .set_default();
+
+ events();
+
+ unfiltered1_handle.assert_finished();
+ unfiltered2_handle.assert_finished();
+ filtered1_handle.assert_finished();
+ filtered2_handle.assert_finished();
+}
+
+fn events() {
+ tracing::trace!("hello trace");
+ tracing::debug!("hello debug");
+ tracing::info!("hello info");
+ tracing::warn!("hello warn");
+ tracing::error!("hello error");
+}
+
+fn filter() -> LevelFilter {
+ LevelFilter::INFO
+}
+
+fn unfiltered(name: &str) -> (ExpectLayer, subscriber::MockHandle) {
+ layer::named(name)
+ .event(event::mock().at_level(Level::TRACE))
+ .event(event::mock().at_level(Level::DEBUG))
+ .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()
+}
+
+fn filtered(name: &str) -> (ExpectLayer, subscriber::MockHandle) {
+ layer::named(name)
+ .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()
+}