Skip to content

Commit 108dc80

Browse files
committed
Ignore comments and blank lines when ignoring
1 parent 7b5b02d commit 108dc80

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

src/fs/feature/ignore.rs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,11 @@ impl IgnoreCache {
6969

7070

7171
fn file_lines_to_patterns<'a, I>(iter: I) -> IgnorePatterns
72-
where I: Iterator<Item=&'a str> {
72+
where I: Iterator<Item=&'a str>
73+
{
74+
let iter = iter.filter(|el| !el.is_empty());
75+
let iter = iter.filter(|el| !el.starts_with("#"));
76+
7377
// Errors are currently being ignored... not a good look
7478
IgnorePatterns::parse_from_iter(iter).0
7579
}
@@ -89,13 +93,32 @@ mod test {
8993
#[test]
9094
fn parse_some_globs() {
9195
let stuff = vec![ "*.mp3", "README.md" ];
92-
let (patterns, _) = IgnorePatterns::parse_from_iter(stuff.iter().cloned());
96+
let reals = vec![ "*.mp3", "README.md" ];
97+
let (patterns, _) = IgnorePatterns::parse_from_iter(reals.into_iter());
98+
assert_eq!(patterns, file_lines_to_patterns(stuff.into_iter()));
99+
}
100+
101+
#[test]
102+
fn parse_some_comments() {
103+
let stuff = vec![ "*.mp3", "# I am a comment!", "#", "README.md" ];
104+
let reals = vec![ "*.mp3", "README.md" ];
105+
let (patterns, _) = IgnorePatterns::parse_from_iter(reals.into_iter());
93106
assert_eq!(patterns, file_lines_to_patterns(stuff.into_iter()));
94107
}
95108

109+
#[test]
110+
fn parse_some_blank_lines() {
111+
let stuff = vec![ "*.mp3", "", "", "README.md" ];
112+
let reals = vec![ "*.mp3", "README.md" ];
113+
let (patterns, _) = IgnorePatterns::parse_from_iter(reals.into_iter());
114+
assert_eq!(patterns, file_lines_to_patterns(stuff.into_iter()));
115+
}
116+
117+
118+
96119

97120
#[test]
98-
fn empty() {
121+
fn an_empty_cache_ignores_nothing() {
99122
let ignores = IgnoreCache::default();
100123
assert_eq!(false, ignores.is_ignored(Path::new("/usr/bin/drinking")));
101124
assert_eq!(false, ignores.is_ignored(Path::new("target/debug/exa")));

0 commit comments

Comments
 (0)