File tree Expand file tree Collapse file tree 4 files changed +59
-2
lines changed
Expand file tree Collapse file tree 4 files changed +59
-2
lines changed Original file line number Diff line number Diff line change @@ -1485,7 +1485,10 @@ where
14851485 fn max_level_hint ( & self ) -> Option < LevelFilter > {
14861486 match self {
14871487 Some ( ref inner) => inner. max_level_hint ( ) ,
1488- None => None ,
1488+ None => {
1489+ // There is no underlying `Subscribe` so our max level is OFF
1490+ Some ( LevelFilter :: OFF )
1491+ }
14891492 }
14901493 }
14911494
@@ -1690,7 +1693,8 @@ feature! {
16901693 }
16911694
16921695 fn max_level_hint( & self ) -> Option <LevelFilter > {
1693- let mut max_level = LevelFilter :: ERROR ;
1696+ // Default to `OFF` if there are no underlying `Subscribe`s
1697+ let mut max_level = LevelFilter :: OFF ;
16941698 for s in self {
16951699 // NOTE(eliza): this is slightly subtle: if *any* subscriber
16961700 // returns `None`, we have to return `None`, assuming there is
Original file line number Diff line number Diff line change 33mod support;
44use self :: support:: * ;
55mod filter_scopes;
6+ mod option;
67mod targets;
78mod trees;
89mod vec;
Original file line number Diff line number Diff line change 1+ use super :: * ;
2+ use tracing:: Collect ;
3+
4+ // This test is just used to compare to the tests below
5+ #[ test]
6+ fn just_layer ( ) {
7+ let info = subscriber:: named ( "info" )
8+ . run ( )
9+ . with_filter ( LevelFilter :: INFO )
10+ . boxed ( ) ;
11+
12+ let collector = tracing_subscriber:: registry ( ) . with ( info) ;
13+ assert_eq ! ( collector. max_level_hint( ) , Some ( LevelFilter :: INFO ) ) ;
14+ }
15+
16+ #[ test]
17+ fn layer_and_option_layer ( ) {
18+ let info = subscriber:: named ( "info" )
19+ . run ( )
20+ . with_filter ( LevelFilter :: INFO )
21+ . boxed ( ) ;
22+
23+ let debug = subscriber:: named ( "debug" )
24+ . run ( )
25+ . with_filter ( LevelFilter :: DEBUG )
26+ . boxed ( ) ;
27+
28+ let mut collector = tracing_subscriber:: registry ( ) . with ( info) . with ( Some ( debug) ) ;
29+ assert_eq ! ( collector. max_level_hint( ) , Some ( LevelFilter :: DEBUG ) ) ;
30+
31+ let error = subscriber:: named ( "error" )
32+ . run ( )
33+ . with_filter ( LevelFilter :: ERROR )
34+ . boxed ( ) ;
35+ // None means the other layer takes control
36+ collector = tracing_subscriber:: registry ( ) . with ( error) . with ( None ) ;
37+ assert_eq ! ( collector. max_level_hint( ) , Some ( LevelFilter :: ERROR ) ) ;
38+ }
39+
40+ #[ test]
41+ fn just_option_layer ( ) {
42+ // Just a None means everything is off
43+ let collector = tracing_subscriber:: registry ( ) . with ( None :: < ExpectSubscriber > ) ;
44+ assert_eq ! ( collector. max_level_hint( ) , Some ( LevelFilter :: OFF ) ) ;
45+ }
Original file line number Diff line number Diff line change @@ -115,3 +115,10 @@ fn all_filtered_max_level_hint() {
115115
116116 assert_eq ! ( collector. max_level_hint( ) , Some ( LevelFilter :: DEBUG ) ) ;
117117}
118+
119+ #[ test]
120+ fn empty_vec ( ) {
121+ // Just a None means everything is off
122+ let collector = tracing_subscriber:: registry ( ) . with ( Vec :: < ExpectSubscriber > :: new ( ) ) ;
123+ assert_eq ! ( collector. max_level_hint( ) , Some ( LevelFilter :: OFF ) ) ;
124+ }
You can’t perform that action at this time.
0 commit comments