diff --git a/cli/tests/integration/inspector_tests.rs b/cli/tests/integration/inspector_tests.rs index e901e26331..f5365ac994 100644 --- a/cli/tests/integration/inspector_tests.rs +++ b/cli/tests/integration/inspector_tests.rs @@ -97,6 +97,8 @@ async fn inspector_break_on_first_line() { use TestStep::*; let test_steps = vec![ + StdErr("Visit chrome://inspect to connect to the debugger."), + StdErr("Deno is waiting for debugger to connect."), WsSend(r#"{"id":1,"method":"Runtime.enable"}"#), WsSend(r#"{"id":2,"method":"Debugger.enable"}"#), WsRecv( @@ -119,10 +121,10 @@ async fn inspector_break_on_first_line() { for step in test_steps { match step { + StdErr(s) => assert_eq!(&stderr_lines.next().unwrap(), s), StdOut(s) => assert_eq!(&stdout_lines.next().unwrap(), s), WsRecv(s) => assert!(socket_rx.next().await.unwrap().starts_with(s)), WsSend(s) => socket_tx.send(s.into()).await.unwrap(), - _ => unreachable!(), } } @@ -276,6 +278,8 @@ async fn inspector_does_not_hang() { use TestStep::*; let test_steps = vec![ + StdErr("Visit chrome://inspect to connect to the debugger."), + StdErr("Deno is waiting for debugger to connect."), WsSend(r#"{"id":1,"method":"Runtime.enable"}"#), WsSend(r#"{"id":2,"method":"Debugger.enable"}"#), WsRecv( @@ -293,6 +297,7 @@ async fn inspector_does_not_hang() { for step in test_steps { match step { + StdErr(s) => assert_eq!(&stderr_lines.next().unwrap(), s), WsRecv(s) => assert!(socket_rx.next().await.unwrap().starts_with(s)), WsSend(s) => socket_tx.send(s.into()).await.unwrap(), _ => unreachable!(), @@ -397,6 +402,7 @@ async fn inspector_runtime_evaluate_does_not_crash() { use TestStep::*; let test_steps = vec![ + StdErr("Visit chrome://inspect to connect to the debugger."), WsSend(r#"{"id":1,"method":"Runtime.enable"}"#), WsSend(r#"{"id":2,"method":"Debugger.enable"}"#), WsRecv( @@ -555,6 +561,8 @@ async fn inspector_break_on_first_line_in_test() { use TestStep::*; let test_steps = vec![ + StdErr("Visit chrome://inspect to connect to the debugger."), + StdErr("Deno is waiting for debugger to connect."), WsSend(r#"{"id":1,"method":"Runtime.enable"}"#), WsSend(r#"{"id":2,"method":"Debugger.enable"}"#), WsRecv( @@ -583,9 +591,9 @@ async fn inspector_break_on_first_line_in_test() { "Doesn't contain {}", s ), + StdErr(s) => assert_eq!(&stderr_lines.next().unwrap(), s), WsRecv(s) => assert!(socket_rx.next().await.unwrap().starts_with(s)), WsSend(s) => socket_tx.send(s.into()).await.unwrap(), - _ => unreachable!(), } } diff --git a/runtime/inspector_server.rs b/runtime/inspector_server.rs index 6ba4d088de..99aff06446 100644 --- a/runtime/inspector_server.rs +++ b/runtime/inspector_server.rs @@ -65,13 +65,18 @@ impl InspectorServer { &self, module_url: String, js_runtime: &mut JsRuntime, + should_break_on_first_statement: bool, ) { let inspector = js_runtime.inspector(); let session_sender = inspector.get_session_sender(); let deregister_rx = inspector.add_deregister_handler(); - // TODO(bartlomieju): simplify - let info = - InspectorInfo::new(self.host, session_sender, deregister_rx, module_url); + let info = InspectorInfo::new( + self.host, + session_sender, + deregister_rx, + module_url, + should_break_on_first_statement, + ); self.register_inspector_tx.unbounded_send(info).unwrap(); } } @@ -229,6 +234,10 @@ async fn server( "Debugger listening on {}", info.get_websocket_debugger_url() ); + eprintln!("Visit chrome://inspect to connect to the debugger."); + if info.should_break_on_first_statement { + eprintln!("Deno is waiting for debugger to connect."); + } if inspector_map.borrow_mut().insert(info.uuid, info).is_some() { panic!("Inspector UUID already in map"); } @@ -336,7 +345,7 @@ async fn pump_websocket_messages( .map_err(|_| ()); let inbound_pump = async move { - let result = websocket_rx + let _result = websocket_rx .map_ok(|msg| msg.into_data()) .map_err(AnyError::from) .map_ok(|msg| { @@ -345,10 +354,9 @@ async fn pump_websocket_messages( .try_collect::<()>() .await; - match result { - Ok(_) => eprintln!("Debugger session ended"), - Err(err) => eprintln!("Debugger session ended: {}.", err), - }; + // Users don't care if there was an error coming from debugger, + // just about the fact that debugger did disconnect. + eprintln!("Debugger session ended"); Ok(()) }; @@ -364,6 +372,7 @@ pub struct InspectorInfo { pub new_session_tx: UnboundedSender, pub deregister_rx: oneshot::Receiver<()>, pub url: String, + pub should_break_on_first_statement: bool, } impl InspectorInfo { @@ -372,6 +381,7 @@ impl InspectorInfo { new_session_tx: mpsc::UnboundedSender, deregister_rx: oneshot::Receiver<()>, url: String, + should_break_on_first_statement: bool, ) -> Self { Self { host, @@ -380,6 +390,7 @@ impl InspectorInfo { new_session_tx, deregister_rx, url, + should_break_on_first_statement, } } diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 24306fab59..e4c727977d 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -442,7 +442,11 @@ impl WebWorker { }); if let Some(server) = options.maybe_inspector_server.clone() { - server.register_inspector(main_module.to_string(), &mut js_runtime); + server.register_inspector( + main_module.to_string(), + &mut js_runtime, + false, + ); } let (internal_handle, external_handle) = { diff --git a/runtime/worker.rs b/runtime/worker.rs index 087185729f..3e245d331a 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -161,7 +161,11 @@ impl MainWorker { }); if let Some(server) = options.maybe_inspector_server.clone() { - server.register_inspector(main_module.to_string(), &mut js_runtime); + server.register_inspector( + main_module.to_string(), + &mut js_runtime, + options.should_break_on_first_statement, + ); } Self {