diff --git a/src/commands/edge_app/utils.rs b/src/commands/edge_app/utils.rs index 77265f4..708b966 100644 --- a/src/commands/edge_app/utils.rs +++ b/src/commands/edge_app/utils.rs @@ -64,6 +64,10 @@ impl FileChanges { } fn is_included(entry: &DirEntry, ignore: &Ignorer) -> bool { + if entry.depth() == 0 { + return true; + } + let exclusion_list = ["screenly.js", "screenly.yml", ".ignore", "instance.yml"]; if exclusion_list.contains(&entry.file_name().to_str().unwrap_or_default()) { return false; @@ -738,7 +742,7 @@ mod tests { .unwrap(); File::create(dir_path.join(".ignore")) .unwrap() - .write_all(b"file2.txt") + .write_all(b"file2.txt\n\n") .unwrap(); File::create(dir_path.join("instance.yml")) .unwrap() diff --git a/src/commands/ignorer.rs b/src/commands/ignorer.rs index 4e3210c..4c43350 100644 --- a/src/commands/ignorer.rs +++ b/src/commands/ignorer.rs @@ -19,6 +19,9 @@ impl Ignorer { for line in content.lines() { let pattern = line.trim(); + if pattern.is_empty() { + continue; + } if pattern.ends_with('/') { patterns.push(format!("^{}.*$", regex::escape(pattern))); } else if pattern.contains('*') { @@ -78,6 +81,21 @@ mod tests { assert!(!ignorer.is_ignored(Path::new("other_file.txt"))); } + #[test] + fn test_ignore_when_file_has_blank_line_should_not_ignore_root() { + let dir = tempdir().unwrap(); + + File::create(dir.path().join(".ignore")) + .unwrap() + .write_all(b"node_modules/\n\n") + .unwrap(); + + let ignorer = Ignorer::new(dir.path()).unwrap(); + + assert!(!ignorer.is_ignored(dir.path())); + assert!(ignorer.is_ignored(&dir.path().join("node_modules/react"))); + } + #[test] fn test_ignore_when_pattern_specified_should_ignore_files_matching_that_pattern() { let dir = tempdir().unwrap();