1 #![deny(warnings)]
2 use tracing::Level;
3 
4 #[macro_use]
5 extern crate tracing;
6 // Tests that macros work across various invocation syntax.
7 //
8 // These are quite repetitive, and _could_ be generated by a macro. However,
9 // they're compile-time tests, so I want to get line numbers etc out of
10 // failures, and producing them with a macro would muddy the waters a bit.
11 
12 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
13 #[test]
14 fn span() {
15     span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = ?2, quux = %3, quuux = 4);
16     span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = 2, quux = 3);
17     span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
18     span!(target: "foo_events", Level::DEBUG, "foo");
19     span!(target: "foo_events", Level::DEBUG, "bar",);
20     span!(Level::DEBUG, "foo", bar.baz = 2, quux = 3);
21     span!(Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
22     span!(Level::DEBUG, "foo", bar.baz = 2, quux = 3);
23     span!(Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
24     span!(Level::DEBUG, "foo", bar.baz = ?2);
25     span!(Level::DEBUG, "foo", bar.baz = %2);
26     span!(Level::DEBUG, "foo");
27     span!(Level::DEBUG, "bar",);
28 }
29 
30 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
31 #[test]
32 fn trace_span() {
33     trace_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
34     trace_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
35     trace_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
36     trace_span!(target: "foo_events", "foo");
37     trace_span!(target: "foo_events", "bar",);
38     trace_span!("foo", bar.baz = 2, quux = 3);
39     trace_span!("foo", bar.baz = 2, quux = 4,);
40     trace_span!("foo", bar.baz = ?2);
41     trace_span!("foo", bar.baz = %2);
42     trace_span!("bar");
43     trace_span!("bar",);
44 }
45 
46 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
47 #[test]
48 fn debug_span() {
49     debug_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
50     debug_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
51     debug_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
52     debug_span!(target: "foo_events", "foo");
53     debug_span!(target: "foo_events", "bar",);
54     debug_span!("foo", bar.baz = 2, quux = 3);
55     debug_span!("foo", bar.baz = 2, quux = 4,);
56     debug_span!("foo", bar.baz = ?2);
57     debug_span!("foo", bar.baz = %2);
58     debug_span!("bar");
59     debug_span!("bar",);
60 }
61 
62 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
63 #[test]
64 fn info_span() {
65     info_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
66     info_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
67     info_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
68     info_span!(target: "foo_events", "foo");
69     info_span!(target: "foo_events", "bar",);
70     info_span!("foo", bar.baz = 2, quux = 3);
71     info_span!("foo", bar.baz = 2, quux = 4,);
72     info_span!("foo", bar.baz = ?2);
73     info_span!("foo", bar.baz = %2);
74     info_span!("bar");
75     info_span!("bar",);
76 }
77 
78 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
79 #[test]
80 fn warn_span() {
81     warn_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
82     warn_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
83     warn_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
84     warn_span!(target: "foo_events", "foo");
85     warn_span!(target: "foo_events", "bar",);
86     warn_span!("foo", bar.baz = 2, quux = 3);
87     warn_span!("foo", bar.baz = 2, quux = 4,);
88     warn_span!("foo", bar.baz = ?2);
89     warn_span!("foo", bar.baz = %2);
90     warn_span!("bar");
91     warn_span!("bar",);
92 }
93 
94 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
95 #[test]
96 fn error_span() {
97     error_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
98     error_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
99     error_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
100     error_span!(target: "foo_events", "foo");
101     error_span!(target: "foo_events", "bar",);
102     error_span!("foo", bar.baz = 2, quux = 3);
103     error_span!("foo", bar.baz = 2, quux = 4,);
104     error_span!("foo", bar.baz = ?2);
105     error_span!("foo", bar.baz = %2);
106     error_span!("bar");
107     error_span!("bar",);
108 }
109 
110 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
111 #[test]
112 fn span_root() {
113     span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
114     span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
115     span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
116     span!(target: "foo_events", parent: None, Level::TRACE, "foo");
117     span!(target: "foo_events", parent: None, Level::TRACE, "bar",);
118     span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 3);
119     span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
120     span!(parent: None, Level::DEBUG, "foo");
121     span!(parent: None, Level::DEBUG, "bar",);
122 }
123 
124 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
125 #[test]
126 fn trace_span_root() {
127     trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
128     trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
129     trace_span!(target: "foo_events", parent: None, "foo");
130     trace_span!(target: "foo_events", parent: None, "bar",);
131     trace_span!(parent: None, "foo", bar.baz = 2, quux = 3);
132     trace_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
133     trace_span!(parent: None, "foo");
134     trace_span!(parent: None, "bar",);
135 }
136 
137 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
138 #[test]
139 fn debug_span_root() {
140     debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
141     debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
142     debug_span!(target: "foo_events", parent: None, "foo");
143     debug_span!(target: "foo_events", parent: None, "bar",);
144     debug_span!(parent: None, "foo", bar.baz = 2, quux = 3);
145     debug_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
146     debug_span!(parent: None, "foo");
147     debug_span!(parent: None, "bar",);
148 }
149 
150 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
151 #[test]
152 fn info_span_root() {
153     info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
154     info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
155     info_span!(target: "foo_events", parent: None, "foo");
156     info_span!(target: "foo_events", parent: None, "bar",);
157     info_span!(parent: None, "foo", bar.baz = 2, quux = 3);
158     info_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
159     info_span!(parent: None, "foo");
160     info_span!(parent: None, "bar",);
161 }
162 
163 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
164 #[test]
165 fn warn_span_root() {
166     warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
167     warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
168     warn_span!(target: "foo_events", parent: None, "foo");
169     warn_span!(target: "foo_events", parent: None, "bar",);
170     warn_span!(parent: None, "foo", bar.baz = 2, quux = 3);
171     warn_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
172     warn_span!(parent: None, "foo");
173     warn_span!(parent: None, "bar",);
174 }
175 
176 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
177 #[test]
178 fn error_span_root() {
179     error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
180     error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
181     error_span!(target: "foo_events", parent: None, "foo");
182     error_span!(target: "foo_events", parent: None, "bar",);
183     error_span!(parent: None, "foo", bar.baz = 2, quux = 3);
184     error_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
185     error_span!(parent: None, "foo");
186     error_span!(parent: None, "bar",);
187 }
188 
189 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
190 #[test]
191 fn span_with_parent() {
192     let p = span!(Level::TRACE, "im_a_parent!");
193     span!(target: "foo_events", parent: &p, Level::TRACE, "foo", bar.baz = 2, quux = 3);
194     span!(target: "foo_events", parent: &p, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
195     span!(target: "foo_events", parent: &p, Level::TRACE, "foo");
196     span!(target: "foo_events", parent: &p, Level::TRACE, "bar",);
197     span!(parent: &p, Level::DEBUG, "foo", bar.baz = 2, quux = 3);
198     span!(parent: &p, Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
199     span!(parent: &p, Level::DEBUG, "foo");
200     span!(parent: &p, Level::DEBUG, "bar",);
201 }
202 
203 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
204 #[test]
205 fn trace_span_with_parent() {
206     let p = span!(Level::TRACE, "im_a_parent!");
207     trace_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
208     trace_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
209     trace_span!(target: "foo_events", parent: &p, "foo");
210     trace_span!(target: "foo_events", parent: &p, "bar",);
211 
212     trace_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
213     trace_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
214 
215     trace_span!(parent: &p, "foo");
216     trace_span!(parent: &p, "bar",);
217 }
218 
219 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
220 #[test]
221 fn debug_span_with_parent() {
222     let p = span!(Level::TRACE, "im_a_parent!");
223     debug_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
224     debug_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
225     debug_span!(target: "foo_events", parent: &p, "foo");
226     debug_span!(target: "foo_events", parent: &p, "bar",);
227 
228     debug_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
229     debug_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
230 
231     debug_span!(parent: &p, "foo");
232     debug_span!(parent: &p, "bar",);
233 }
234 
235 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
236 #[test]
237 fn info_span_with_parent() {
238     let p = span!(Level::TRACE, "im_a_parent!");
239     info_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
240     info_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
241     info_span!(target: "foo_events", parent: &p, "foo");
242     info_span!(target: "foo_events", parent: &p, "bar",);
243 
244     info_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
245     info_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
246 
247     info_span!(parent: &p, "foo");
248     info_span!(parent: &p, "bar",);
249 }
250 
251 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
252 #[test]
253 fn warn_span_with_parent() {
254     let p = span!(Level::TRACE, "im_a_parent!");
255     warn_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
256     warn_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
257     warn_span!(target: "foo_events", parent: &p, "foo");
258     warn_span!(target: "foo_events", parent: &p, "bar",);
259 
260     warn_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
261     warn_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
262 
263     warn_span!(parent: &p, "foo");
264     warn_span!(parent: &p, "bar",);
265 }
266 
267 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
268 #[test]
269 fn error_span_with_parent() {
270     let p = span!(Level::TRACE, "im_a_parent!");
271     error_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
272     error_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
273     error_span!(target: "foo_events", parent: &p, "foo");
274     error_span!(target: "foo_events", parent: &p, "bar",);
275 
276     error_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
277     error_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
278 
279     error_span!(parent: &p, "foo");
280     error_span!(parent: &p, "bar",);
281 }
282 
283 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
284 #[test]
285 fn span_with_non_rust_symbol() {
286     span!(Level::TRACE, "non-rust", "guid:x-request-id" = ?"abcdef", "more {}", 42);
287     span!(Level::TRACE, "non-rust", "guid:x-request-id" = %"abcdef", "more {}", 51);
288     span!(
289         Level::TRACE,
290         "non-rust",
291         "guid:x-request-id" = "abcdef",
292         "more {}",
293         60
294     );
295     span!(Level::TRACE, "non-rust", "guid:x-request-id" = ?"abcdef");
296     span!(Level::TRACE, "non-rust", "guid:x-request-id" = %"abcdef");
297     span!(Level::TRACE, "non-rust", "guid:x-request-id" = "abcdef");
298 }
299 
300 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
301 #[test]
302 fn event() {
303     event!(Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
304     event!(Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
305     event!(Level::DEBUG, foo = 3, bar.baz = 3,);
306     event!(Level::DEBUG, "foo");
307     event!(Level::DEBUG, "foo: {}", 3);
308     event!(Level::INFO, foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
309     event!(
310         Level::INFO,
311         foo = 3,
312         bar.baz = 2,
313         quux = false,
314         "hello world {:?}",
315         42
316     );
317     event!(Level::INFO, foo = 3, bar.baz = 3, "hello world {:?}", 42,);
318     event!(Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
319     event!(Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
320     event!(Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
321     event!(Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
322     event!(target: "foo_events", Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
323     event!(target: "foo_events", Level::DEBUG, foo = 3, bar.baz = 3,);
324     event!(target: "foo_events", Level::DEBUG, "foo");
325     event!(target: "foo_events", Level::DEBUG, "foo: {}", 3);
326     event!(target: "foo_events", Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
327     event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
328     event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
329     event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
330     let foo = 1;
331     event!(Level::DEBUG, ?foo);
332     event!(Level::DEBUG, %foo);
333     event!(Level::DEBUG, foo);
334 }
335 
336 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
337 #[test]
338 fn locals_with_message() {
339     let data = (42, "forty-two");
340     let private_data = "private";
341     let error = "a bad error";
342     event!(Level::ERROR, %error, "Received error");
343     event!(
344         target: "app_events",
345         Level::WARN,
346         private_data,
347         ?data,
348         "App warning: {}",
349         error
350     );
351 }
352 
353 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
354 #[test]
355 fn locals_no_message() {
356     let data = (42, "forty-two");
357     let private_data = "private";
358     let error = "a bad error";
359     event!(
360         target: "app_events",
361         Level::WARN,
362         private_data,
363         ?data,
364     );
365     event!(
366         target: "app_events",
367         Level::WARN,
368         private_data,
369         ?data,
370         error,
371     );
372     event!(
373         target: "app_events",
374         Level::WARN,
375         private_data,
376         ?data,
377         error
378     );
379     event!(Level::WARN, private_data, ?data, error,);
380 }
381 
382 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
383 #[test]
384 fn trace() {
385     trace!(foo = ?3, bar.baz = %2, quux = false);
386     trace!(foo = 3, bar.baz = 2, quux = false);
387     trace!(foo = 3, bar.baz = 3,);
388     trace!("foo");
389     trace!("foo: {}", 3);
390     trace!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
391     trace!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
392     trace!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
393     trace!({ foo = 3, bar.baz = 80 }, "quux");
394     trace!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
395     trace!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
396     trace!({ foo = 2, bar.baz = 78 }, "quux");
397     trace!({ foo = ?2, bar.baz = %78 }, "quux");
398     trace!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
399     trace!(target: "foo_events", foo = 3, bar.baz = 3,);
400     trace!(target: "foo_events", "foo");
401     trace!(target: "foo_events", "foo: {}", 3);
402     trace!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
403     trace!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
404     trace!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
405     trace!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
406     let foo = 1;
407     trace!(?foo);
408     trace!(%foo);
409     trace!(foo);
410     trace!(target: "foo_events", ?foo);
411     trace!(target: "foo_events", %foo);
412     trace!(target: "foo_events", foo);
413     trace!(target: "foo_events", ?foo, true, "message");
414     trace!(target: "foo_events", %foo, true, "message");
415     trace!(target: "foo_events", foo, true, "message");
416 }
417 
418 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
419 #[test]
420 fn debug() {
421     debug!(foo = ?3, bar.baz = %2, quux = false);
422     debug!(foo = 3, bar.baz = 2, quux = false);
423     debug!(foo = 3, bar.baz = 3,);
424     debug!("foo");
425     debug!("foo: {}", 3);
426     debug!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
427     debug!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
428     debug!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
429     debug!({ foo = 3, bar.baz = 80 }, "quux");
430     debug!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
431     debug!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
432     debug!({ foo = 2, bar.baz = 78 }, "quux");
433     debug!({ foo = ?2, bar.baz = %78 }, "quux");
434     debug!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
435     debug!(target: "foo_events", foo = 3, bar.baz = 3,);
436     debug!(target: "foo_events", "foo");
437     debug!(target: "foo_events", "foo: {}", 3);
438     debug!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
439     debug!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
440     debug!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
441     debug!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
442     let foo = 1;
443     debug!(?foo);
444     debug!(%foo);
445     debug!(foo);
446     debug!(target: "foo_events", ?foo);
447     debug!(target: "foo_events", %foo);
448     debug!(target: "foo_events", foo);
449     debug!(target: "foo_events", ?foo, true, "message");
450     debug!(target: "foo_events", %foo, true, "message");
451     debug!(target: "foo_events", foo, true, "message");
452 }
453 
454 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
455 #[test]
456 fn info() {
457     info!(foo = ?3, bar.baz = %2, quux = false);
458     info!(foo = 3, bar.baz = 2, quux = false);
459     info!(foo = 3, bar.baz = 3,);
460     info!("foo");
461     info!("foo: {}", 3);
462     info!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
463     info!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
464     info!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
465     info!({ foo = 3, bar.baz = 80 }, "quux");
466     info!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
467     info!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
468     info!({ foo = 2, bar.baz = 78 }, "quux");
469     info!({ foo = ?2, bar.baz = %78 }, "quux");
470     info!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
471     info!(target: "foo_events", foo = 3, bar.baz = 3,);
472     info!(target: "foo_events", "foo");
473     info!(target: "foo_events", "foo: {}", 3);
474     info!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
475     info!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
476     info!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
477     info!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
478     let foo = 1;
479     info!(?foo);
480     info!(%foo);
481     info!(foo);
482     info!(target: "foo_events", ?foo);
483     info!(target: "foo_events", %foo);
484     info!(target: "foo_events", foo);
485     info!(target: "foo_events", ?foo, true, "message");
486     info!(target: "foo_events", %foo, true, "message");
487     info!(target: "foo_events", foo, true, "message");
488 }
489 
490 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
491 #[test]
492 fn warn() {
493     warn!(foo = ?3, bar.baz = %2, quux = false);
494     warn!(foo = 3, bar.baz = 2, quux = false);
495     warn!(foo = 3, bar.baz = 3,);
496     warn!("foo");
497     warn!("foo: {}", 3);
498     warn!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
499     warn!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
500     warn!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
501     warn!({ foo = 3, bar.baz = 80 }, "quux");
502     warn!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
503     warn!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
504     warn!({ foo = 2, bar.baz = 78 }, "quux");
505     warn!({ foo = ?2, bar.baz = %78 }, "quux");
506     warn!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
507     warn!(target: "foo_events", foo = 3, bar.baz = 3,);
508     warn!(target: "foo_events", "foo");
509     warn!(target: "foo_events", "foo: {}", 3);
510     warn!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
511     warn!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
512     warn!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
513     warn!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
514     let foo = 1;
515     warn!(?foo);
516     warn!(%foo);
517     warn!(foo);
518     warn!(target: "foo_events", ?foo);
519     warn!(target: "foo_events", %foo);
520     warn!(target: "foo_events", foo);
521     warn!(target: "foo_events", ?foo, true, "message");
522     warn!(target: "foo_events", %foo, true, "message");
523     warn!(target: "foo_events", foo, true, "message");
524 }
525 
526 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
527 #[test]
528 fn error() {
529     error!(foo = ?3, bar.baz = %2, quux = false);
530     error!(foo = 3, bar.baz = 2, quux = false);
531     error!(foo = 3, bar.baz = 3,);
532     error!("foo");
533     error!("foo: {}", 3);
534     error!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
535     error!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
536     error!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
537     error!({ foo = 3, bar.baz = 80 }, "quux");
538     error!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
539     error!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
540     error!({ foo = 2, bar.baz = 78, }, "quux");
541     error!({ foo = ?2, bar.baz = %78 }, "quux");
542     error!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
543     error!(target: "foo_events", foo = 3, bar.baz = 3,);
544     error!(target: "foo_events", "foo");
545     error!(target: "foo_events", "foo: {}", 3);
546     error!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
547     error!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
548     error!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
549     error!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
550     let foo = 1;
551     error!(?foo);
552     error!(%foo);
553     error!(foo);
554     error!(target: "foo_events", ?foo);
555     error!(target: "foo_events", %foo);
556     error!(target: "foo_events", foo);
557     error!(target: "foo_events", ?foo, true, "message");
558     error!(target: "foo_events", %foo, true, "message");
559     error!(target: "foo_events", foo, true, "message");
560 }
561 
562 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
563 #[test]
564 fn event_root() {
565     event!(parent: None, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
566     event!(
567         parent: None,
568         Level::DEBUG,
569         foo = 3,
570         bar.baz = 2,
571         quux = false
572     );
573     event!(parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
574     event!(parent: None, Level::DEBUG, "foo");
575     event!(parent: None, Level::DEBUG, "foo: {}", 3);
576     event!(parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
577     event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
578     event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
579     event!(parent: None, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
580     event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
581     event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
582     event!(target: "foo_events", parent: None, Level::DEBUG, "foo");
583     event!(target: "foo_events", parent: None, Level::DEBUG, "foo: {}", 3);
584     event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
585     event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
586     event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
587     event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
588 }
589 
590 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
591 #[test]
592 fn trace_root() {
593     trace!(parent: None, foo = ?3, bar.baz = %2, quux = false);
594     trace!(parent: None, foo = 3, bar.baz = 2, quux = false);
595     trace!(parent: None, foo = 3, bar.baz = 3,);
596     trace!(parent: None, "foo");
597     trace!(parent: None, "foo: {}", 3);
598     trace!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
599     trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
600     trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
601     trace!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
602     trace!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
603     trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
604     trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
605     trace!(target: "foo_events", parent: None, "foo");
606     trace!(target: "foo_events", parent: None, "foo: {}", 3);
607     trace!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
608     trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
609     trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
610     trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
611 }
612 
613 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
614 #[test]
615 fn debug_root() {
616     debug!(parent: None, foo = ?3, bar.baz = %2, quux = false);
617     debug!(parent: None, foo = 3, bar.baz = 2, quux = false);
618     debug!(parent: None, foo = 3, bar.baz = 3,);
619     debug!(parent: None, "foo");
620     debug!(parent: None, "foo: {}", 3);
621     debug!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
622     debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
623     debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
624     debug!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
625     debug!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
626     debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
627     debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
628     debug!(target: "foo_events", parent: None, "foo");
629     debug!(target: "foo_events", parent: None, "foo: {}", 3);
630     debug!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
631     debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
632     debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
633     debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
634 }
635 
636 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
637 #[test]
638 fn info_root() {
639     info!(parent: None, foo = ?3, bar.baz = %2, quux = false);
640     info!(parent: None, foo = 3, bar.baz = 2, quux = false);
641     info!(parent: None, foo = 3, bar.baz = 3,);
642     info!(parent: None, "foo");
643     info!(parent: None, "foo: {}", 3);
644     info!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
645     info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
646     info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
647     info!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
648     info!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
649     info!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
650     info!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
651     info!(target: "foo_events", parent: None, "foo");
652     info!(target: "foo_events", parent: None, "foo: {}", 3);
653     info!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
654     info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
655     info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
656     info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
657 }
658 
659 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
660 #[test]
661 fn warn_root() {
662     warn!(parent: None, foo = ?3, bar.baz = %2, quux = false);
663     warn!(parent: None, foo = 3, bar.baz = 2, quux = false);
664     warn!(parent: None, foo = 3, bar.baz = 3,);
665     warn!(parent: None, "foo");
666     warn!(parent: None, "foo: {}", 3);
667     warn!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
668     warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
669     warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
670     warn!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
671     warn!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
672     warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
673     warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
674     warn!(target: "foo_events", parent: None, "foo");
675     warn!(target: "foo_events", parent: None, "foo: {}", 3);
676     warn!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
677     warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
678     warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
679     warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
680 }
681 
682 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
683 #[test]
684 fn error_root() {
685     error!(parent: None, foo = ?3, bar.baz = %2, quux = false);
686     error!(parent: None, foo = 3, bar.baz = 2, quux = false);
687     error!(parent: None, foo = 3, bar.baz = 3,);
688     error!(parent: None, "foo");
689     error!(parent: None, "foo: {}", 3);
690     error!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
691     error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
692     error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
693     error!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
694     error!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
695     error!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
696     error!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
697     error!(target: "foo_events", parent: None, "foo");
698     error!(target: "foo_events", parent: None, "foo: {}", 3);
699     error!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
700     error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
701     error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
702     error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
703 }
704 
705 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
706 #[test]
707 fn event_with_parent() {
708     let p = span!(Level::TRACE, "im_a_parent!");
709     event!(parent: &p, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
710     event!(parent: &p, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
711     event!(parent: &p, Level::DEBUG, foo = 3, bar.baz = 3,);
712     event!(parent: &p, Level::DEBUG, "foo");
713     event!(parent: &p, Level::DEBUG, "foo: {}", 3);
714     event!(parent: &p, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
715     event!(parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
716     event!(parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
717     event!(parent: &p, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
718     event!(target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
719     event!(target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 3,);
720     event!(target: "foo_events", parent: &p, Level::DEBUG, "foo");
721     event!(target: "foo_events", parent: &p, Level::DEBUG, "foo: {}", 3);
722     event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
723     event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
724     event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
725     event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
726 }
727 
728 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
729 #[test]
730 fn trace_with_parent() {
731     let p = span!(Level::TRACE, "im_a_parent!");
732     trace!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
733     trace!(parent: &p, foo = 3, bar.baz = 2, quux = false);
734     trace!(parent: &p, foo = 3, bar.baz = 3,);
735     trace!(parent: &p, "foo");
736     trace!(parent: &p, "foo: {}", 3);
737     trace!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
738     trace!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
739     trace!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
740     trace!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
741     trace!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
742     trace!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
743     trace!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
744     trace!(target: "foo_events", parent: &p, "foo");
745     trace!(target: "foo_events", parent: &p, "foo: {}", 3);
746     trace!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
747     trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
748     trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
749     trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
750 }
751 
752 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
753 #[test]
754 fn debug_with_parent() {
755     let p = span!(Level::TRACE, "im_a_parent!");
756     debug!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
757     debug!(parent: &p, foo = 3, bar.baz = 2, quux = false);
758     debug!(parent: &p, foo = 3, bar.baz = 3,);
759     debug!(parent: &p, "foo");
760     debug!(parent: &p, "foo: {}", 3);
761     debug!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
762     debug!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
763     debug!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
764     debug!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
765     debug!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
766     debug!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
767     debug!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
768     debug!(target: "foo_events", parent: &p, "foo");
769     debug!(target: "foo_events", parent: &p, "foo: {}", 3);
770     debug!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
771     debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
772     debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
773     debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
774 }
775 
776 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
777 #[test]
778 fn info_with_parent() {
779     let p = span!(Level::TRACE, "im_a_parent!");
780     info!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
781     info!(parent: &p, foo = 3, bar.baz = 2, quux = false);
782     info!(parent: &p, foo = 3, bar.baz = 3,);
783     info!(parent: &p, "foo");
784     info!(parent: &p, "foo: {}", 3);
785     info!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
786     info!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
787     info!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
788     info!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
789     info!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
790     info!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
791     info!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
792     info!(target: "foo_events", parent: &p, "foo");
793     info!(target: "foo_events", parent: &p, "foo: {}", 3);
794     info!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
795     info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
796     info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
797     info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
798 }
799 
800 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
801 #[test]
802 fn warn_with_parent() {
803     let p = span!(Level::TRACE, "im_a_parent!");
804     warn!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
805     warn!(parent: &p, foo = 3, bar.baz = 2, quux = false);
806     warn!(parent: &p, foo = 3, bar.baz = 3,);
807     warn!(parent: &p, "foo");
808     warn!(parent: &p, "foo: {}", 3);
809     warn!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
810     warn!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
811     warn!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
812     warn!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
813     warn!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
814     warn!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
815     warn!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
816     warn!(target: "foo_events", parent: &p, "foo");
817     warn!(target: "foo_events", parent: &p, "foo: {}", 3);
818     warn!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
819     warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
820     warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
821     warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
822 }
823 
824 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
825 #[test]
826 fn error_with_parent() {
827     let p = span!(Level::TRACE, "im_a_parent!");
828     error!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
829     error!(parent: &p, foo = 3, bar.baz = 2, quux = false);
830     error!(parent: &p, foo = 3, bar.baz = 3,);
831     error!(parent: &p, "foo");
832     error!(parent: &p, "foo: {}", 3);
833     error!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
834     error!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
835     error!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
836     error!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
837     error!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
838     error!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
839     error!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
840     error!(target: "foo_events", parent: &p, "foo");
841     error!(target: "foo_events", parent: &p, "foo: {}", 3);
842     error!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
843     error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
844     error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
845     error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
846 }
847 
848 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
849 #[test]
850 fn field_shorthand_only() {
851     #[derive(Debug)]
852     struct Position {
853         x: f32,
854         y: f32,
855     }
856     let pos = Position {
857         x: 3.234,
858         y: -1.223,
859     };
860 
861     trace!(?pos.x, ?pos.y);
862     debug!(?pos.x, ?pos.y);
863     info!(?pos.x, ?pos.y);
864     warn!(?pos.x, ?pos.y);
865     error!(?pos.x, ?pos.y);
866     event!(Level::TRACE, ?pos.x, ?pos.y);
867 }
868 
869 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
870 #[test]
871 fn borrow_val_events() {
872     // Reproduces https://github.com/tokio-rs/tracing/issues/954
873     let mut foo = (String::new(), String::new());
874     let zero = &mut foo.0;
875     trace!(one = ?foo.1);
876     debug!(one = ?foo.1);
877     info!(one = ?foo.1);
878     warn!(one = ?foo.1);
879     error!(one = ?foo.1);
880     zero.push_str("hello world");
881 }
882 
883 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
884 #[test]
885 fn borrow_val_spans() {
886     // Reproduces https://github.com/tokio-rs/tracing/issues/954
887     let mut foo = (String::new(), String::new());
888     let zero = &mut foo.0;
889     let _span = trace_span!("span", one = ?foo.1);
890     let _span = debug_span!("span", one = ?foo.1);
891     let _span = info_span!("span", one = ?foo.1);
892     let _span = warn_span!("span", one = ?foo.1);
893     let _span = error_span!("span", one = ?foo.1);
894     zero.push_str("hello world");
895 }
896 
897 #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
898 #[test]
899 fn callsite_macro_api() {
900     // This test should catch any inadvertent breaking changes
901     // caused by changes to the macro.
902     let _callsite = callsite! {
903         name: "test callsite",
904         kind: tracing::metadata::Kind::EVENT,
905         target: "test target",
906         level: tracing::Level::TRACE,
907         fields: foo, bar,
908     };
909     let _callsite = callsite! {
910         name: "test callsite",
911         kind: tracing::metadata::Kind::SPAN,
912         level: tracing::Level::TRACE,
913         fields: foo,
914     };
915     let _callsite = callsite! {
916         name: "test callsite",
917         kind: tracing::metadata::Kind::SPAN,
918         fields: foo,
919     };
920 }
921