summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesper van den Ende <jespertheend@users.noreply.github.com>2023-10-06 23:33:14 +0200
committerGitHub <noreply@github.com>2023-10-06 23:33:14 +0200
commitbe7e2bd8c1883c6bf58db8ff40954ed7ee53b5c5 (patch)
tree9b435c7d0f4e81e4bc4d89303ce155639dbfdca2
parent48bb3b2b0f519077e1a454034fbbe79d9db23c4a (diff)
fix(cli): Support using both `--watch` and `--inspect` at the same time (#20660)
Fixes #20525
-rw-r--r--cli/args/flags.rs7
-rw-r--r--cli/tests/integration/watcher_tests.rs42
-rw-r--r--runtime/inspector_server.rs3
3 files changed, 46 insertions, 6 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 40aa7b8e3..66981b239 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -1828,12 +1828,7 @@ fn repl_subcommand() -> Command {
fn run_subcommand() -> Command {
runtime_args(Command::new("run"), true, true)
.arg(check_arg(false))
- .arg(
- watch_arg(true)
- .conflicts_with("inspect")
- .conflicts_with("inspect-wait")
- .conflicts_with("inspect-brk"),
- )
+ .arg(watch_arg(true))
.arg(no_clear_screen_arg())
.arg(executable_ext_arg())
.arg(
diff --git a/cli/tests/integration/watcher_tests.rs b/cli/tests/integration/watcher_tests.rs
index 1a5fb6203..1ee8a45e0 100644
--- a/cli/tests/integration/watcher_tests.rs
+++ b/cli/tests/integration/watcher_tests.rs
@@ -1603,3 +1603,45 @@ async fn run_watch_dynamic_imports() {
check_alive_then_kill(child);
}
+
+#[tokio::test]
+async fn run_watch_inspect() {
+ let t = TempDir::new();
+ let file_to_watch = t.path().join("file_to_watch.js");
+ file_to_watch.write(
+ r#"
+ console.log("hello world");
+ "#,
+ );
+
+ let mut child = util::deno_cmd()
+ .current_dir(util::testdata_path())
+ .arg("run")
+ .arg("--watch")
+ .arg("--inspect")
+ .arg("-L")
+ .arg("debug")
+ .arg(&file_to_watch)
+ .env("NO_COLOR", "1")
+ .stdout(std::process::Stdio::piped())
+ .stderr(std::process::Stdio::piped())
+ .spawn()
+ .unwrap();
+ let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
+
+ wait_contains("Debugger listening", &mut stderr_lines).await;
+ wait_for_watcher("file_to_watch.js", &mut stderr_lines).await;
+ wait_contains("hello world", &mut stdout_lines).await;
+
+ file_to_watch.write(
+ r#"
+ console.log("updated file");
+ "#,
+ );
+
+ wait_contains("Restarting", &mut stderr_lines).await;
+ wait_contains("Debugger listening", &mut stderr_lines).await;
+ wait_contains("updated file", &mut stdout_lines).await;
+
+ check_alive_then_kill(child);
+}
diff --git a/runtime/inspector_server.rs b/runtime/inspector_server.rs
index 1fb840790..313b5fd51 100644
--- a/runtime/inspector_server.rs
+++ b/runtime/inspector_server.rs
@@ -359,6 +359,9 @@ async fn pump_websocket_messages(
}
}
}
+ else => {
+ break 'pump;
+ }
}
}
}