From 42d1b484bdca2bdac2bddc7403ca9889b48a4df2 Mon Sep 17 00:00:00 2001 From: Remco Smits Date: Mon, 30 Dec 2024 23:17:54 +0100 Subject: [PATCH] Testing: Allow sending error response inside request handler --- crates/dap/src/client.rs | 4 +++- crates/dap/src/transport.rs | 13 ++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/crates/dap/src/client.rs b/crates/dap/src/client.rs index 564feefb90..1fc7c90b6a 100644 --- a/crates/dap/src/client.rs +++ b/crates/dap/src/client.rs @@ -263,7 +263,9 @@ impl DebugAdapterClient { #[cfg(any(test, feature = "test-support"))] pub async fn on_request(&self, handler: F) where - F: 'static + Send + FnMut(u64, R::Arguments) -> Result, + F: 'static + + Send + + FnMut(u64, R::Arguments) -> Result, { let transport = self.transport_delegate.transport(); diff --git a/crates/dap/src/transport.rs b/crates/dap/src/transport.rs index d509b6dd95..4b4033acea 100644 --- a/crates/dap/src/transport.rs +++ b/crates/dap/src/transport.rs @@ -774,23 +774,22 @@ impl FakeTransport { pub async fn on_request(&self, mut handler: F) where - F: 'static + Send + FnMut(u64, R::Arguments) -> Result, + F: 'static + Send + FnMut(u64, R::Arguments) -> Result, { self.request_handlers.lock().await.insert( R::COMMAND, Box::new( move |seq, args, writer: Arc>| { - let response = handler(seq, serde_json::from_value(args).unwrap()).unwrap(); + let response = handler(seq, serde_json::from_value(args).unwrap()); - let message = Message::Response(Response { + let message = serde_json::to_string(&Message::Response(Response { seq: seq + 1, request_seq: seq, - success: true, + success: response.is_ok(), command: R::COMMAND.into(), body: Some(serde_json::to_value(response).unwrap()), - }); - - let message = serde_json::to_string(&message).unwrap(); + })) + .unwrap(); let writer = writer.clone();