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 <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
parent
0089860757
commit
92bf2492cd
@ -679,6 +679,12 @@ The realpath of the testing temporary directory.
|
|||||||
|
|
||||||
Deletes and recreates 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
|
## WPT Module
|
||||||
|
|
||||||
The wpt.js module is a port of parts of
|
The wpt.js module is a port of parts of
|
||||||
|
@ -775,6 +775,23 @@ exports.crashOnUnhandledRejection = function() {
|
|||||||
(err) => process.nextTick(() => { throw err; }));
|
(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
|
// Hijack stdout and stderr
|
||||||
const stdWrite = {};
|
const stdWrite = {};
|
||||||
function hijackStdWritable(name, listener) {
|
function hijackStdWritable(name, listener) {
|
||||||
|
@ -3,26 +3,9 @@
|
|||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
const assert = require('assert').strict;
|
const assert = require('assert').strict;
|
||||||
/* eslint-disable no-restricted-properties */
|
/* eslint-disable no-restricted-properties */
|
||||||
const { openSync } = require('fs');
|
|
||||||
const tty = require('tty');
|
|
||||||
|
|
||||||
const { WriteStream } = require('tty');
|
const { WriteStream } = require('tty');
|
||||||
|
|
||||||
// Do our best to grab a tty fd.
|
const fd = common.getTTYfd();
|
||||||
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();
|
|
||||||
|
|
||||||
// Give up if we did not find a tty
|
// Give up if we did not find a tty
|
||||||
if (fd === -1)
|
if (fd === -1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user