aether-lspd 0.1.21

LSP daemon for sharing language servers across multiple agents
Documentation
mod common;

use aether_lspd::LanguageId;
use common::{CargoProject, DaemonHarness, TestProject, use_fake_rust_server};

#[tokio::test]
async fn daemon_survives_client_drop() {
    use_fake_rust_server();

    let project = CargoProject::new("client_drop").expect("Failed to create project");
    let harness = DaemonHarness::spawn(project.root(), LanguageId::Rust).await.expect("Failed to spawn daemon");

    {
        let _client = harness.connect().await.expect("Failed to connect client");
    }

    let client = harness.connect().await.expect("Failed to reconnect to daemon");
    let uri = project.file_uri("src/main.rs");
    let hover = client.hover(uri, 0, 0).await.expect("Hover failed");
    assert!(hover.is_some());

    harness.kill().await.expect("Failed to kill daemon");
}