mirror of https://github.com/lukechilds/node.git
Browse Source
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
committed by
Refael Ackermann
1 changed files with 31 additions and 48 deletions
@ -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…
Reference in new issue