Revert "fix display map tests"

Piotr Osiewicz created

This reverts commit 0f7fc8c1a03eaec347df101ada66f28aefa3162a.

Change summary

crates/editor2/src/display_map.rs    | 24 ++++++++------------
crates/gpui2/src/app/test_context.rs | 35 +++++++++++++----------------
crates/project2/src/worktree.rs      | 14 ++++-------
3 files changed, 31 insertions(+), 42 deletions(-)

Detailed changes

crates/editor2/src/display_map.rs 🔗

@@ -1467,12 +1467,10 @@ pub mod tests {
 
         cx.update(|cx| init_test(cx, |s| s.defaults.tab_size = Some(2.try_into().unwrap())));
 
-        let buffer = cx.build_model(|cx| Buffer::new(0, cx.entity_id().as_u64(), text));
-        let condition = cx.condition(&buffer, |buf, _| !buf.is_parsing());
-        cx.update_model(&buffer, |this, cx| {
-            this.set_language(Some(language), cx);
+        let buffer = cx.build_model(|cx| {
+            Buffer::new(0, cx.entity_id().as_u64(), text).with_language(language, cx)
         });
-        condition.await;
+        cx.condition(&buffer, |buf, _| !buf.is_parsing()).await;
         let buffer = cx.build_model(|cx| MultiBuffer::singleton(buffer, cx));
 
         let font_size = px(14.0);
@@ -1556,12 +1554,10 @@ pub mod tests {
 
         cx.update(|cx| init_test(cx, |_| {}));
 
-        let buffer = cx.build_model(|cx| Buffer::new(0, cx.entity_id().as_u64(), text));
-        let condition = cx.condition(&buffer, |buf, _| !buf.is_parsing());
-        buffer.update(cx, |this, cx| {
-            this.set_language(Some(language), cx);
+        let buffer = cx.build_model(|cx| {
+            Buffer::new(0, cx.entity_id().as_u64(), text).with_language(language, cx)
         });
-        condition.await;
+        cx.condition(&buffer, |buf, _| !buf.is_parsing()).await;
         let buffer = cx.build_model(|cx| MultiBuffer::singleton(buffer, cx));
 
         let font_size = px(16.0);
@@ -1625,10 +1621,10 @@ pub mod tests {
 
         let (text, highlighted_ranges) = marked_text_ranges(r#"constˇ «a»: B = "c «d»""#, false);
 
-        let buffer = cx.build_model(|cx| Buffer::new(0, cx.entity_id().as_u64(), text));
-        let condition = cx.condition(&buffer, |buf, _| !buf.is_parsing());
-        buffer.update(cx, |this, cx| this.set_language(Some(language), cx));
-        condition.await;
+        let buffer = cx.build_model(|cx| {
+            Buffer::new(0, cx.entity_id().as_u64(), text).with_language(language, cx)
+        });
+        cx.condition(&buffer, |buf, _| !buf.is_parsing()).await;
 
         let buffer = cx.build_model(|cx| MultiBuffer::singleton(buffer, cx));
         let buffer_snapshot = buffer.read_with(cx, |buffer, cx| buffer.snapshot(cx));

crates/gpui2/src/app/test_context.rs 🔗

@@ -8,7 +8,6 @@ use crate::{
 use anyhow::{anyhow, bail};
 use futures::{Stream, StreamExt};
 use std::{future::Future, ops::Deref, rc::Rc, sync::Arc, time::Duration};
-use util::ResultExt;
 
 #[derive(Clone)]
 pub struct TestAppContext {
@@ -298,7 +297,7 @@ impl TestAppContext {
             .unwrap()
     }
 
-    pub fn notifications<T: 'static>(&self, entity: &impl Entity<T>) -> impl Stream<Item = ()> {
+    pub fn notifications<T: 'static>(&mut self, entity: &impl Entity<T>) -> impl Stream<Item = ()> {
         let (tx, rx) = futures::channel::mpsc::unbounded();
         self.update(|cx| {
             cx.observe(entity, {
@@ -308,7 +307,7 @@ impl TestAppContext {
                 }
             })
             .detach();
-            cx.observe_release(entity, move |_, _| dbg!(tx.close_channel()))
+            cx.observe_release(entity, move |_, _| tx.close_channel())
                 .detach()
         });
         rx
@@ -332,30 +331,28 @@ impl TestAppContext {
         rx
     }
 
-    pub fn condition<T: 'static>(
-        &self,
+    pub async fn condition<T: 'static>(
+        &mut self,
         model: &Model<T>,
-        mut predicate: impl FnMut(&mut T, &mut ModelContext<T>) -> bool + Send + 'static,
-    ) -> Task<()> {
+        mut predicate: impl FnMut(&mut T, &mut ModelContext<T>) -> bool,
+    ) {
         let timer = self.executor().timer(Duration::from_secs(3));
         let mut notifications = self.notifications(model);
 
         use futures::FutureExt as _;
         use smol::future::FutureExt as _;
-        let model = model.clone();
-        self.spawn(move |mut cx| async move {
-            async move {
-                while notifications.next().await.is_some() {
-                    if model.update(&mut cx, &mut predicate).log_err().unwrap() {
-                        return Ok(());
-                    }
+
+        async {
+            while notifications.next().await.is_some() {
+                if model.update(self, &mut predicate) {
+                    return Ok(());
                 }
-                bail!("model dropped")
             }
-            .race(timer.map(|_| Err(anyhow!("condition timed out"))))
-            .await
-            .unwrap()
-        })
+            bail!("model dropped")
+        }
+        .race(timer.map(|_| Err(anyhow!("condition timed out"))))
+        .await
+        .unwrap();
     }
 }
 

crates/project2/src/worktree.rs 🔗

@@ -4187,7 +4187,7 @@ impl WorktreeModelHandle for Model<Worktree> {
         &self,
         cx: &'a mut gpui::TestAppContext,
     ) -> futures::future::LocalBoxFuture<'a, ()> {
-        let file_name: &'static str = "fs-event-sentinel";
+        let file_name = "fs-event-sentinel";
 
         let tree = self.clone();
         let (fs, root_path) = self.update(cx, |tree, _| {
@@ -4200,18 +4200,14 @@ impl WorktreeModelHandle for Model<Worktree> {
                 .await
                 .unwrap();
 
-            cx.condition(&tree, move |tree, _| {
-                tree.entry_for_path(file_name).is_some()
-            })
-            .await;
+            cx.condition(&tree, |tree, _| tree.entry_for_path(file_name).is_some())
+                .await;
 
             fs.remove_file(&root_path.join(file_name), Default::default())
                 .await
                 .unwrap();
-            cx.condition(&tree, move |tree, _| {
-                tree.entry_for_path(file_name).is_none()
-            })
-            .await;
+            cx.condition(&tree, |tree, _| tree.entry_for_path(file_name).is_none())
+                .await;
 
             cx.update(|cx| tree.read(cx).as_local().unwrap().scan_complete())
                 .await;