diff --git a/crates/language_tools2/src/lsp_log_tests.rs b/crates/language_tools2/src/lsp_log_tests.rs index 967e8a3382..93e869369a 100644 --- a/crates/language_tools2/src/lsp_log_tests.rs +++ b/crates/language_tools2/src/lsp_log_tests.rs @@ -1,109 +1,107 @@ -// todo!("TODO kb") -// use std::sync::Arc; +use std::sync::Arc; -// use crate::lsp_log::LogMenuItem; +use crate::lsp_log::LogMenuItem; -// use super::*; -// use futures::StreamExt; -// use gpui::{serde_json::json, TestAppContext}; -// use language::{tree_sitter_rust, FakeLspAdapter, Language, LanguageConfig, LanguageServerName}; -// use project::{FakeFs, Project}; -// use settings::SettingsStore; +use super::*; +use futures::StreamExt; +use gpui::{serde_json::json, Context, TestAppContext, VisualTestContext}; +use language::{tree_sitter_rust, FakeLspAdapter, Language, LanguageConfig, LanguageServerName}; +use project::{FakeFs, Project}; +use settings::SettingsStore; -// #[gpui::test] -// async fn test_lsp_logs(cx: &mut TestAppContext) { -// if std::env::var("RUST_LOG").is_ok() { -// env_logger::init(); -// } +#[gpui::test] +async fn test_lsp_logs(cx: &mut TestAppContext) { + if std::env::var("RUST_LOG").is_ok() { + env_logger::init(); + } -// init_test(cx); + init_test(cx); -// let mut rust_language = Language::new( -// LanguageConfig { -// name: "Rust".into(), -// path_suffixes: vec!["rs".to_string()], -// ..Default::default() -// }, -// Some(tree_sitter_rust::language()), -// ); -// let mut fake_rust_servers = rust_language -// .set_fake_lsp_adapter(Arc::new(FakeLspAdapter { -// name: "the-rust-language-server", -// ..Default::default() -// })) -// .await; + let mut rust_language = Language::new( + LanguageConfig { + name: "Rust".into(), + path_suffixes: vec!["rs".to_string()], + ..Default::default() + }, + Some(tree_sitter_rust::language()), + ); + let mut fake_rust_servers = rust_language + .set_fake_lsp_adapter(Arc::new(FakeLspAdapter { + name: "the-rust-language-server", + ..Default::default() + })) + .await; -// let fs = FakeFs::new(cx.background()); -// fs.insert_tree( -// "/the-root", -// json!({ -// "test.rs": "", -// "package.json": "", -// }), -// ) -// .await; -// let project = Project::test(fs.clone(), ["/the-root".as_ref()], cx).await; -// project.update(cx, |project, _| { -// project.languages().add(Arc::new(rust_language)); -// }); + let fs = FakeFs::new(cx.background_executor.clone()); + fs.insert_tree( + "/the-root", + json!({ + "test.rs": "", + "package.json": "", + }), + ) + .await; + let project = Project::test(fs.clone(), ["/the-root".as_ref()], cx).await; + project.update(cx, |project, _| { + project.languages().add(Arc::new(rust_language)); + }); -// let log_store = cx.add_model(|cx| LogStore::new(cx)); -// log_store.update(cx, |store, cx| store.add_project(&project, cx)); + let log_store = cx.build_model(|cx| LogStore::new(cx)); + log_store.update(cx, |store, cx| store.add_project(&project, cx)); -// let _rust_buffer = project -// .update(cx, |project, cx| { -// project.open_local_buffer("/the-root/test.rs", cx) -// }) -// .await -// .unwrap(); + let _rust_buffer = project + .update(cx, |project, cx| { + project.open_local_buffer("/the-root/test.rs", cx) + }) + .await + .unwrap(); -// let mut language_server = fake_rust_servers.next().await.unwrap(); -// language_server -// .receive_notification::() -// .await; + let mut language_server = fake_rust_servers.next().await.unwrap(); + language_server + .receive_notification::() + .await; -// let log_view = cx -// .add_window(|cx| LspLogView::new(project.clone(), log_store.clone(), cx)) -// .root(cx); + let window = cx.add_window(|cx| LspLogView::new(project.clone(), log_store.clone(), cx)); + let log_view = window.root(cx).unwrap(); + let mut cx = VisualTestContext::from_window(*window, cx); -// language_server.notify::(lsp::LogMessageParams { -// message: "hello from the server".into(), -// typ: lsp::MessageType::INFO, -// }); -// cx.foreground().run_until_parked(); + language_server.notify::(lsp::LogMessageParams { + message: "hello from the server".into(), + typ: lsp::MessageType::INFO, + }); + cx.executor().run_until_parked(); -// log_view.read_with(cx, |view, cx| { -// assert_eq!( -// view.menu_items(cx).unwrap(), -// &[LogMenuItem { -// server_id: language_server.server.server_id(), -// server_name: LanguageServerName("the-rust-language-server".into()), -// worktree_root_name: project -// .read(cx) -// .worktrees(cx) -// .next() -// .unwrap() -// .read(cx) -// .root_name() -// .to_string(), -// rpc_trace_enabled: false, -// rpc_trace_selected: false, -// logs_selected: true, -// }] -// ); -// assert_eq!(view.editor.read(cx).text(cx), "hello from the server\n"); -// }); -// } + log_view.update(&mut cx, |view, cx| { + assert_eq!( + view.menu_items(cx).unwrap(), + &[LogMenuItem { + server_id: language_server.server.server_id(), + server_name: LanguageServerName("the-rust-language-server".into()), + worktree_root_name: project + .read(cx) + .worktrees() + .next() + .unwrap() + .read(cx) + .root_name() + .to_string(), + rpc_trace_enabled: false, + rpc_trace_selected: false, + logs_selected: true, + }] + ); + assert_eq!(view.editor.read(cx).text(cx), "hello from the server\n"); + }); +} -// fn init_test(cx: &mut gpui::TestAppContext) { -// cx.foreground().forbid_parking(); - -// cx.update(|cx| { -// cx.set_global(SettingsStore::test(cx)); -// theme::init((), cx); -// language::init(cx); -// client::init_settings(cx); -// Project::init_settings(cx); -// editor::init_settings(cx); -// }); -// } +fn init_test(cx: &mut gpui::TestAppContext) { + cx.update(|cx| { + let settings_store = SettingsStore::test(cx); + cx.set_global(settings_store); + theme::init(theme::LoadThemes::JustBase, cx); + language::init(cx); + client::init_settings(cx); + Project::init_settings(cx); + editor::init_settings(cx); + }); +}