diff options
author | Benjamin Sago <ogham@bsago.me> | 2017-09-28 18:48:56 +0100 |
---|---|---|
committer | Benjamin Sago <ogham@bsago.me> | 2017-09-30 09:17:29 +0200 |
commit | 108dc809440e079c851d318913b3f4e6ec73a021 (patch) | |
tree | f5c8e462147f3600e1c9c81f37d6aca08d7ce5c0 | |
parent | 7b5b02d9f1210530d8539b3988cbab18025f74e5 (diff) |
Ignore comments and blank lines when ignoring
-rw-r--r-- | src/fs/feature/ignore.rs | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/fs/feature/ignore.rs b/src/fs/feature/ignore.rs index 3eb2fe4..042f492 100644 --- a/src/fs/feature/ignore.rs +++ b/src/fs/feature/ignore.rs @@ -69,7 +69,11 @@ impl IgnoreCache { fn file_lines_to_patterns<'a, I>(iter: I) -> IgnorePatterns -where I: Iterator<Item=&'a str> { +where I: Iterator<Item=&'a str> +{ + let iter = iter.filter(|el| !el.is_empty()); + let iter = iter.filter(|el| !el.starts_with("#")); + // Errors are currently being ignored... not a good look IgnorePatterns::parse_from_iter(iter).0 } @@ -89,13 +93,32 @@ mod test { #[test] fn parse_some_globs() { let stuff = vec![ "*.mp3", "README.md" ]; - let (patterns, _) = IgnorePatterns::parse_from_iter(stuff.iter().cloned()); + let reals = vec![ "*.mp3", "README.md" ]; + let (patterns, _) = IgnorePatterns::parse_from_iter(reals.into_iter()); + assert_eq!(patterns, file_lines_to_patterns(stuff.into_iter())); + } + + #[test] + fn parse_some_comments() { + let stuff = vec![ "*.mp3", "# I am a comment!", "#", "README.md" ]; + let reals = vec![ "*.mp3", "README.md" ]; + let (patterns, _) = IgnorePatterns::parse_from_iter(reals.into_iter()); assert_eq!(patterns, file_lines_to_patterns(stuff.into_iter())); } + #[test] + fn parse_some_blank_lines() { + let stuff = vec![ "*.mp3", "", "", "README.md" ]; + let reals = vec![ "*.mp3", "README.md" ]; + let (patterns, _) = IgnorePatterns::parse_from_iter(reals.into_iter()); + assert_eq!(patterns, file_lines_to_patterns(stuff.into_iter())); + } + + + #[test] - fn empty() { + fn an_empty_cache_ignores_nothing() { let ignores = IgnoreCache::default(); assert_eq!(false, ignores.is_ignored(Path::new("/usr/bin/drinking"))); assert_eq!(false, ignores.is_ignored(Path::new("target/debug/exa"))); |