diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index a429a16a47..624eba59a3 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -1899,6 +1899,33 @@ mod tests { [".zed.toml", "a.txt", "b.txt", "d.txt"] ); }); + + project_b + .update(cx_b, |project, cx| { + project + .create_entry((worktree_id, "DIR"), true, cx) + .unwrap() + }) + .await + .unwrap(); + worktree_a.read_with(cx_a, |worktree, _| { + assert_eq!( + worktree + .paths() + .map(|p| p.to_string_lossy()) + .collect::>(), + [".zed.toml", "DIR", "a.txt", "b.txt", "d.txt"] + ); + }); + worktree_b.read_with(cx_b, |worktree, _| { + assert_eq!( + worktree + .paths() + .map(|p| p.to_string_lossy()) + .collect::>(), + [".zed.toml", "DIR", "a.txt", "b.txt", "d.txt"] + ); + }); } #[gpui::test(iterations = 10)] diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index d0891cadb1..5590c61762 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -3829,12 +3829,8 @@ impl Project { .ok_or_else(|| anyhow!("worktree not found"))?; worktree.update(cx, |worktree, cx| { let worktree = worktree.as_local_mut().unwrap(); - if envelope.payload.is_directory { - unimplemented!("can't yet create directories"); - } else { - let path = PathBuf::from(OsString::from_vec(envelope.payload.path)); - anyhow::Ok(worktree.write_file(path, Default::default(), cx)) - } + let path = PathBuf::from(OsString::from_vec(envelope.payload.path)); + anyhow::Ok(worktree.create_entry(path, envelope.payload.is_directory, cx)) }) })? .await?;