diff options
Diffstat (limited to 'test_util/src')
-rw-r--r-- | test_util/src/lsp.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/test_util/src/lsp.rs b/test_util/src/lsp.rs index 8a1f24b32..5369d6361 100644 --- a/test_util/src/lsp.rs +++ b/test_util/src/lsp.rs @@ -591,6 +591,7 @@ impl LspClientBuilder { writer, deno_dir, stderr_lines_rx, + supports_workspace_configuration: false, }) } } @@ -604,6 +605,7 @@ pub struct LspClient { deno_dir: TempDir, context: TestContext, stderr_lines_rx: Option<mpsc::Receiver<String>>, + supports_workspace_configuration: bool, } impl Drop for LspClient { @@ -689,9 +691,17 @@ impl LspClient { let mut builder = InitializeParamsBuilder::new(); builder.set_root_uri(self.context.temp_dir().uri()); do_build(&mut builder); - self.write_request("initialize", builder.build()); + let params: InitializeParams = builder.build(); + self.supports_workspace_configuration = match ¶ms.capabilities.workspace + { + Some(workspace) => workspace.configuration == Some(true), + _ => false, + }; + self.write_request("initialize", params); self.write_notification("initialized", json!({})); - self.handle_configuration_request(config); + if self.supports_workspace_configuration { + self.handle_configuration_request(config); + } } pub fn did_open(&mut self, params: Value) -> CollectedDiagnostics { @@ -712,7 +722,9 @@ impl LspClient { config: Value, ) -> CollectedDiagnostics { self.did_open_raw(params); - self.handle_configuration_request(config); + if self.supports_workspace_configuration { + self.handle_configuration_request(config); + } self.read_diagnostics() } |