Browse Source

test,async_hooks: match test-ttywrap.readstream

Match changes made to test-ttywrap.readstream for consistency.

PR-URL: https://github.com/nodejs/node/pull/13991
Fixes: https://github.com/nodejs/node/issues/13984
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
v6
Trevor Norris 8 years ago
committed by Refael Ackermann
parent
commit
3b4010be31
No known key found for this signature in database GPG Key ID: CD704BD80FDDDB64
  1. 75
      test/async-hooks/test-ttywrap.writestream.js

75
test/async-hooks/test-ttywrap.writestream.js

@ -1,64 +1,47 @@
'use strict'; 'use strict';
const common = require('../common'); const common = require('../common');
const tty_fd = common.getTTYfd();
if (tty_fd < 0)
common.skip('no valid TTY fd available');
const assert = require('assert'); const assert = require('assert');
// general hook test setup
const tick = require('./tick'); const tick = require('./tick');
const initHooks = require('./init-hooks'); const initHooks = require('./init-hooks');
const { checkInvocations } = require('./hook-checks'); const { checkInvocations } = require('./hook-checks');
const ttyStream = (() => {
try {
return new (require('tty').WriteStream)(tty_fd);
} catch (e) {
return null;
}
})();
if (ttyStream === null)
common.skip('no valid TTY fd available');
const hooks = initHooks(); const hooks = initHooks();
hooks.enable(); hooks.enable();
const as = hooks.activitiesOfTypes('TTYWRAP'); if (!process.stdout.isTTY)
assert.strictEqual(as.length, 1); return common.skip('no valid writable TTY available');
const tty = as[0];
assert.strictEqual(tty.type, 'TTYWRAP');
assert.strictEqual(typeof tty.uid, 'number');
assert.strictEqual(typeof tty.triggerAsyncId, 'number');
checkInvocations(tty, { init: 1 }, 'when tty created');
ttyStream // test specific setup
.on('finish', common.mustCall(onfinish)) const checkInitOpts = { init: 1 };
.end(common.mustCall(onend)); const checkEndedOpts = { init: 1, before: 1, after: 1, destroy: 1 };
checkInvocations(tty, { init: 1 }, 'when tty.end() was invoked '); // test code
//
// listen to stdin except on Windows
const activities = hooks.activitiesOfTypes('TTYWRAP');
assert.strictEqual(activities.length, 1);
function onend() { const tty = activities[0];
tick(2, common.mustCall(() => assert.strictEqual(tty.type, 'TTYWRAP');
checkInvocations( assert.strictEqual(typeof tty.uid, 'number');
tty, { init: 1, before: 1, after: 1, destroy: 1 }, assert.strictEqual(typeof tty.triggerAsyncId, 'number');
'when tty ended ') checkInvocations(tty, checkInitOpts, 'when tty created');
));
} const delayedOnCloseHandler = common.mustCall(() => {
checkInvocations(tty, checkEndedOpts, 'when tty ended');
function onfinish() { });
tick(2, common.mustCall(() => process.stdout.on('error', (err) => assert.fail(err));
checkInvocations( process.stdout.on('close', common.mustCall(() =>
tty, { init: 1, before: 1, after: 1, destroy: 1 }, tick(2, delayedOnCloseHandler)
'when tty ended ')
)); ));
} process.stdout.destroy();
checkInvocations(tty, checkInitOpts, 'when tty.end() was invoked');
process.on('exit', onexit);
function onexit() { process.on('exit', () => {
hooks.disable(); hooks.disable();
hooks.sanityCheck('TTYWRAP'); hooks.sanityCheck('TTYWRAP');
checkInvocations(tty, { init: 1, before: 1, after: 1, destroy: 1 }, checkInvocations(tty, checkEndedOpts, 'when process exits');
'when process exits'); });
}

Loading…
Cancel
Save