diff options
author | Benjamin Sago <ogham@bsago.me> | 2017-09-28 18:42:42 +0100 |
---|---|---|
committer | Benjamin Sago <ogham@bsago.me> | 2017-09-30 09:17:29 +0200 |
commit | 7b5b02d9f1210530d8539b3988cbab18025f74e5 (patch) | |
tree | 766e5ab9bc79cc26a49541900f3437f00768256b | |
parent | 1f23f3f0ccfcccff3226b1d06a48205624297d83 (diff) |
Extract function for parsing an ignore file
-rw-r--r-- | src/fs/feature/ignore.rs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/fs/feature/ignore.rs b/src/fs/feature/ignore.rs index cabf86c..3eb2fe4 100644 --- a/src/fs/feature/ignore.rs +++ b/src/fs/feature/ignore.rs @@ -39,7 +39,7 @@ impl IgnoreCache { match file.read_to_string(&mut contents) { Ok(_) => { - let (patterns, mut _errors) = IgnorePatterns::parse_from_iter(contents.lines()); + let patterns = file_lines_to_patterns(contents.lines()); entries.push((p.into(), patterns)); } Err(e) => debug!("Failed to read a .gitignore: {:?}", e) @@ -68,11 +68,33 @@ impl IgnoreCache { } +fn file_lines_to_patterns<'a, I>(iter: I) -> IgnorePatterns +where I: Iterator<Item=&'a str> { + // Errors are currently being ignored... not a good look + IgnorePatterns::parse_from_iter(iter).0 +} + + #[cfg(test)] mod test { use super::*; #[test] + fn parse_nothing() { + use std::iter::empty; + let (patterns, _) = IgnorePatterns::parse_from_iter(empty()); + assert_eq!(patterns, file_lines_to_patterns(empty())); + } + + #[test] + fn parse_some_globs() { + let stuff = vec![ "*.mp3", "README.md" ]; + let (patterns, _) = IgnorePatterns::parse_from_iter(stuff.iter().cloned()); + assert_eq!(patterns, file_lines_to_patterns(stuff.into_iter())); + } + + + #[test] fn empty() { let ignores = IgnoreCache::default(); assert_eq!(false, ignores.is_ignored(Path::new("/usr/bin/drinking"))); |