summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Sago <ogham@bsago.me>2017-09-28 18:48:56 +0100
committerBenjamin Sago <ogham@bsago.me>2017-09-30 09:17:29 +0200
commit108dc809440e079c851d318913b3f4e6ec73a021 (patch)
treef5c8e462147f3600e1c9c81f37d6aca08d7ce5c0
parent7b5b02d9f1210530d8539b3988cbab18025f74e5 (diff)
Ignore comments and blank lines when ignoring
-rw-r--r--src/fs/feature/ignore.rs29
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")));