@@ -299,7 +299,7 @@ fn parse_spec(spec: &str) -> (Vec<Directive>, Option<inner::Filter>) {
299299 return ( dirs, None ) ;
300300 }
301301 if let Some ( m) = mods {
302- for s in m. split ( ',' ) {
302+ for s in m. split ( ',' ) . map ( |ss| ss . trim ( ) ) {
303303 if s. is_empty ( ) {
304304 continue ;
305305 }
@@ -737,6 +737,55 @@ mod tests {
737737 assert ! ( filter. is_none( ) ) ;
738738 }
739739
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+
740789 #[ test]
741790 fn parse_spec_global ( ) {
742791 // test parse_spec with no crate
0 commit comments