Skip to content

Commit 8f93ca8

Browse files
authored
Fix tracked file paths for subdirectories (#103)
1 parent c86e800 commit 8f93ca8

1 file changed

Lines changed: 29 additions & 1 deletion

File tree

src/tracked_files.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::{
66

77
pub(crate) fn find_tracked_files(base_path: &Path) -> Option<HashMap<PathBuf, bool>> {
88
let output = Command::new("git")
9-
.args(["ls-files", "--full-name", "-z", "--", "."])
9+
.args(["ls-files", "-z", "--", "."])
1010
.current_dir(base_path)
1111
.output()
1212
.ok()?;
@@ -55,4 +55,32 @@ mod tests {
5555
assert!(tracked.len() == 1);
5656
assert!(tracked.get(&tmp_dir.path().join("test.txt")).unwrap());
5757
}
58+
59+
#[test]
60+
fn test_tracked_files_from_subdirectory() {
61+
let tmp_dir = tempfile::tempdir().unwrap();
62+
let backend_dir = tmp_dir.path().join("backend");
63+
let tracked_file = backend_dir.join("app/models/foo.rb");
64+
65+
std::process::Command::new("git")
66+
.arg("init")
67+
.current_dir(tmp_dir.path())
68+
.output()
69+
.expect("failed to run git init");
70+
71+
std::fs::create_dir_all(tracked_file.parent().unwrap()).unwrap();
72+
std::fs::write(&tracked_file, "class Foo; end").unwrap();
73+
std::fs::write(tmp_dir.path().join("README.md"), "readme").unwrap();
74+
75+
std::process::Command::new("git")
76+
.args(["add", "--all"])
77+
.current_dir(tmp_dir.path())
78+
.output()
79+
.expect("failed to add tracked files");
80+
81+
let tracked = find_tracked_files(&backend_dir).unwrap();
82+
assert_eq!(tracked.len(), 1);
83+
assert!(tracked.get(&tracked_file).unwrap());
84+
assert!(!tracked.contains_key(&backend_dir.join("backend/app/models/foo.rb")));
85+
}
5886
}

0 commit comments

Comments
 (0)