tracing/tracing-core/tests/dispatch.rs
Eliza Weisman df9666bdeb
core: fix warnings when compiling without std (#2022)
## Motivation

Currently, compiling `tracing-core` with `default-features = false`
(i.e. for `no_std` targets) emits a few warnings. This is due to the
spinlock implementation's use of the deprecated `atomic::spin_loop_hint`
function (renamed to `hint::spin_loop`), and the use of deprecated
`compare_and_swap` instead of `compare_exchange` methods. Now that our
MSRV is 1.49 (the version in which `hint::spin_loop` was stabilized), we
can fix these warnings.

## Solution

This branch replaces the deprecated APIs. 

Also, I noticed that one of the tests emits unused-imports warnings with
`--no-default-features`. This is because the actual tests are feature
flagged to require `std`, but the module itself doesn't, so the imports
are just hanging out and not getting used for anything. I went ahead and
fixed that as well.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2022-03-25 00:27:20 +00:00

57 lines
1.4 KiB
Rust

#![cfg(feature = "std")]
mod common;
use common::*;
use tracing_core::dispatcher::*;
#[test]
fn set_default_dispatch() {
set_global_default(Dispatch::new(TestSubscriberA)).expect("global dispatch set failed");
get_default(|current| {
assert!(
current.is::<TestSubscriberA>(),
"global dispatch get failed"
)
});
let guard = set_default(&Dispatch::new(TestSubscriberB));
get_default(|current| assert!(current.is::<TestSubscriberB>(), "set_default get failed"));
// Drop the guard, setting the dispatch back to the global dispatch
drop(guard);
get_default(|current| {
assert!(
current.is::<TestSubscriberA>(),
"global dispatch get failed"
)
});
}
#[test]
fn nested_set_default() {
let _guard = set_default(&Dispatch::new(TestSubscriberA));
get_default(|current| {
assert!(
current.is::<TestSubscriberA>(),
"set_default for outer subscriber failed"
)
});
let inner_guard = set_default(&Dispatch::new(TestSubscriberB));
get_default(|current| {
assert!(
current.is::<TestSubscriberB>(),
"set_default inner subscriber failed"
)
});
drop(inner_guard);
get_default(|current| {
assert!(
current.is::<TestSubscriberA>(),
"set_default outer subscriber failed"
)
});
}