summaryrefslogtreecommitdiff
path: root/cli/tests/integration/watcher_tests.rs
diff options
context:
space:
mode:
authorYusuke Tanaka <yusuktan@maguro.dev>2022-11-25 02:38:09 +0900
committerGitHub <noreply@github.com>2022-11-24 18:38:09 +0100
commitfd023cf7937e67dfde5482d34ebc60839eb7397c (patch)
tree816c976254071ecd9c15a35ad6b68d78066428d1 /cli/tests/integration/watcher_tests.rs
parentb6f49cf4790926df125add2329611a8eff8db9da (diff)
fix(ext/flash): graceful server startup/shutdown with unsettled promises in mind (#16616)
This PR resets the revert commit made by #16610, bringing back #16383 which attempts to fix the issue happening when we use the flash server with `--watch` option enabled. Also, some code changes are made to pass the regression test added in #16610.
Diffstat (limited to 'cli/tests/integration/watcher_tests.rs')
-rw-r--r--cli/tests/integration/watcher_tests.rs65
1 files changed, 65 insertions, 0 deletions
diff --git a/cli/tests/integration/watcher_tests.rs b/cli/tests/integration/watcher_tests.rs
index 27a1bb620..cd3dc40cf 100644
--- a/cli/tests/integration/watcher_tests.rs
+++ b/cli/tests/integration/watcher_tests.rs
@@ -1167,3 +1167,68 @@ fn run_watch_dynamic_imports() {
check_alive_then_kill(child);
}
+
+// https://github.com/denoland/deno/issues/16267
+#[test]
+fn run_watch_flash() {
+ let filename = "watch_flash.js";
+ let t = TempDir::new();
+ let file_to_watch = t.path().join(filename);
+ write(
+ &file_to_watch,
+ r#"
+ console.log("Starting flash server...");
+ Deno.serve({
+ onListen() {
+ console.error("First server is listening");
+ },
+ handler: () => {},
+ port: 4601,
+ });
+ "#,
+ )
+ .unwrap();
+
+ let mut child = util::deno_cmd()
+ .current_dir(t.path())
+ .arg("run")
+ .arg("--watch")
+ .arg("--unstable")
+ .arg("--allow-net")
+ .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("Starting flash server...", &mut stdout_lines);
+ wait_for(
+ |m| m.contains("Watching paths") && m.contains(filename),
+ &mut stderr_lines,
+ );
+
+ write(
+ &file_to_watch,
+ r#"
+ console.log("Restarting flash server...");
+ Deno.serve({
+ onListen() {
+ console.error("Second server is listening");
+ },
+ handler: () => {},
+ port: 4601,
+ });
+ "#,
+ )
+ .unwrap();
+
+ wait_contains("File change detected! Restarting!", &mut stderr_lines);
+ wait_contains("Restarting flash server...", &mut stdout_lines);
+ wait_contains("Second server is listening", &mut stderr_lines);
+
+ check_alive_then_kill(child);
+}