Skip to content

Commit

Permalink
test,async_hooks: stabilize tests on Windows
Browse files Browse the repository at this point in the history
PR-URL: #13381
Reviewed-By: Andreas Madsen <[email protected]>
  • Loading branch information
refack authored and addaleax committed Jul 18, 2017
1 parent 09eb588 commit 3d9bc01
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 30 deletions.
4 changes: 2 additions & 2 deletions test/async-hooks/test-emit-before-after.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
5 changes: 5 additions & 0 deletions test/async-hooks/test-graph.signal.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
4 changes: 3 additions & 1 deletion test/async-hooks/test-signalwrap.js
Original file line number Diff line number Diff line change
@@ -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');
Expand Down
56 changes: 29 additions & 27 deletions test/async-hooks/test-ttywrap.readstream.js
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');
});

0 comments on commit 3d9bc01

Please sign in to comment.