Extract function for parsing an ignore file

This commit is contained in:
Benjamin Sago 2017-09-28 18:42:42 +01:00
parent 1f23f3f0cc
commit 7b5b02d9f1

View File

@ -39,7 +39,7 @@ impl IgnoreCache {
match file.read_to_string(&mut contents) { match file.read_to_string(&mut contents) {
Ok(_) => { Ok(_) => {
let (patterns, mut _errors) = IgnorePatterns::parse_from_iter(contents.lines()); let patterns = file_lines_to_patterns(contents.lines());
entries.push((p.into(), patterns)); entries.push((p.into(), patterns));
} }
Err(e) => debug!("Failed to read a .gitignore: {:?}", e) Err(e) => debug!("Failed to read a .gitignore: {:?}", e)
@ -68,10 +68,32 @@ 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)] #[cfg(test)]
mod test { mod test {
use super::*; 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] #[test]
fn empty() { fn empty() {
let ignores = IgnoreCache::default(); let ignores = IgnoreCache::default();