blob: 5b85ac7717beb9690cfe1ec633e22e81c255192f [file] [log] [blame]
// These tests include field filters with no targets, so they have to go in a
// separate file.
mod support;
use self::support::*;
use tracing::{self, subscriber::with_default, Level};
use tracing_subscriber::{filter::EnvFilter, prelude::*};
#[test]
fn same_length_targets() {
let filter: EnvFilter = "foo=trace,bar=trace".parse().expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.event(event::mock().at_level(Level::TRACE))
.event(event::mock().at_level(Level::TRACE))
.done()
.run_with_handle();
let subscriber = subscriber.with(filter);
with_default(subscriber, || {
tracing::trace!(target: "foo", "foo");
tracing::trace!(target: "bar", "bar");
});
finished.assert_finished();
}
#[test]
fn same_num_fields_event() {
let filter: EnvFilter = "[{foo}]=trace,[{bar}]=trace"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.event(
event::mock()
.at_level(Level::TRACE)
.with_fields(field::mock("foo")),
)
.event(
event::mock()
.at_level(Level::TRACE)
.with_fields(field::mock("bar")),
)
.done()
.run_with_handle();
let subscriber = subscriber.with(filter);
with_default(subscriber, || {
tracing::trace!(foo = 1);
tracing::trace!(bar = 3);
});
finished.assert_finished();
}
#[test]
fn same_num_fields_and_name_len() {
let filter: EnvFilter = "[foo{bar=1}]=trace,[baz{boz=1}]=trace"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.new_span(
span::mock()
.named("foo")
.at_level(Level::TRACE)
.with_field(field::mock("bar")),
)
.new_span(
span::mock()
.named("baz")
.at_level(Level::TRACE)
.with_field(field::mock("boz")),
)
.done()
.run_with_handle();
let subscriber = subscriber.with(filter);
with_default(subscriber, || {
tracing::trace_span!("foo", bar = 1);
tracing::trace_span!("baz", boz = 1);
});
finished.assert_finished();
}