dont overwrite memfies

This commit is contained in:
Aleksey Kladov 2019-01-26 15:41:52 +03:00
parent 2acaa92c93
commit 07a4b9f1a0
2 changed files with 15 additions and 1 deletions

View file

@ -264,7 +264,9 @@ impl Vfs {
self.pending_changes.push(change);
}
TaskResult::AddSingleFile { root, path, text } => {
self.do_add_file(root, path, text, false);
if self.find_file(root, &path).is_none() {
self.do_add_file(root, path, text, false);
}
}
TaskResult::ChangeSingleFile { root, path, text } => {
if let Some(file) = self.find_file(root, &path) {

View file

@ -165,6 +165,18 @@ fn test_vfs_works() -> std::io::Result<()> {
assert_eq!(path, "sub1/sub2/new1.rs")
);
{
vfs.add_file_overlay(&dir.path().join("a/memfile.rs"), "memfile".to_string());
assert_match!(
vfs.commit_changes().as_slice(),
[VfsChange::AddFile { text, .. }],
assert_eq!(text.as_str(), "memfile")
);
fs::write(&dir.path().join("a/memfile.rs"), "ignore me").unwrap();
process_tasks(&mut vfs, 1);
assert_match!(vfs.commit_changes().as_slice(), []);
}
// should be ignored
fs::create_dir_all(dir.path().join("a/target")).unwrap();
fs::write(&dir.path().join("a/target/new.rs"), "ignore me").unwrap();