summaryrefslogtreecommitdiff
path: root/cli/tests/integration/watcher_tests.rs
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2023-04-12 23:51:04 +0100
committerGitHub <noreply@github.com>2023-04-13 00:51:04 +0200
commitd97f9d22b3873b89019a0fea67b83ed7cac8bd69 (patch)
tree4133837dd7dcb509e4a08158bf36ea5b38a93a5a /cli/tests/integration/watcher_tests.rs
parent17e4782140a602043c4f92e643c1908c521ae017 (diff)
fix(test): add process sigint handler for --watch (#18678)
Fixes #18676.
Diffstat (limited to 'cli/tests/integration/watcher_tests.rs')
-rw-r--r--cli/tests/integration/watcher_tests.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/cli/tests/integration/watcher_tests.rs b/cli/tests/integration/watcher_tests.rs
index 58b703701..407a63f6c 100644
--- a/cli/tests/integration/watcher_tests.rs
+++ b/cli/tests/integration/watcher_tests.rs
@@ -1122,6 +1122,35 @@ fn test_watch_unload_handler_error_on_drop() {
check_alive_then_kill(child);
}
+#[cfg(unix)]
+#[test]
+fn test_watch_sigint() {
+ use nix::sys::signal;
+ use nix::sys::signal::Signal;
+ use nix::unistd::Pid;
+
+ let t = TempDir::new();
+ let file_to_watch = t.path().join("file_to_watch.js");
+ write(&file_to_watch, r#"Deno.test("foo", () => {});"#).unwrap();
+ let mut child = util::deno_cmd()
+ .current_dir(util::testdata_path())
+ .arg("test")
+ .arg("--watch")
+ .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("Test started", &mut stderr_lines);
+ wait_contains("ok | 1 passed | 0 failed", &mut stdout_lines);
+ wait_contains("Test finished", &mut stderr_lines);
+ signal::kill(Pid::from_raw(child.id() as i32), Signal::SIGINT).unwrap();
+ let exit_status = child.wait().unwrap();
+ assert_eq!(exit_status.code(), Some(130));
+}
+
// Regression test for https://github.com/denoland/deno/issues/15465.
#[test]
fn run_watch_reload_once() {