use super::server_spec::{LspServerSpec, ServerClient};
const DEFAULT_SERVER_PATH: &str = "typescript-language-server";
pub struct TypeScriptLsSpec;
impl LspServerSpec for TypeScriptLsSpec {
const DEFAULT_SERVER_PATH: &'static str = DEFAULT_SERVER_PATH;
}
pub type TypeScriptLanguageClient = ServerClient<TypeScriptLsSpec>;
#[cfg(test)]
mod tests {
use super::*;
use crate::lsp::LspProvider;
use std::path::PathBuf;
#[test]
fn new_uses_default_server_path() {
assert_eq!(
TypeScriptLanguageClient::new().server_path,
PathBuf::from(DEFAULT_SERVER_PATH)
);
}
#[test]
#[ignore = "requires typescript-language-server on PATH; run with --ignored"]
fn integration_start_shutdown() {
if std::process::Command::new("typescript-language-server")
.arg("--version")
.stdout(std::process::Stdio::null())
.stderr(std::process::Stdio::null())
.status()
.is_err()
{
return;
}
let ws = tempfile::TempDir::new().unwrap();
std::fs::write(ws.path().join("test.ts"), "const x: number = 1;\n").unwrap();
let c = TypeScriptLanguageClient::new();
c.start(ws.path()).unwrap();
c.shutdown().unwrap();
}
}