summaryrefslogtreecommitdiff
path: root/test/pseudo-tty/test-tty-window-size.js
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2017-11-11 23:03:57 -0500
committercjihrig <cjihrig@gmail.com>2017-11-14 17:32:45 -0500
commit4b5a8160a4d624b35802616aaa5a79617cd3e8b2 (patch)
tree9162a01eb803f15bcd010b2f6f8cd6f648451b6f /test/pseudo-tty/test-tty-window-size.js
parent8ae4e1cd7b5688b1a719d2104eef0fadfbdcacc9 (diff)
downloadandroid-node-v8-4b5a8160a4d624b35802616aaa5a79617cd3e8b2.tar.gz
android-node-v8-4b5a8160a4d624b35802616aaa5a79617cd3e8b2.tar.bz2
android-node-v8-4b5a8160a4d624b35802616aaa5a79617cd3e8b2.zip
test: add coverage to tty module
PR-URL: https://github.com/nodejs/node/pull/16959 Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'test/pseudo-tty/test-tty-window-size.js')
-rw-r--r--test/pseudo-tty/test-tty-window-size.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/test/pseudo-tty/test-tty-window-size.js b/test/pseudo-tty/test-tty-window-size.js
new file mode 100644
index 0000000000..782b66802e
--- /dev/null
+++ b/test/pseudo-tty/test-tty-window-size.js
@@ -0,0 +1,85 @@
+'use strict';
+const common = require('../common');
+const assert = require('assert');
+const { WriteStream } = require('tty');
+const { TTY } = process.binding('tty_wrap');
+const getWindowSize = TTY.prototype.getWindowSize;
+
+function monkeyPatchGetWindowSize(fn) {
+ TTY.prototype.getWindowSize = function() {
+ TTY.prototype.getWindowSize = getWindowSize;
+ return fn.apply(this, arguments);
+ };
+}
+
+{
+ // tty.WriteStream constructor does not define columns and rows if an error
+ // occurs while retrieving the window size from the handle.
+ monkeyPatchGetWindowSize(function() {
+ return -1;
+ });
+
+ const stream = WriteStream(1);
+
+ assert(stream instanceof WriteStream);
+ assert.strictEqual(stream.columns, undefined);
+ assert.strictEqual(stream.rows, undefined);
+}
+
+{
+ // _refreshSize() emits an error if an error occurs while retrieving the
+ // window size from the handle.
+ const stream = WriteStream(1);
+
+ stream.on('error', common.mustCall((err) => {
+ assert.strictEqual(err.syscall, 'getWindowSize');
+ }));
+
+ monkeyPatchGetWindowSize(function() {
+ return -1;
+ });
+
+ stream._refreshSize();
+}
+
+{
+ // _refreshSize() emits a 'resize' event when the window size changes.
+ monkeyPatchGetWindowSize(function(size) {
+ size[0] = 80;
+ size[1] = 24;
+ return 0;
+ });
+
+ const stream = WriteStream(1);
+
+ stream.on('resize', common.mustCall(() => {
+ assert.strictEqual(stream.columns, 82);
+ assert.strictEqual(stream.rows, 26);
+ }));
+
+ assert.strictEqual(stream.columns, 80);
+ assert.strictEqual(stream.rows, 24);
+
+ monkeyPatchGetWindowSize(function(size) {
+ size[0] = 82;
+ size[1] = 26;
+ return 0;
+ });
+
+ stream._refreshSize();
+}
+
+{
+ // WriteStream.prototype.getWindowSize() returns the current columns and rows.
+ monkeyPatchGetWindowSize(function(size) {
+ size[0] = 99;
+ size[1] = 32;
+ return 0;
+ });
+
+ const stream = WriteStream(1);
+
+ assert.strictEqual(stream.columns, 99);
+ assert.strictEqual(stream.rows, 32);
+ assert.deepStrictEqual(stream.getWindowSize(), [99, 32]);
+}