blob: c46b91f18f36aaadf4fc67ff72feb0a56893e28d [file] [log] [blame]
#![cfg(feature = "std")]
use tracing_mock::*;
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn spans_dont_leak() {
fn do_span() {
let span = tracing::debug_span!("alice");
let _e = span.enter();
}
let (subscriber, handle) = subscriber::mock()
.named("spans/subscriber1")
.with_filter(|_| false)
.only()
.run_with_handle();
let _guard = tracing::subscriber::set_default(subscriber);
do_span();
let alice = expect::span().named("alice");
let (subscriber2, handle2) = subscriber::mock()
.named("spans/subscriber2")
.with_filter(|_| true)
.new_span(alice.clone())
.enter(alice.clone())
.exit(alice.clone())
.drop_span(alice)
.only()
.run_with_handle();
tracing::subscriber::with_default(subscriber2, || {
println!("--- subscriber 2 is default ---");
do_span()
});
println!("--- subscriber 1 is default ---");
do_span();
handle.assert_finished();
handle2.assert_finished();
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn events_dont_leak() {
fn do_event() {
tracing::debug!("alice");
}
let (subscriber, handle) = subscriber::mock()
.named("events/subscriber1")
.with_filter(|_| false)
.only()
.run_with_handle();
let _guard = tracing::subscriber::set_default(subscriber);
do_event();
let (subscriber2, handle2) = subscriber::mock()
.named("events/subscriber2")
.with_filter(|_| true)
.event(expect::event())
.only()
.run_with_handle();
tracing::subscriber::with_default(subscriber2, || {
println!("--- subscriber 2 is default ---");
do_event()
});
println!("--- subscriber 1 is default ---");
do_event();
handle.assert_finished();
handle2.assert_finished();
}