diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2017-10-15 22:40:00 +0200 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2017-11-15 12:18:58 +0100 |
commit | 9c1b18a59f2514e7bccbd07108b5f1f4e6f7c05e (patch) | |
tree | dbd2f587cf62a72c09f5966b8110510eeef8742e | |
parent | 6c76140a7a61d0030af5e869b4c0e0b038460b05 (diff) | |
download | android-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.js | 2 | ||||
-rw-r--r-- | test/pseudo-tty/pseudo-tty.status | 5 | ||||
-rw-r--r-- | test/pseudo-tty/test-tty-stdout-resize.js | 11 | ||||
-rw-r--r-- | test/pseudo-tty/test-tty-stdout-resize.out | 0 |
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 |