Skip to content

Commit eb50f9d

Browse files
authored
Merge pull request #188 from salewski/ads/parse-spec-ignore-blank-spec
filter::parse_spec() ignore bogon empty, blank (sub)strings
2 parents a36b72d + 780e7c5 commit eb50f9d

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

src/filter/mod.rs

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)