mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-17 16:31:32 +00:00
65 lines
1.7 KiB
Rust
65 lines
1.7 KiB
Rust
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<'_>) {
|
|
if let Some(ref expected_name) = self.name {
|
|
let name = actual.name();
|
|
assert!(
|
|
expected_name == name,
|
|
"expected {} to be named `{}`, but got one named `{}`",
|
|
ctx,
|
|
expected_name,
|
|
name
|
|
)
|
|
}
|
|
|
|
if let Some(ref expected_level) = self.level {
|
|
let level = actual.level();
|
|
assert!(
|
|
expected_level == level,
|
|
"expected {} to be at level `{:?}`, but it was at level `{:?}` instead",
|
|
ctx,
|
|
expected_level,
|
|
level,
|
|
)
|
|
}
|
|
|
|
if let Some(ref expected_target) = self.target {
|
|
let target = actual.target();
|
|
assert!(
|
|
expected_target == target,
|
|
"expected {} to have target `{}`, but it had target `{}` instead",
|
|
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(())
|
|
}
|
|
}
|