Skip to content

Commit

Permalink
Fix issue w/ existing files not being updated in imfs (#119)
Browse files Browse the repository at this point in the history
* Fix issue w/ existing files not being updated in imfs

* Add a test for updating files
  • Loading branch information
ZoteTheMighty authored and LPGhatguy committed Feb 1, 2019
1 parent b58fed1 commit 0ff59ec
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
3 changes: 1 addition & 2 deletions server/src/imfs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -208,15 +208,14 @@ impl Imfs {
if self.items.contains_key(&next_path) {
current_path = next_path;
} else {
self.read_from_disk(&current_path)?;
break;
}
},
_ => unreachable!(),
}
}

Ok(())
self.read_from_disk(&current_path)
}

fn read_from_disk(&mut self, path: &Path) -> Result<(), FsError> {
Expand Down
29 changes: 29 additions & 0 deletions server/tests/imfs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,35 @@ fn adding_folder() -> Result<(), Error> {
Ok(())
}

#[test]
fn updating_files() -> Result<(), Error> {
let (_root, mut imfs, mut expected_imfs, resources) = base_tree()?;

check_expected(&imfs, &expected_imfs);

fs::write(&resources.bar_path, b"bar updated")?;
fs::write(&resources.baz_path, b"baz updated")?;

imfs.path_updated(&resources.bar_path)?;
imfs.path_updated(&resources.baz_path)?;

let bar_updated_item = ImfsItem::File(ImfsFile {
path: resources.bar_path.clone(),
contents: b"bar updated".to_vec(),
});
let baz_updated_item = ImfsItem::File(ImfsFile {
path: resources.baz_path.clone(),
contents: b"baz updated".to_vec(),
});

expected_imfs.items.insert(resources.bar_path.clone(), bar_updated_item);
expected_imfs.items.insert(resources.baz_path.clone(), baz_updated_item);

check_expected(&imfs, &expected_imfs);

Ok(())
}

#[test]
fn removing_file() -> Result<(), Error> {
let (root, mut imfs, mut expected_imfs, resources) = base_tree()?;
Expand Down

0 comments on commit 0ff59ec

Please sign in to comment.