summaryrefslogtreecommitdiff
path: root/tests/integration/run_tests.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-05-29 09:53:04 -0700
committerGitHub <noreply@github.com>2024-05-29 22:23:04 +0530
commita947c6fbf7c71544687c79716eadbffe4bdedc82 (patch)
tree50807b95951b2aaf6b2126f66cd02e8990fd7bcd /tests/integration/run_tests.rs
parent4f9b23b3664578c2bf48415db246fb21e49abddb (diff)
fix(ext/node): windows cancel stdin read in line mode (#23969)
This patch fixes stdin read hanging on user input when switching tty mode on Windows Fixes #21111 On Windows, when switching from line to raw mode: - Cancel ongoing console read by writing a return keypress to its input buffer. This blocks the main thread until any ongoing read has been cancelled to prevent interference with the screen state. - On the read thread, restore the cursor position to where it was before writing the enter, undoing its effect on the screen state. - Restart reading and notify the main thread.
Diffstat (limited to 'tests/integration/run_tests.rs')
-rw-r--r--tests/integration/run_tests.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/integration/run_tests.rs b/tests/integration/run_tests.rs
index 91370a87c..f7aaa9daf 100644
--- a/tests/integration/run_tests.rs
+++ b/tests/integration/run_tests.rs
@@ -3142,6 +3142,20 @@ itest!(byte_order_mark {
});
#[test]
+#[cfg(windows)]
+fn process_stdin_read_unblock() {
+ TestContext::default()
+ .new_command()
+ .args_vec(["run", "run/process_stdin_unblock.mjs"])
+ .with_pty(|mut console| {
+ console.write_raw("b");
+ console.human_delay();
+ console.write_line_raw("s");
+ console.expect_all(&["1", "1"]);
+ });
+}
+
+#[test]
fn issue9750() {
TestContext::default()
.new_command()