-
Notifications
You must be signed in to change notification settings - Fork 29.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test,async_hooks: stabilize tests on Windows
PR-URL: #13381 Reviewed-By: Andreas Madsen <[email protected]>
- Loading branch information
Showing
4 changed files
with
39 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,44 @@ | ||
'use strict'; | ||
|
||
const common = require('../common'); | ||
const assert = require('assert'); | ||
|
||
// general hook test setup | ||
const tick = require('./tick'); | ||
const initHooks = require('./init-hooks'); | ||
const { checkInvocations } = require('./hook-checks'); | ||
|
||
const hooks = initHooks(); | ||
hooks.enable(); | ||
|
||
const ReadStream = require('tty').ReadStream; | ||
const ttyStream = new ReadStream(0); | ||
|
||
const as = hooks.activitiesOfTypes('TTYWRAP'); | ||
assert.strictEqual(as.length, 1); | ||
const tty = as[0]; | ||
// 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, { init: 1 }, 'when tty created'); | ||
|
||
ttyStream.end(common.mustCall(onend)); | ||
|
||
checkInvocations(tty, { init: 1 }, 'when tty.end() was invoked '); | ||
|
||
function onend() { | ||
tick(2, common.mustCall(() => | ||
checkInvocations( | ||
tty, { init: 1, before: 1, after: 1, destroy: 1 }, | ||
'when tty ended ') | ||
)); | ||
} | ||
|
||
process.on('exit', onexit); | ||
|
||
function onexit() { | ||
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(() => | ||
tick(2, delayedOnCloseHandler) | ||
)); | ||
ttyStream.destroy(); | ||
checkInvocations(tty, checkInitOpts, 'when tty.end() was invoked'); | ||
|
||
process.on('exit', () => { | ||
hooks.disable(); | ||
hooks.sanityCheck('TTYWRAP'); | ||
checkInvocations(tty, { init: 1, before: 1, after: 1, destroy: 1 }, | ||
'when process exits'); | ||
} | ||
checkInvocations(tty, checkEndedOpts, 'when process exits'); | ||
}); |