File: scoped_clobbers_default.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (35 lines) | stat: -rw-r--r-- 1,084 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#![cfg(feature = "std")]
use tracing_mock::*;

#[test]
fn scoped_clobbers_global() {
    // Reproduces https://github.com/tokio-rs/tracing/issues/2050

    let (scoped, scoped_handle) = subscriber::mock()
        .event(event::msg("before global"))
        .event(event::msg("before drop"))
        .only()
        .run_with_handle();

    let (global, global_handle) = subscriber::mock()
        .event(event::msg("after drop"))
        .only()
        .run_with_handle();

    // Set a scoped default subscriber, returning a guard.
    let guard = tracing::subscriber::set_default(scoped);
    tracing::info!("before global");

    // Now, set the global default.
    tracing::subscriber::set_global_default(global)
        .expect("global default should not already be set");
    // This event should still be collected by the scoped default.
    tracing::info!("before drop");

    // Drop the guard. Now, the global default subscriber should be used.
    drop(guard);
    tracing::info!("after drop");

    scoped_handle.assert_finished();
    global_handle.assert_finished();
}