Remove `condition_with_duration` for `ModelHandle`

Antonio Scandurra created

Also, use a 2s timeout on CI for both `ModelHandle::condition` and
`ViewHandle::condition`.

Change summary

Cargo.lock                   |  1 -
gpui/Cargo.toml              |  1 -
gpui/src/app.rs              | 23 +++++++----------------
zed/src/editor/buffer/mod.rs | 16 ++++------------
zed/src/worktree.rs          | 12 ++++--------
5 files changed, 15 insertions(+), 38 deletions(-)

Detailed changes

Cargo.lock 🔗

@@ -1181,7 +1181,6 @@ dependencies = [
  "font-kit",
  "foreign-types",
  "gpui_macros",
- "lazy_static",
  "log",
  "metal",
  "num_cpus",

gpui/Cargo.toml 🔗

@@ -9,7 +9,6 @@ async-task = "4.0.3"
 ctor = "0.1"
 etagere = "0.2"
 gpui_macros = {path = "../gpui_macros"}
-lazy_static = "1.4"
 log = "0.4"
 num_cpus = "1.13"
 ordered-float = "2.1.1"

gpui/src/app.rs 🔗

@@ -10,7 +10,6 @@ use crate::{
 use anyhow::{anyhow, Result};
 use async_task::Task;
 use keymap::MatchResult;
-use lazy_static::lazy_static;
 use parking_lot::{Mutex, RwLock};
 use pathfinder_geometry::{rect::RectF, vector::vec2f};
 use platform::Event;
@@ -2083,15 +2082,6 @@ impl<T: Entity> ModelHandle<T> {
     pub fn condition(
         &self,
         ctx: &TestAppContext,
-        predicate: impl FnMut(&T, &AppContext) -> bool,
-    ) -> impl Future<Output = ()> {
-        self.condition_with_duration(Duration::from_millis(100), ctx, predicate)
-    }
-
-    pub fn condition_with_duration(
-        &self,
-        duration: Duration,
-        ctx: &TestAppContext,
         mut predicate: impl FnMut(&T, &AppContext) -> bool,
     ) -> impl Future<Output = ()> {
         let (tx, mut rx) = mpsc::channel(1024);
@@ -2114,6 +2104,11 @@ impl<T: Entity> ModelHandle<T> {
 
         let ctx = ctx.weak_self.as_ref().unwrap().upgrade().unwrap();
         let handle = self.downgrade();
+        let duration = if std::env::var("CI").is_ok() {
+            Duration::from_secs(2)
+        } else {
+            Duration::from_millis(500)
+        };
 
         async move {
             timeout(duration, async move {
@@ -2293,10 +2288,6 @@ impl<T: View> ViewHandle<T> {
         ctx: &TestAppContext,
         mut predicate: impl FnMut(&T, &AppContext) -> bool,
     ) -> impl Future<Output = ()> {
-        lazy_static! {
-            static ref CI: bool = std::env::var("CI").is_ok();
-        }
-
         let (tx, mut rx) = mpsc::channel(1024);
 
         let mut ctx = ctx.0.borrow_mut();
@@ -2318,8 +2309,8 @@ impl<T: View> ViewHandle<T> {
 
         let ctx = ctx.weak_self.as_ref().unwrap().upgrade().unwrap();
         let handle = self.downgrade();
-        let duration = if *CI {
-            Duration::from_secs(1)
+        let duration = if std::env::var("CI").is_ok() {
+            Duration::from_secs(2)
         } else {
             Duration::from_millis(500)
         };

zed/src/editor/buffer/mod.rs 🔗

@@ -3011,9 +3011,7 @@ mod tests {
             });
 
             fs::remove_file(dir.path().join("file2")).unwrap();
-            buffer2
-                .condition_with_duration(Duration::from_millis(500), &app, |b, _| b.is_dirty())
-                .await;
+            buffer2.condition(&app, |b, _| b.is_dirty()).await;
             assert_eq!(
                 *events.borrow(),
                 &[Event::Dirtied, Event::FileHandleChanged]
@@ -3038,9 +3036,7 @@ mod tests {
             events.borrow_mut().clear();
             fs::remove_file(dir.path().join("file3")).unwrap();
             buffer3
-                .condition_with_duration(Duration::from_millis(500), &app, |_, _| {
-                    !events.borrow().is_empty()
-                })
+                .condition(&app, |_, _| !events.borrow().is_empty())
                 .await;
             assert_eq!(*events.borrow(), &[Event::FileHandleChanged]);
             app.read(|ctx| assert!(buffer3.read(ctx).is_dirty()));
@@ -3095,9 +3091,7 @@ mod tests {
         // contents are edited according to the diff between the old and new
         // file contents.
         buffer
-            .condition_with_duration(Duration::from_millis(500), &app, |buffer, _| {
-                buffer.text() != initial_contents
-            })
+            .condition(&app, |buffer, _| buffer.text() != initial_contents)
             .await;
 
         buffer.update(&mut app, |buffer, _| {
@@ -3131,9 +3125,7 @@ mod tests {
         // Becaues the buffer is modified, it doesn't reload from disk, but is
         // marked as having a conflict.
         buffer
-            .condition_with_duration(Duration::from_millis(500), &app, |buffer, _| {
-                buffer.has_conflict()
-            })
+            .condition(&app, |buffer, _| buffer.has_conflict())
             .await;
     }
 

zed/src/worktree.rs 🔗

@@ -1276,16 +1276,12 @@ impl WorktreeHandle for ModelHandle<Worktree> {
         let tree = self.clone();
         async move {
             fs::write(root_path.join(filename), "").unwrap();
-            tree.condition_with_duration(Duration::from_secs(5), &app, |tree, _| {
-                tree.entry_for_path(filename).is_some()
-            })
-            .await;
+            tree.condition(&app, |tree, _| tree.entry_for_path(filename).is_some())
+                .await;
 
             fs::remove_file(root_path.join(filename)).unwrap();
-            tree.condition_with_duration(Duration::from_secs(5), &app, |tree, _| {
-                tree.entry_for_path(filename).is_none()
-            })
-            .await;
+            tree.condition(&app, |tree, _| tree.entry_for_path(filename).is_none())
+                .await;
 
             app.read(|ctx| tree.read(ctx).scan_complete()).await;
         }