Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T02:55:44.129Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

lsp_log_view_tests.rs

117 lines · 3.7 KB · rust
1use std::sync::Arc;
2
3use crate::lsp_log_view::LogMenuItem;
4
5use super::*;
6use futures::StreamExt;
7use gpui::{AppContext as _, TestAppContext, VisualTestContext};
8use language::{FakeLspAdapter, Language, LanguageConfig, LanguageMatcher, tree_sitter_rust};
9use lsp::LanguageServerName;
10use project::{
11    FakeFs, Project,
12    lsp_store::log_store::{LanguageServerKind, LogKind, LogStore},
13};
14use serde_json::json;
15use settings::SettingsStore;
16use util::path;
17
18#[gpui::test]
19async fn test_lsp_log_view(cx: &mut TestAppContext) {
20    zlog::init_test();
21
22    init_test(cx);
23
24    let fs = FakeFs::new(cx.background_executor.clone());
25    fs.insert_tree(
26        path!("/the-root"),
27        json!({
28            "test.rs": "",
29            "package.json": "",
30        }),
31    )
32    .await;
33
34    let project = Project::test(fs.clone(), [path!("/the-root").as_ref()], cx).await;
35
36    let language_registry = project.read_with(cx, |project, _| project.languages().clone());
37    language_registry.add(Arc::new(Language::new(
38        LanguageConfig {
39            name: "Rust".into(),
40            matcher: (LanguageMatcher {
41                path_suffixes: vec!["rs".to_string()],
42                ..Default::default()
43            })
44            .into(),
45            ..Default::default()
46        },
47        Some(tree_sitter_rust::LANGUAGE.into()),
48    )));
49    let mut fake_rust_servers = language_registry.register_fake_lsp(
50        "Rust",
51        FakeLspAdapter {
52            name: "the-rust-language-server",
53            ..Default::default()
54        },
55    );
56
57    let log_store = cx.new(|cx| LogStore::new(false, cx));
58    log_store.update(cx, |store, cx| store.add_project(&project, cx));
59
60    let _rust_buffer = project
61        .update(cx, |project, cx| {
62            project.open_local_buffer_with_lsp(path!("/the-root/test.rs"), cx)
63        })
64        .await
65        .unwrap();
66
67    let mut language_server = fake_rust_servers.next().await.unwrap();
68    language_server
69        .receive_notification::<lsp::notification::DidOpenTextDocument>()
70        .await;
71
72    let window =
73        cx.add_window(|window, cx| LspLogView::new(project.clone(), log_store.clone(), window, cx));
74    let log_view = window.root(cx).unwrap();
75    let mut cx = VisualTestContext::from_window(*window, cx);
76
77    language_server.notify::<lsp::notification::LogMessage>(lsp::LogMessageParams {
78        message: "hello from the server".into(),
79        typ: lsp::MessageType::INFO,
80    });
81    cx.executor().run_until_parked();
82
83    log_view.update(&mut cx, |view, cx| {
84        assert_eq!(
85            view.menu_items(cx).unwrap(),
86            &[LogMenuItem {
87                server_id: language_server.server.server_id(),
88                server_name: LanguageServerName("the-rust-language-server".into()),
89                worktree_root_name: project
90                    .read(cx)
91                    .worktrees(cx)
92                    .next()
93                    .unwrap()
94                    .read(cx)
95                    .root_name_str()
96                    .to_string(),
97                rpc_trace_enabled: false,
98                selected_entry: LogKind::Logs,
99                trace_level: lsp::TraceValue::Off,
100                server_kind: LanguageServerKind::Local {
101                    project: project.downgrade()
102                }
103            }]
104        );
105        assert_eq!(view.editor.read(cx).text(cx), "hello from the server\n");
106    });
107}
108
109fn init_test(cx: &mut gpui::TestAppContext) {
110    cx.update(|cx| {
111        let settings_store = SettingsStore::test(cx);
112        cx.set_global(settings_store);
113        theme_settings::init(theme::LoadThemes::JustBase, cx);
114        release_channel::init(semver::Version::new(0, 0, 0), cx);
115    });
116}
117
Served at tenant.openagents/omega Member data and write actions are omitted.