diff --git a/server/src/imfs.rs b/server/src/imfs.rs index 4c30a423..cd14b5b1 100644 --- a/server/src/imfs.rs +++ b/server/src/imfs.rs @@ -208,7 +208,6 @@ impl Imfs { if self.items.contains_key(&next_path) { current_path = next_path; } else { - self.read_from_disk(¤t_path)?; break; } }, @@ -216,7 +215,7 @@ impl Imfs { } } - Ok(()) + self.read_from_disk(¤t_path) } fn read_from_disk(&mut self, path: &Path) -> Result<(), FsError> { diff --git a/server/tests/imfs.rs b/server/tests/imfs.rs index 4d0292c6..617ce06a 100644 --- a/server/tests/imfs.rs +++ b/server/tests/imfs.rs @@ -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()?;