Skip to content

Commit

Permalink
test,async_hooks: skip whether TTY is available
Browse files Browse the repository at this point in the history
If TTY isn't available then the test will always fail. Also use the
already available process.stdin instead of opening another ReadStream.

PR-URL: #13991
Fixes: #13984
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Refael Ackermann <[email protected]>
  • Loading branch information
trevnorris authored and Fishrock123 committed Jul 19, 2017
1 parent e5e8291 commit fc74f0e
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions test/async-hooks/test-ttywrap.readstream.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
'use strict';

const common = require('../common');
const assert = require('assert');

Expand All @@ -10,31 +11,33 @@ const { checkInvocations } = require('./hook-checks');
const hooks = initHooks();
hooks.enable();

if (!process.stdin.isTTY)
return common.skip('no valid readable TTY available');

// test specific setup
const { ReadStream } = require('tty');
const checkInitOpts = { init: 1 };
const checkEndedOpts = { init: 1, before: 1, after: 1, destroy: 1 };

// test code
//
// listen to stdin except on Windows
const targetFD = common.isWindows ? 1 : 0;
const ttyStream = new ReadStream(targetFD);
const activities = hooks.activitiesOfTypes('TTYWRAP');
assert.strictEqual(activities.length, 1);

const tty = activities[0];
assert.strictEqual(tty.type, 'TTYWRAP');
assert.strictEqual(typeof tty.uid, 'number');
assert.strictEqual(typeof tty.triggerAsyncId, 'number');
checkInvocations(tty, checkInitOpts, 'when tty created');

const delayedOnCloseHandler = common.mustCall(() => {
checkInvocations(tty, checkEndedOpts, 'when tty ended');
});
ttyStream.on('error', (err) => assert.fail(err));
ttyStream.on('close', common.mustCall(() =>
process.stdin.on('error', (err) => assert.fail(err));
process.stdin.on('close', common.mustCall(() =>
tick(2, delayedOnCloseHandler)
));
ttyStream.destroy();
process.stdin.destroy();
checkInvocations(tty, checkInitOpts, 'when tty.end() was invoked');

process.on('exit', () => {
Expand Down

0 comments on commit fc74f0e

Please sign in to comment.