From 92bf2492cd6b78b1ab26765660d912ee34bb90c6 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Fri, 16 Feb 2018 12:09:54 -0500 Subject: [PATCH] test: move getTTYfd() to common helpers This utility is fairly generic and likely useful for more than one test. PR-URL: https://github.com/nodejs/node/pull/18800 Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell Reviewed-By: Anna Henningsen --- test/common/README.md | 6 ++++++ test/common/index.js | 17 +++++++++++++++++ test/parallel/test-tty-get-color-depth.js | 19 +------------------ 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/test/common/README.md b/test/common/README.md index e0a66e9da0c2c9..7fd36f59852547 100644 --- a/test/common/README.md +++ b/test/common/README.md @@ -679,6 +679,12 @@ The realpath of the testing temporary directory. Deletes and recreates the testing temporary directory. +### getTTYfd() + +Attempts to get a valid TTY file descriptor. Returns `-1` if it fails. + +The TTY file descriptor is assumed to be capable of being writable. + ## WPT Module The wpt.js module is a port of parts of diff --git a/test/common/index.js b/test/common/index.js index b24d2158e7d089..1fc029292abb10 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -775,6 +775,23 @@ exports.crashOnUnhandledRejection = function() { (err) => process.nextTick(() => { throw err; })); }; +exports.getTTYfd = function getTTYfd() { + // Do our best to grab a tty fd. + const tty = require('tty'); + // Don't attempt fd 0 as it is not writable on Windows. + // Ref: ef2861961c3d9e9ed6972e1e84d969683b25cf95 + const ttyFd = [1, 2, 4, 5].find(tty.isatty); + if (ttyFd === undefined) { + try { + return fs.openSync('/dev/tty'); + } catch (e) { + // There aren't any tty fd's available to use. + return -1; + } + } + return ttyFd; +}; + // Hijack stdout and stderr const stdWrite = {}; function hijackStdWritable(name, listener) { diff --git a/test/parallel/test-tty-get-color-depth.js b/test/parallel/test-tty-get-color-depth.js index a4c7ffacd17f82..e68846017175c9 100644 --- a/test/parallel/test-tty-get-color-depth.js +++ b/test/parallel/test-tty-get-color-depth.js @@ -3,26 +3,9 @@ const common = require('../common'); const assert = require('assert').strict; /* eslint-disable no-restricted-properties */ -const { openSync } = require('fs'); -const tty = require('tty'); - const { WriteStream } = require('tty'); -// Do our best to grab a tty fd. -function getTTYfd() { - const ttyFd = [1, 2, 4, 5].find(tty.isatty); - if (ttyFd === undefined) { - try { - return openSync('/dev/tty'); - } catch (e) { - // There aren't any tty fd's available to use. - return -1; - } - } - return ttyFd; -} - -const fd = getTTYfd(); +const fd = common.getTTYfd(); // Give up if we did not find a tty if (fd === -1)