Resurrect commented-out worktree test

Max Brunsfeld created

Change summary

zed/src/worktree/worktree.rs | 100 +++++++++++++++++++------------------
1 file changed, 52 insertions(+), 48 deletions(-)

Detailed changes

zed/src/worktree/worktree.rs 🔗

@@ -608,51 +608,55 @@ pub fn match_paths(
     )
 }
 
-// #[cfg(test)]
-// mod test {
-//     use super::*;
-//     use crate::test_utils::*;
-//     use anyhow::Result;
-//     use std::os::unix;
-//
-//     // #[test]
-//     // fn test_populate_and_search() -> Result<()> {
-//     //     let dir = build_tempdir(json!({
-//     //         "root": {
-//     //             "apple": "",
-//     //             "banana": {
-//     //                 "carrot": {
-//     //                     "date": "",
-//     //                     "endive": "",
-//     //                 }
-//     //             },
-//     //             "fennel": {
-//     //                 "grape": "",
-//     //             }
-//     //         }
-//     //     }));
-//     //
-//     //     let root_link_path = dir.path().join("root_link");
-//     //     unix::fs::symlink(&dir.path().join("root"), &root_link_path)?;
-//     //
-//     //     let tree = Worktree::new(1, root_link_path, None);
-//     //     let (tx, _) = channel::unbounded();
-//     //     tree.populate(&tx)?;
-//     //     assert_eq!(tree.file_count(), 4);
-//     //
-//     //     let results = match_paths(&[tree.clone()], "bna", false, false, 10)
-//     //         .iter()
-//     //         .map(|result| tree.entry_path(result.entry_id))
-//     //         .collect::<Result<Vec<PathBuf>, _>>()?;
-//     //
-//     //     assert_eq!(
-//     //         results,
-//     //         vec![
-//     //             PathBuf::from("root_link/banana/carrot/date"),
-//     //             PathBuf::from("root_link/banana/carrot/endive"),
-//     //         ]
-//     //     );
-//     //
-//     //     Ok(())
-//     // }
-// }
+#[cfg(test)]
+mod test {
+    use super::*;
+    use crate::test::*;
+    use anyhow::Result;
+    use gpui::App;
+    use serde_json::json;
+    use std::os::unix;
+
+    #[test]
+    fn test_populate_and_search() -> Result<()> {
+        App::test((), |mut app| async move {
+            let dir = temp_tree(json!({
+                "root": {
+                    "apple": "",
+                    "banana": {
+                        "carrot": {
+                            "date": "",
+                            "endive": "",
+                        }
+                    },
+                    "fennel": {
+                        "grape": "",
+                    }
+                }
+            }));
+
+            let root_link_path = dir.path().join("root_link");
+            unix::fs::symlink(&dir.path().join("root"), &root_link_path)?;
+
+            let tree = app.add_model(|ctx| Worktree::new(1, root_link_path, Some(ctx)));
+            app.finish_pending_tasks().await;
+
+            tree.read(&app, |tree, _| {
+                assert_eq!(tree.file_count(), 4);
+                let results = match_paths(&[tree.clone()], "bna", false, false, 10)
+                    .iter()
+                    .map(|result| tree.entry_path(result.entry_id))
+                    .collect::<Result<Vec<PathBuf>, _>>()
+                    .unwrap();
+                assert_eq!(
+                    results,
+                    vec![
+                        PathBuf::from("root_link/banana/carrot/date"),
+                        PathBuf::from("root_link/banana/carrot/endive"),
+                    ]
+                );
+            });
+            Ok(())
+        })
+    }
+}