aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2017-10-15 22:40:00 +0200
committerBen Noordhuis <info@bnoordhuis.nl>2017-11-15 12:18:58 +0100
commit9c1b18a59f2514e7bccbd07108b5f1f4e6f7c05e (patch)
treedbd2f587cf62a72c09f5966b8110510eeef8742e
parent6c76140a7a61d0030af5e869b4c0e0b038460b05 (diff)
downloadandroid-node-v8-9c1b18a59f2514e7bccbd07108b5f1f4e6f7c05e.tar.gz
android-node-v8-9c1b18a59f2514e7bccbd07108b5f1f4e6f7c05e.tar.bz2
android-node-v8-9c1b18a59f2514e7bccbd07108b5f1f4e6f7c05e.zip
tty: fix 'resize' event regression
It's not wholly clear what commit introduced the regression but between v8.4.0 and v8.5.0 the 'resize' event stopped getting emitted when the tty was resized. The SIGWINCH event listener apparently was being installed before the support code for `process.on('SIGWINCH', ...)` was. Fix that by moving said support code to real early in the bootstrap process. This commit also seems to fix a Windows-only "write EINVAL" error for reasons even less well-understood... Fixes: https://github.com/nodejs/node/issues/16141 Fixes: https://github.com/nodejs/node/issues/16194 PR-URL: https://github.com/nodejs/node/pull/16225 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com>
-rw-r--r--lib/internal/bootstrap_node.js2
-rw-r--r--test/pseudo-tty/pseudo-tty.status5
-rw-r--r--test/pseudo-tty/test-tty-stdout-resize.js11
-rw-r--r--test/pseudo-tty/test-tty-stdout-resize.out0
4 files changed, 17 insertions, 1 deletions
diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js
index 63020df5d3..d098eab70b 100644
--- a/lib/internal/bootstrap_node.js
+++ b/lib/internal/bootstrap_node.js
@@ -33,6 +33,7 @@
const _process = NativeModule.require('internal/process');
_process.setupConfig(NativeModule._source);
+ _process.setupSignalHandlers();
NativeModule.require('internal/process/warning').setup();
NativeModule.require('internal/process/next_tick').setup();
NativeModule.require('internal/process/stdio').setup();
@@ -55,7 +56,6 @@
_process.setup_cpuUsage();
_process.setupMemoryUsage();
_process.setupKillAndExit();
- _process.setupSignalHandlers();
if (global.__coverage__)
NativeModule.require('internal/process/write-coverage').setup();
diff --git a/test/pseudo-tty/pseudo-tty.status b/test/pseudo-tty/pseudo-tty.status
index 13279019b6..5c8114692d 100644
--- a/test/pseudo-tty/pseudo-tty.status
+++ b/test/pseudo-tty/pseudo-tty.status
@@ -3,3 +3,8 @@ prefix pseudo-tty
[$system==aix]
# being investigated under https://github.com/nodejs/node/issues/9728
test-tty-wrap : FAIL, PASS
+
+[$system==solaris]
+# https://github.com/nodejs/node/pull/16225 - `ioctl(fd, TIOCGWINSZ)` seems
+# to fail with EINVAL on SmartOS when `fd` is a pty from python's pty module.
+test-tty-stdout-resize : FAIL, PASS
diff --git a/test/pseudo-tty/test-tty-stdout-resize.js b/test/pseudo-tty/test-tty-stdout-resize.js
new file mode 100644
index 0000000000..c92db61502
--- /dev/null
+++ b/test/pseudo-tty/test-tty-stdout-resize.js
@@ -0,0 +1,11 @@
+'use strict';
+const { mustCall } = require('../common');
+const { notStrictEqual } = require('assert');
+
+// tty.WriteStream#_refreshSize() only emits the 'resize' event when the
+// window dimensions change. We cannot influence that from the script
+// but we can set the old values to something exceedingly unlikely.
+process.stdout.columns = 9001;
+process.stdout.on('resize', mustCall());
+process.kill(process.pid, 'SIGWINCH');
+setImmediate(mustCall(() => notStrictEqual(process.stdout.columns, 9001)));
diff --git a/test/pseudo-tty/test-tty-stdout-resize.out b/test/pseudo-tty/test-tty-stdout-resize.out
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/pseudo-tty/test-tty-stdout-resize.out