diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/util/server/src/lsp.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/util/server/src/lsp.rs b/tests/util/server/src/lsp.rs index 07b63c8a8..c4219b942 100644 --- a/tests/util/server/src/lsp.rs +++ b/tests/util/server/src/lsp.rs @@ -941,6 +941,21 @@ impl LspClient { }) } + pub fn write_jsonrpc( + &mut self, + method: impl AsRef<str>, + params: impl Serialize, + ) { + let value = json!({ + "jsonrpc": "2.0", + "id": self.request_id, + "method": method.as_ref(), + "params": params, + }); + self.write(value); + self.request_id += 1; + } + fn write(&mut self, value: Value) { let value_str = value.to_string(); let msg = format!( @@ -1030,6 +1045,17 @@ impl LspClient { }) } + pub fn read_latest_response( + &mut self, + ) -> (u64, Option<Value>, Option<LspResponseError>) { + self.reader.read_message(|msg| match msg { + LspMessage::Response(id, val, err) => { + Some((*id, val.clone(), err.clone())) + } + _ => None, + }) + } + pub fn write_response<V>(&mut self, id: u64, result: V) where V: Serialize, |