Introduce guest file creation in randomized collaboration test

Antonio Scandurra and Nathan Sobo created

Co-Authored-By: Nathan Sobo <nathan@zed.dev>

Change summary

crates/collab/src/rpc.rs | 43 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)

Detailed changes

crates/collab/src/rpc.rs 🔗

@@ -6528,6 +6528,49 @@ mod tests {
                                 client.buffers.extend(search.await?.into_keys());
                             }
                         }
+                        60..=69 => {
+                            let worktree = project
+                                .read_with(cx, |project, cx| {
+                                    project
+                                        .worktrees(&cx)
+                                        .filter(|worktree| {
+                                            let worktree = worktree.read(cx);
+                                            worktree.is_visible()
+                                                && worktree.entries(false).any(|e| e.is_file())
+                                                && worktree
+                                                    .root_entry()
+                                                    .map_or(false, |e| e.is_dir())
+                                        })
+                                        .choose(&mut *rng.lock())
+                                })
+                                .unwrap();
+                            let (worktree_id, worktree_root_name) = worktree
+                                .read_with(cx, |worktree, _| {
+                                    (worktree.id(), worktree.root_name().to_string())
+                                });
+
+                            let mut new_name = String::new();
+                            for _ in 0..10 {
+                                let letter = rng.lock().gen_range('a'..='z');
+                                new_name.push(letter);
+                            }
+                            let mut new_path = PathBuf::new();
+                            new_path.push(new_name);
+                            new_path.set_extension("rs");
+                            log::info!(
+                                "{}: creating {:?} in worktree {} ({})",
+                                guest_username,
+                                new_path,
+                                worktree_id,
+                                worktree_root_name,
+                            );
+                            project
+                                .update(cx, |project, cx| {
+                                    project.create_entry((worktree_id, new_path), false, cx)
+                                })
+                                .unwrap()
+                                .await?;
+                        }
                         _ => {
                             buffer.update(cx, |buffer, cx| {
                                 log::info!(