@@ -299,7 +299,7 @@ fn parse_spec(spec: &str) -> (Vec<Directive>, Option<inner::Filter>) {
299
299
return ( dirs, None ) ;
300
300
}
301
301
if let Some ( m) = mods {
302
- for s in m. split ( ',' ) {
302
+ for s in m. split ( ',' ) . map ( |ss| ss . trim ( ) ) {
303
303
if s. is_empty ( ) {
304
304
continue ;
305
305
}
@@ -737,6 +737,55 @@ mod tests {
737
737
assert ! ( filter. is_none( ) ) ;
738
738
}
739
739
740
+ #[ test]
741
+ fn parse_spec_empty_level_isolated ( ) {
742
+ // test parse_spec with "" as log level (and the entire spec str)
743
+ let ( dirs, filter) = parse_spec ( "" ) ; // should be ignored
744
+ assert_eq ! ( dirs. len( ) , 0 ) ;
745
+ assert ! ( filter. is_none( ) ) ;
746
+ }
747
+
748
+ #[ test]
749
+ fn parse_spec_blank_level_isolated ( ) {
750
+ // test parse_spec with a white-space-only string specified as the log
751
+ // level (and the entire spec str)
752
+ let ( dirs, filter) = parse_spec ( " " ) ; // should be ignored
753
+ assert_eq ! ( dirs. len( ) , 0 ) ;
754
+ assert ! ( filter. is_none( ) ) ;
755
+ }
756
+
757
+ #[ test]
758
+ fn parse_spec_blank_level_isolated_comma_only ( ) {
759
+ // The spec should contain zero or more comma-separated string slices,
760
+ // so a comma-only string should be interpretted as two empty strings
761
+ // (which should both be treated as invalid, so ignored).
762
+ let ( dirs, filter) = parse_spec ( "," ) ; // should be ignored
763
+ assert_eq ! ( dirs. len( ) , 0 ) ;
764
+ assert ! ( filter. is_none( ) ) ;
765
+ }
766
+
767
+ #[ test]
768
+ fn parse_spec_blank_level_isolated_comma_blank ( ) {
769
+ // The spec should contain zero or more comma-separated string slices,
770
+ // so this bogus spec should be interpretted as containing one empty
771
+ // string and one blank string. Both should both be treated as
772
+ // invalid, so ignored.
773
+ let ( dirs, filter) = parse_spec ( ", " ) ; // should be ignored
774
+ assert_eq ! ( dirs. len( ) , 0 ) ;
775
+ assert ! ( filter. is_none( ) ) ;
776
+ }
777
+
778
+ #[ test]
779
+ fn parse_spec_blank_level_isolated_blank_comma ( ) {
780
+ // The spec should contain zero or more comma-separated string slices,
781
+ // so this bogus spec should be interpretted as containing one blank
782
+ // string and one empty string. Both should both be treated as
783
+ // invalid, so ignored.
784
+ let ( dirs, filter) = parse_spec ( " ," ) ; // should be ignored
785
+ assert_eq ! ( dirs. len( ) , 0 ) ;
786
+ assert ! ( filter. is_none( ) ) ;
787
+ }
788
+
740
789
#[ test]
741
790
fn parse_spec_global ( ) {
742
791
// test parse_spec with no crate
0 commit comments