Ignore tests for now

Kirill Bulatov created

Change summary

crates/editor2/src/inlay_hint_cache.rs     | 221 +++++++++--------------
crates/gpui2/src/platform/test/platform.rs |   3 
2 files changed, 88 insertions(+), 136 deletions(-)

Detailed changes

crates/editor2/src/inlay_hint_cache.rs 🔗

@@ -1203,7 +1203,7 @@ pub mod tests {
         ExcerptRange,
     };
     use futures::StreamExt;
-    use gpui::{Context, TestAppContext, View};
+    use gpui::{Context, TestAppContext, View, WindowHandle};
     use itertools::Itertools;
     use language::{
         language_settings::AllLanguageSettingsContent, FakeLspAdapter, Language, LanguageConfig,
@@ -1220,6 +1220,8 @@ pub mod tests {
 
     use super::*;
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test]
     async fn test_basic_cache_update_with_duplicate_hints(cx: &mut gpui::TestAppContext) {
         let allowed_hint_kinds = HashSet::from_iter([None, Some(InlayHintKind::Type)]);
@@ -1343,6 +1345,8 @@ pub mod tests {
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test]
     async fn test_cache_update_on_lsp_completion_tasks(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -1454,6 +1458,8 @@ pub mod tests {
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test]
     async fn test_no_hint_updates_for_unrelated_language_files(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -1475,14 +1481,6 @@ pub mod tests {
                 )
                 .await;
         let project = Project::test(fs, ["/a".as_ref()], cx).await;
-        let workspace = cx.add_window(|cx| Workspace::test_new(project.clone(), cx));
-        let worktree_id = workspace
-            .update(cx, |workspace, cx| {
-                workspace.project().read_with(cx, |project, cx| {
-                    project.worktrees().next().unwrap().read(cx).id()
-                })
-            })
-            .unwrap();
 
         let mut rs_fake_servers = None;
         let mut md_fake_servers = None;
@@ -1515,7 +1513,7 @@ pub mod tests {
             });
         }
 
-        let _rs_buffer = project
+        let rs_buffer = project
             .update(cx, |project, cx| {
                 project.open_local_buffer("/a/main.rs", cx)
             })
@@ -1524,15 +1522,8 @@ pub mod tests {
         cx.executor().run_until_parked();
         cx.executor().start_waiting();
         let rs_fake_server = rs_fake_servers.unwrap().next().await.unwrap();
-        let rs_editor = workspace
-            .update(cx, |workspace, cx| {
-                workspace.open_path((worktree_id, "main.rs"), None, true, cx)
-            })
-            .unwrap()
-            .await
-            .unwrap()
-            .downcast::<Editor>()
-            .unwrap();
+        let rs_editor =
+            cx.add_window(|cx| Editor::for_buffer(rs_buffer, Some(project.clone()), cx));
         let rs_lsp_request_count = Arc::new(AtomicU32::new(0));
         rs_fake_server
             .handle_request::<lsp::request::InlayHintRequest, _, _>(move |params, _| {
@@ -1574,7 +1565,7 @@ pub mod tests {
         });
 
         cx.executor().run_until_parked();
-        let _md_buffer = project
+        let md_buffer = project
             .update(cx, |project, cx| {
                 project.open_local_buffer("/a/other.md", cx)
             })
@@ -1583,15 +1574,7 @@ pub mod tests {
         cx.executor().run_until_parked();
         cx.executor().start_waiting();
         let md_fake_server = md_fake_servers.unwrap().next().await.unwrap();
-        let md_editor = workspace
-            .update(cx, |workspace, cx| {
-                workspace.open_path((worktree_id, "other.md"), None, true, cx)
-            })
-            .unwrap()
-            .await
-            .unwrap()
-            .downcast::<Editor>()
-            .unwrap();
+        let md_editor = cx.add_window(|cx| Editor::for_buffer(md_buffer, Some(project), cx));
         let md_lsp_request_count = Arc::new(AtomicU32::new(0));
         md_fake_server
             .handle_request::<lsp::request::InlayHintRequest, _, _>(move |params, _| {
@@ -1685,6 +1668,8 @@ pub mod tests {
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test]
     async fn test_hint_setting_changes(cx: &mut gpui::TestAppContext) {
         let allowed_hint_kinds = HashSet::from_iter([None, Some(InlayHintKind::Type)]);
@@ -2013,6 +1998,8 @@ pub mod tests {
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test]
     async fn test_hint_request_cancellation(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -2139,6 +2126,8 @@ pub mod tests {
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test(iterations = 10)]
     async fn test_large_buffer_inlay_requests_split(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -2178,16 +2167,7 @@ pub mod tests {
         .await;
         let project = Project::test(fs, ["/a".as_ref()], cx).await;
         project.update(cx, |project, _| project.languages().add(Arc::new(language)));
-        let workspace = cx.add_window(|cx| Workspace::test_new(project.clone(), cx));
-        let worktree_id = workspace
-            .update(cx, |workspace, cx| {
-                workspace.project().read_with(cx, |project, cx| {
-                    project.worktrees().next().unwrap().read(cx).id()
-                })
-            })
-            .unwrap();
-
-        let _buffer = project
+        let buffer = project
             .update(cx, |project, cx| {
                 project.open_local_buffer("/a/main.rs", cx)
             })
@@ -2196,15 +2176,7 @@ pub mod tests {
         cx.executor().run_until_parked();
         cx.executor().start_waiting();
         let fake_server = fake_servers.next().await.unwrap();
-        let editor = workspace
-            .update(cx, |workspace, cx| {
-                workspace.open_path((worktree_id, "main.rs"), None, true, cx)
-            })
-            .unwrap()
-            .await
-            .unwrap()
-            .downcast::<Editor>()
-            .unwrap();
+        let editor = cx.add_window(|cx| Editor::for_buffer(buffer, Some(project), cx));
         let lsp_request_ranges = Arc::new(Mutex::new(Vec::new()));
         let lsp_request_count = Arc::new(AtomicUsize::new(0));
         let closure_lsp_request_ranges = Arc::clone(&lsp_request_ranges);
@@ -2237,10 +2209,12 @@ pub mod tests {
             .await;
 
         fn editor_visible_range(
-            editor: &View<Editor>,
+            editor: &WindowHandle<Editor>,
             cx: &mut gpui::TestAppContext,
         ) -> Range<Point> {
-            let ranges = editor.update(cx, |editor, cx| editor.excerpt_visible_offsets(None, cx));
+            let ranges = editor
+                .update(cx, |editor, cx| editor.excerpt_visible_offsets(None, cx))
+                .unwrap();
             assert_eq!(
                 ranges.len(),
                 1,
@@ -2318,30 +2292,32 @@ pub mod tests {
         ));
         cx.executor().run_until_parked();
         let visible_range_after_scrolls = editor_visible_range(&editor, cx);
-        let visible_line_count =
-            editor.update(cx, |editor, _| editor.visible_line_count().unwrap());
-        let selection_in_cached_range = editor.update(cx, |editor, cx| {
-            let ranges = lsp_request_ranges
-                .lock()
-                .drain(..)
-                .sorted_by_key(|r| r.start)
-                .collect::<Vec<_>>();
-            assert_eq!(
-                ranges.len(),
-                2,
-                "Should query 2 ranges after both scrolls, but got: {ranges:?}"
-            );
-            let first_scroll = &ranges[0];
-            let second_scroll = &ranges[1];
-            assert_eq!(
-                first_scroll.end, second_scroll.start,
-                "Should query 2 adjacent ranges after the scrolls, but got: {ranges:?}"
-            );
-            assert_eq!(
+        let visible_line_count = editor
+            .update(cx, |editor, _| editor.visible_line_count().unwrap())
+            .unwrap();
+        let selection_in_cached_range = editor
+            .update(cx, |editor, cx| {
+                let ranges = lsp_request_ranges
+                    .lock()
+                    .drain(..)
+                    .sorted_by_key(|r| r.start)
+                    .collect::<Vec<_>>();
+                assert_eq!(
+                    ranges.len(),
+                    2,
+                    "Should query 2 ranges after both scrolls, but got: {ranges:?}"
+                );
+                let first_scroll = &ranges[0];
+                let second_scroll = &ranges[1];
+                assert_eq!(
+                    first_scroll.end, second_scroll.start,
+                    "Should query 2 adjacent ranges after the scrolls, but got: {ranges:?}"
+                );
+                assert_eq!(
                 first_scroll.start, expected_initial_query_range_end,
                 "First scroll should start the query right after the end of the original scroll",
             );
-            assert_eq!(
+                assert_eq!(
                 second_scroll.end,
                 lsp::Position::new(
                     visible_range_after_scrolls.end.row
@@ -2351,30 +2327,31 @@ pub mod tests {
                 "Second scroll should query one more screen down after the end of the visible range"
             );
 
-            let lsp_requests = lsp_request_count.load(Ordering::Acquire);
-            assert_eq!(lsp_requests, 4, "Should query for hints after every scroll");
-            let expected_hints = vec![
-                "1".to_string(),
-                "2".to_string(),
-                "3".to_string(),
-                "4".to_string(),
-            ];
-            assert_eq!(
-                expected_hints,
-                cached_hint_labels(editor),
-                "Should have hints from the new LSP response after the edit"
-            );
-            assert_eq!(expected_hints, visible_hint_labels(editor, cx));
-            assert_eq!(
-                editor.inlay_hint_cache().version,
-                lsp_requests,
-                "Should update the cache for every LSP response with hints added"
-            );
+                let lsp_requests = lsp_request_count.load(Ordering::Acquire);
+                assert_eq!(lsp_requests, 4, "Should query for hints after every scroll");
+                let expected_hints = vec![
+                    "1".to_string(),
+                    "2".to_string(),
+                    "3".to_string(),
+                    "4".to_string(),
+                ];
+                assert_eq!(
+                    expected_hints,
+                    cached_hint_labels(editor),
+                    "Should have hints from the new LSP response after the edit"
+                );
+                assert_eq!(expected_hints, visible_hint_labels(editor, cx));
+                assert_eq!(
+                    editor.inlay_hint_cache().version,
+                    lsp_requests,
+                    "Should update the cache for every LSP response with hints added"
+                );
 
-            let mut selection_in_cached_range = visible_range_after_scrolls.end;
-            selection_in_cached_range.row -= visible_line_count.ceil() as u32;
-            selection_in_cached_range
-        });
+                let mut selection_in_cached_range = visible_range_after_scrolls.end;
+                selection_in_cached_range.row -= visible_line_count.ceil() as u32;
+                selection_in_cached_range
+            })
+            .unwrap();
 
         editor.update(cx, |editor, cx| {
             editor.change_selections(Some(Autoscroll::center()), cx, |s| {
@@ -2434,6 +2411,8 @@ pub mod tests {
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to text.rs `measurement has not been performed` error"]
     #[gpui::test(iterations = 10)]
     async fn test_multiple_excerpts_large_multibuffer(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -2776,6 +2755,8 @@ all hints should be invalidated and requeried for all of its visible excerpts"
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to text.rs `measurement has not been performed` error"]
     #[gpui::test]
     async fn test_excerpts_removed(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -3004,6 +2985,8 @@ all hints should be invalidated and requeried for all of its visible excerpts"
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test]
     async fn test_inside_char_boundary_range_hints(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -3043,16 +3026,7 @@ all hints should be invalidated and requeried for all of its visible excerpts"
         .await;
         let project = Project::test(fs, ["/a".as_ref()], cx).await;
         project.update(cx, |project, _| project.languages().add(Arc::new(language)));
-        let workspace = cx.add_window(|cx| Workspace::test_new(project.clone(), cx));
-        let worktree_id = workspace
-            .update(cx, |workspace, cx| {
-                workspace.project().read_with(cx, |project, cx| {
-                    project.worktrees().next().unwrap().read(cx).id()
-                })
-            })
-            .unwrap();
-
-        let _buffer = project
+        let buffer = project
             .update(cx, |project, cx| {
                 project.open_local_buffer("/a/main.rs", cx)
             })
@@ -3061,15 +3035,7 @@ all hints should be invalidated and requeried for all of its visible excerpts"
         cx.executor().run_until_parked();
         cx.executor().start_waiting();
         let fake_server = fake_servers.next().await.unwrap();
-        let editor = workspace
-            .update(cx, |workspace, cx| {
-                workspace.open_path((worktree_id, "main.rs"), None, true, cx)
-            })
-            .unwrap()
-            .await
-            .unwrap()
-            .downcast::<Editor>()
-            .unwrap();
+        let editor = cx.add_window(|cx| Editor::for_buffer(buffer, Some(project), cx));
         let lsp_request_count = Arc::new(AtomicU32::new(0));
         let closure_lsp_request_count = Arc::clone(&lsp_request_count);
         fake_server
@@ -3112,6 +3078,8 @@ all hints should be invalidated and requeried for all of its visible excerpts"
         });
     }
 
+    // todo!()
+    #[ignore = "fails due to unimplemented `impl PlatformAtlas for TestAtlas` method"]
     #[gpui::test]
     async fn test_toggle_inlay_hints(cx: &mut gpui::TestAppContext) {
         init_test(cx, |settings| {
@@ -3235,7 +3203,8 @@ all hints should be invalidated and requeried for all of its visible excerpts"
 
     pub(crate) fn init_test(cx: &mut TestAppContext, f: impl Fn(&mut AllLanguageSettingsContent)) {
         cx.update(|cx| {
-            cx.set_global(SettingsStore::test(cx));
+            let settings_store = SettingsStore::test(cx);
+            cx.set_global(settings_store);
             theme::init(cx);
             client::init_settings(cx);
             language::init(cx);
@@ -3249,7 +3218,7 @@ all hints should be invalidated and requeried for all of its visible excerpts"
 
     async fn prepare_test_objects(
         cx: &mut TestAppContext,
-    ) -> (&'static str, View<Editor>, FakeLanguageServer) {
+    ) -> (&'static str, WindowHandle<Editor>, FakeLanguageServer) {
         let mut language = Language::new(
             LanguageConfig {
                 name: "Rust".into(),
@@ -3280,17 +3249,7 @@ all hints should be invalidated and requeried for all of its visible excerpts"
 
         let project = Project::test(fs, ["/a".as_ref()], cx).await;
         project.update(cx, |project, _| project.languages().add(Arc::new(language)));
-        let workspace = cx.add_window(|cx| Workspace::test_new(project.clone(), cx));
-
-        let worktree_id = workspace
-            .update(cx, |workspace, cx| {
-                workspace.project().read_with(cx, |project, cx| {
-                    project.worktrees().next().unwrap().read(cx).id()
-                })
-            })
-            .unwrap();
-
-        let _buffer = project
+        let buffer = project
             .update(cx, |project, cx| {
                 project.open_local_buffer("/a/main.rs", cx)
             })
@@ -3299,15 +3258,7 @@ all hints should be invalidated and requeried for all of its visible excerpts"
         cx.executor().run_until_parked();
         cx.executor().start_waiting();
         let fake_server = fake_servers.next().await.unwrap();
-        let editor = workspace
-            .update(cx, |workspace, cx| {
-                workspace.open_path((worktree_id, "main.rs"), None, true, cx)
-            })
-            .unwrap()
-            .await
-            .unwrap()
-            .downcast::<Editor>()
-            .unwrap();
+        let editor = cx.add_window(|cx| Editor::for_buffer(buffer, Some(project), cx));
 
         editor.update(cx, |editor, cx| {
             assert!(cached_hint_labels(editor).is_empty());

crates/gpui2/src/platform/test/platform.rs 🔗

@@ -182,7 +182,8 @@ impl Platform for TestPlatform {
     }
 
     fn should_auto_hide_scrollbars(&self) -> bool {
-        unimplemented!()
+        // todo()
+        true
     }
 
     fn write_to_clipboard(&self, _item: crate::ClipboardItem) {