From 3d9bc01734f51657e877e9b6438791f5b6b44984 Mon Sep 17 00:00:00 2001 From: Refael Ackermann Date: Thu, 1 Jun 2017 19:06:07 -0400 Subject: [PATCH] test,async_hooks: stabilize tests on Windows PR-URL: https://github.com/nodejs/node/pull/13381 Reviewed-By: Andreas Madsen --- test/async-hooks/test-emit-before-after.js | 4 +- test/async-hooks/test-graph.signal.js | 5 ++ test/async-hooks/test-signalwrap.js | 4 +- test/async-hooks/test-ttywrap.readstream.js | 56 +++++++++++---------- 4 files changed, 39 insertions(+), 30 deletions(-) diff --git a/test/async-hooks/test-emit-before-after.js b/test/async-hooks/test-emit-before-after.js index 37bbb9eb1c0041..f4757a28876acc 100644 --- a/test/async-hooks/test-emit-before-after.js +++ b/test/async-hooks/test-emit-before-after.js @@ -16,13 +16,13 @@ switch (process.argv[2]) { } const c1 = spawnSync(process.execPath, [__filename, 'test_invalid_async_id']); -assert.strictEqual(c1.stderr.toString().split('\n')[0], +assert.strictEqual(c1.stderr.toString().split(/[\r\n]+/g)[0], 'Error: before(): asyncId or triggerAsyncId is less than ' + 'zero (asyncId: -1, triggerAsyncId: -1)'); assert.strictEqual(c1.status, 1); const c2 = spawnSync(process.execPath, [__filename, 'test_invalid_trigger_id']); -assert.strictEqual(c2.stderr.toString().split('\n')[0], +assert.strictEqual(c2.stderr.toString().split(/[\r\n]+/g)[0], 'Error: before(): asyncId or triggerAsyncId is less than ' + 'zero (asyncId: 1, triggerAsyncId: -1)'); assert.strictEqual(c2.status, 1); diff --git a/test/async-hooks/test-graph.signal.js b/test/async-hooks/test-graph.signal.js index bdc56d9d1c6edc..3facdae0fa266e 100644 --- a/test/async-hooks/test-graph.signal.js +++ b/test/async-hooks/test-graph.signal.js @@ -1,6 +1,11 @@ 'use strict'; const common = require('../common'); +if (common.isWindows) { + common.skip('no signals on Windows'); + return; +} + const initHooks = require('./init-hooks'); const verifyGraph = require('./verify-graph'); const exec = require('child_process').exec; diff --git a/test/async-hooks/test-signalwrap.js b/test/async-hooks/test-signalwrap.js index dad85815d42e71..c2e664af9a567e 100644 --- a/test/async-hooks/test-signalwrap.js +++ b/test/async-hooks/test-signalwrap.js @@ -1,6 +1,8 @@ 'use strict'; - const common = require('../common'); + +if (common.isWindows) return common.skip('no signals in Windows'); + const assert = require('assert'); const initHooks = require('./init-hooks'); const { checkInvocations } = require('./hook-checks'); diff --git a/test/async-hooks/test-ttywrap.readstream.js b/test/async-hooks/test-ttywrap.readstream.js index 70c5bba2308c5e..725176f0887ef6 100644 --- a/test/async-hooks/test-ttywrap.readstream.js +++ b/test/async-hooks/test-ttywrap.readstream.js @@ -1,7 +1,8 @@ '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'); @@ -9,34 +10,35 @@ 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'); +});