aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api/tty.md3
-rw-r--r--lib/tty.js2
-rw-r--r--test/pseudo-tty/test-tty-isatty.js17
-rw-r--r--test/pseudo-tty/test-tty-isatty.out0
4 files changed, 20 insertions, 2 deletions
diff --git a/doc/api/tty.md b/doc/api/tty.md
index 2950eb6db1..baa31ac8f0 100644
--- a/doc/api/tty.md
+++ b/doc/api/tty.md
@@ -123,4 +123,5 @@ added: v0.5.8
* `fd` {number} A numeric file descriptor
The `tty.isatty()` method returns `true` if the given `fd` is associated with
-a TTY and `false` if is not.
+a TTY and `false` if it is not, including whenever `fd` is not a non-negative
+integer.
diff --git a/lib/tty.js b/lib/tty.js
index e8da49fbde..cf020f529d 100644
--- a/lib/tty.js
+++ b/lib/tty.js
@@ -30,7 +30,7 @@ const errors = require('internal/errors');
const readline = require('readline');
exports.isatty = function(fd) {
- return isTTY(fd);
+ return Number.isInteger(fd) && fd >= 0 && isTTY(fd);
};
diff --git a/test/pseudo-tty/test-tty-isatty.js b/test/pseudo-tty/test-tty-isatty.js
new file mode 100644
index 0000000000..3a7b294031
--- /dev/null
+++ b/test/pseudo-tty/test-tty-isatty.js
@@ -0,0 +1,17 @@
+'use strict';
+
+require('../common');
+const { strictEqual } = require('assert');
+const { isatty } = require('tty');
+
+strictEqual(isatty(0), true, 'stdin reported to not be a tty, but it is');
+strictEqual(isatty(1), true, 'stdout reported to not be a tty, but it is');
+strictEqual(isatty(2), true, 'stderr reported to not be a tty, but it is');
+
+strictEqual(isatty(-1), false, '-1 reported to be a tty, but it is not');
+strictEqual(isatty(55555), false, '55555 reported to be a tty, but it is not');
+strictEqual(isatty(1.1), false, '1.1 reported to be a tty, but it is not');
+strictEqual(isatty('1'), false, '\'1\' reported to be a tty, but it is not');
+strictEqual(isatty({}), false, '{} reported to be a tty, but it is not');
+strictEqual(isatty(() => {}), false,
+ '() => {} reported to be a tty, but it is not');
diff --git a/test/pseudo-tty/test-tty-isatty.out b/test/pseudo-tty/test-tty-isatty.out
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/pseudo-tty/test-tty-isatty.out