]>
Commit | Line | Data |
---|---|---|
f035d41b XL |
1 | use std::fmt; |
2 | use tracing::Metadata; | |
3 | ||
4 | #[derive(Clone, Debug, Eq, PartialEq, Default)] | |
5 | pub struct Expect { | |
6 | pub name: Option<String>, | |
7 | pub level: Option<tracing::Level>, | |
8 | pub target: Option<String>, | |
9 | } | |
10 | ||
11 | impl Expect { | |
c295e0f8 XL |
12 | pub(in crate::support) fn check( |
13 | &self, | |
14 | actual: &Metadata<'_>, | |
15 | ctx: fmt::Arguments<'_>, | |
16 | subscriber_name: &str, | |
17 | ) { | |
f035d41b XL |
18 | if let Some(ref expected_name) = self.name { |
19 | let name = actual.name(); | |
20 | assert!( | |
21 | expected_name == name, | |
c295e0f8 XL |
22 | "\n[{}] expected {} to be named `{}`, but got one named `{}`", |
23 | subscriber_name, | |
f035d41b XL |
24 | ctx, |
25 | expected_name, | |
26 | name | |
27 | ) | |
28 | } | |
29 | ||
30 | if let Some(ref expected_level) = self.level { | |
31 | let level = actual.level(); | |
32 | assert!( | |
33 | expected_level == level, | |
c295e0f8 XL |
34 | "\n[{}] expected {} to be at level `{:?}`, but it was at level `{:?}` instead", |
35 | subscriber_name, | |
f035d41b XL |
36 | ctx, |
37 | expected_level, | |
38 | level, | |
39 | ) | |
40 | } | |
41 | ||
42 | if let Some(ref expected_target) = self.target { | |
43 | let target = actual.target(); | |
44 | assert!( | |
45 | expected_target == target, | |
c295e0f8 XL |
46 | "\n[{}] expected {} to have target `{}`, but it had target `{}` instead", |
47 | subscriber_name, | |
f035d41b XL |
48 | ctx, |
49 | expected_target, | |
50 | target, | |
51 | ) | |
52 | } | |
53 | } | |
54 | } | |
55 | ||
56 | impl fmt::Display for Expect { | |
57 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | |
58 | if let Some(ref name) = self.name { | |
59 | write!(f, " named `{}`", name)?; | |
60 | } | |
61 | ||
62 | if let Some(ref level) = self.level { | |
63 | write!(f, " at the `{:?}` level", level)?; | |
64 | } | |
65 | ||
66 | if let Some(ref target) = self.target { | |
67 | write!(f, " with target `{}`", target)?; | |
68 | } | |
69 | ||
70 | Ok(()) | |
71 | } | |
72 | } |