summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Sago <ogham@bsago.me>2017-09-28 18:42:42 +0100
committerBenjamin Sago <ogham@bsago.me>2017-09-30 09:17:29 +0200
commit7b5b02d9f1210530d8539b3988cbab18025f74e5 (patch)
tree766e5ab9bc79cc26a49541900f3437f00768256b
parent1f23f3f0ccfcccff3226b1d06a48205624297d83 (diff)
Extract function for parsing an ignore file
-rw-r--r--src/fs/feature/ignore.rs24
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")));