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 <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
  • Loading branch information
trevnorris authored and addaleax committed Jul 18, 2017
1 parent b1eb6d5 commit 1fc5c29
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 1fc5c29

Please sign in to comment.