• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {
check(&self, actual: &Metadata<'_>, ctx: fmt::Arguments<'_>, subscriber_name: &str)12     pub fn check(&self, actual: &Metadata<'_>, ctx: fmt::Arguments<'_>, subscriber_name: &str) {
13         if let Some(ref expected_name) = self.name {
14             let name = actual.name();
15             assert!(
16                 expected_name == name,
17                 "\n[{}] expected {} to be named `{}`, but got one named `{}`",
18                 subscriber_name,
19                 ctx,
20                 expected_name,
21                 name
22             )
23         }
24 
25         if let Some(ref expected_level) = self.level {
26             let level = actual.level();
27             assert!(
28                 expected_level == level,
29                 "\n[{}] expected {} to be at level `{:?}`, but it was at level `{:?}` instead",
30                 subscriber_name,
31                 ctx,
32                 expected_level,
33                 level,
34             )
35         }
36 
37         if let Some(ref expected_target) = self.target {
38             let target = actual.target();
39             assert!(
40                 expected_target == target,
41                 "\n[{}] expected {} to have target `{}`, but it had target `{}` instead",
42                 subscriber_name,
43                 ctx,
44                 expected_target,
45                 target,
46             )
47         }
48     }
49 }
50 
51 impl fmt::Display for Expect {
fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result52     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
53         if let Some(ref name) = self.name {
54             write!(f, " named `{}`", name)?;
55         }
56 
57         if let Some(ref level) = self.level {
58             write!(f, " at the `{:?}` level", level)?;
59         }
60 
61         if let Some(ref target) = self.target {
62             write!(f, " with target `{}`", target)?;
63         }
64 
65         Ok(())
66     }
67 }
68