From 4ebff57fa215fcdbda7dcf31a81701c26bd9a7d6 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Mon, 8 Jan 2024 19:08:09 +0100 Subject: [PATCH] Fix flaky open_paths_action test (#3944) I've missed a single run_until_parked call. mb Release Notes: - N/A --- crates/zed/src/zed.rs | 201 +++++++++++++++++++++--------------------- 1 file changed, 101 insertions(+), 100 deletions(-) diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index 61b8d6eaf8..97ef50cabd 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -791,110 +791,111 @@ mod tests { WorkspaceHandle, }; - // #[gpui::test] - // async fn test_open_paths_action(cx: &mut TestAppContext) { - // let app_state = init_test(cx); - // app_state - // .fs - // .as_fake() - // .insert_tree( - // "/root", - // json!({ - // "a": { - // "aa": null, - // "ab": null, - // }, - // "b": { - // "ba": null, - // "bb": null, - // }, - // "c": { - // "ca": null, - // "cb": null, - // }, - // "d": { - // "da": null, - // "db": null, - // }, - // }), - // ) - // .await; + #[gpui::test] + async fn test_open_paths_action(cx: &mut TestAppContext) { + let app_state = init_test(cx); + app_state + .fs + .as_fake() + .insert_tree( + "/root", + json!({ + "a": { + "aa": null, + "ab": null, + }, + "b": { + "ba": null, + "bb": null, + }, + "c": { + "ca": null, + "cb": null, + }, + "d": { + "da": null, + "db": null, + }, + }), + ) + .await; - // cx.update(|cx| { - // open_paths( - // &[PathBuf::from("/root/a"), PathBuf::from("/root/b")], - // &app_state, - // None, - // cx, - // ) - // }) - // .await - // .unwrap(); - // assert_eq!(cx.read(|cx| cx.windows().len()), 1); + cx.update(|cx| { + open_paths( + &[PathBuf::from("/root/a"), PathBuf::from("/root/b")], + &app_state, + None, + cx, + ) + }) + .await + .unwrap(); + assert_eq!(cx.read(|cx| cx.windows().len()), 1); - // cx.update(|cx| open_paths(&[PathBuf::from("/root/a")], &app_state, None, cx)) - // .await - // .unwrap(); - // assert_eq!(cx.read(|cx| cx.windows().len()), 1); - // let workspace_1 = cx - // .read(|cx| cx.windows()[0].downcast::()) - // .unwrap(); - // workspace_1 - // .update(cx, |workspace, cx| { - // assert_eq!(workspace.worktrees(cx).count(), 2); - // assert!(workspace.left_dock().read(cx).is_open()); - // assert!(workspace - // .active_pane() - // .read(cx) - // .focus_handle(cx) - // .is_focused(cx)); - // }) - // .unwrap(); + cx.update(|cx| open_paths(&[PathBuf::from("/root/a")], &app_state, None, cx)) + .await + .unwrap(); + assert_eq!(cx.read(|cx| cx.windows().len()), 1); + let workspace_1 = cx + .read(|cx| cx.windows()[0].downcast::()) + .unwrap(); + workspace_1 + .update(cx, |workspace, cx| { + assert_eq!(workspace.worktrees(cx).count(), 2); + assert!(workspace.left_dock().read(cx).is_open()); + assert!(workspace + .active_pane() + .read(cx) + .focus_handle(cx) + .is_focused(cx)); + }) + .unwrap(); - // cx.update(|cx| { - // open_paths( - // &[PathBuf::from("/root/b"), PathBuf::from("/root/c")], - // &app_state, - // None, - // cx, - // ) - // }) - // .await - // .unwrap(); - // assert_eq!(cx.read(|cx| cx.windows().len()), 2); + cx.update(|cx| { + open_paths( + &[PathBuf::from("/root/b"), PathBuf::from("/root/c")], + &app_state, + None, + cx, + ) + }) + .await + .unwrap(); + assert_eq!(cx.read(|cx| cx.windows().len()), 2); - // // Replace existing windows - // let window = cx - // .update(|cx| cx.windows()[0].downcast::()) - // .unwrap(); - // cx.update(|cx| { - // open_paths( - // &[PathBuf::from("/root/c"), PathBuf::from("/root/d")], - // &app_state, - // Some(window), - // cx, - // ) - // }) - // .await - // .unwrap(); - // assert_eq!(cx.read(|cx| cx.windows().len()), 2); - // let workspace_1 = cx - // .update(|cx| cx.windows()[0].downcast::()) - // .unwrap(); - // workspace_1 - // .update(cx, |workspace, cx| { - // assert_eq!( - // workspace - // .worktrees(cx) - // .map(|w| w.read(cx).abs_path()) - // .collect::>(), - // &[Path::new("/root/c").into(), Path::new("/root/d").into()] - // ); - // assert!(workspace.left_dock().read(cx).is_open()); - // assert!(workspace.active_pane().focus_handle(cx).is_focused(cx)); - // }) - // .unwrap(); - // } + // Replace existing windows + let window = cx + .update(|cx| cx.windows()[0].downcast::()) + .unwrap(); + cx.update(|cx| { + open_paths( + &[PathBuf::from("/root/c"), PathBuf::from("/root/d")], + &app_state, + Some(window), + cx, + ) + }) + .await + .unwrap(); + cx.background_executor.run_until_parked(); + assert_eq!(cx.read(|cx| cx.windows().len()), 2); + let workspace_1 = cx + .update(|cx| cx.windows()[0].downcast::()) + .unwrap(); + workspace_1 + .update(cx, |workspace, cx| { + assert_eq!( + workspace + .worktrees(cx) + .map(|w| w.read(cx).abs_path()) + .collect::>(), + &[Path::new("/root/c").into(), Path::new("/root/d").into()] + ); + assert!(workspace.left_dock().read(cx).is_open()); + assert!(workspace.active_pane().focus_handle(cx).is_focused(cx)); + }) + .unwrap(); + } #[gpui::test] async fn test_window_edit_state(cx: &mut TestAppContext) {