blob: d10395da46313b491363a1be7b5103c51b9a6fc9 [file] [log] [blame]
use std::fmt;
use tracing::Metadata;
#[derive(Clone, Debug, Eq, PartialEq, Default)]
pub struct Expect {
pub name: Option<String>,
pub level: Option<tracing::Level>,
pub target: Option<String>,
}
impl Expect {
pub(in crate::support) fn check(
&self,
actual: &Metadata<'_>,
ctx: fmt::Arguments<'_>,
subscriber_name: &str,
) {
if let Some(ref expected_name) = self.name {
let name = actual.name();
assert!(
expected_name == name,
"\n[{}] expected {} to be named `{}`, but got one named `{}`",
subscriber_name,
ctx,
expected_name,
name
)
}
if let Some(ref expected_level) = self.level {
let level = actual.level();
assert!(
expected_level == level,
"\n[{}] expected {} to be at level `{:?}`, but it was at level `{:?}` instead",
subscriber_name,
ctx,
expected_level,
level,
)
}
if let Some(ref expected_target) = self.target {
let target = actual.target();
assert!(
expected_target == target,
"\n[{}] expected {} to have target `{}`, but it had target `{}` instead",
subscriber_name,
ctx,
expected_target,
target,
)
}
}
}
impl fmt::Display for Expect {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if let Some(ref name) = self.name {
write!(f, " named `{}`", name)?;
}
if let Some(ref level) = self.level {
write!(f, " at the `{:?}` level", level)?;
}
if let Some(ref target) = self.target {
write!(f, " with target `{}`", target)?;
}
Ok(())
}
}