1 use tracing::subscriber::with_default;
2 use tracing_attributes::instrument;
3 use tracing_mock::*;
4 
5 #[instrument]
default_target()6 fn default_target() {}
7 
8 #[instrument(target = "my_target")]
custom_target()9 fn custom_target() {}
10 
11 mod my_mod {
12     use tracing_attributes::instrument;
13 
14     pub const MODULE_PATH: &str = module_path!();
15 
16     #[instrument]
default_target()17     pub fn default_target() {}
18 
19     #[instrument(target = "my_other_target")]
custom_target()20     pub fn custom_target() {}
21 }
22 
23 #[test]
default_targets()24 fn default_targets() {
25     let (subscriber, handle) = subscriber::mock()
26         .new_span(
27             expect::span()
28                 .named("default_target")
29                 .with_target(module_path!()),
30         )
31         .enter(
32             expect::span()
33                 .named("default_target")
34                 .with_target(module_path!()),
35         )
36         .exit(
37             expect::span()
38                 .named("default_target")
39                 .with_target(module_path!()),
40         )
41         .new_span(
42             expect::span()
43                 .named("default_target")
44                 .with_target(my_mod::MODULE_PATH),
45         )
46         .enter(
47             expect::span()
48                 .named("default_target")
49                 .with_target(my_mod::MODULE_PATH),
50         )
51         .exit(
52             expect::span()
53                 .named("default_target")
54                 .with_target(my_mod::MODULE_PATH),
55         )
56         .only()
57         .run_with_handle();
58 
59     with_default(subscriber, || {
60         default_target();
61         my_mod::default_target();
62     });
63 
64     handle.assert_finished();
65 }
66 
67 #[test]
custom_targets()68 fn custom_targets() {
69     let (subscriber, handle) = subscriber::mock()
70         .new_span(
71             expect::span()
72                 .named("custom_target")
73                 .with_target("my_target"),
74         )
75         .enter(
76             expect::span()
77                 .named("custom_target")
78                 .with_target("my_target"),
79         )
80         .exit(
81             expect::span()
82                 .named("custom_target")
83                 .with_target("my_target"),
84         )
85         .new_span(
86             expect::span()
87                 .named("custom_target")
88                 .with_target("my_other_target"),
89         )
90         .enter(
91             expect::span()
92                 .named("custom_target")
93                 .with_target("my_other_target"),
94         )
95         .exit(
96             expect::span()
97                 .named("custom_target")
98                 .with_target("my_other_target"),
99         )
100         .only()
101         .run_with_handle();
102 
103     with_default(subscriber, || {
104         custom_target();
105         my_mod::custom_target();
106     });
107 
108     handle.assert_finished();
109 }
110