From ee4cbac52b6d5cab7d638ae936e1189f1556d13e Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 22 Dec 2017 10:21:39 -0800 Subject: [PATCH] test: fix unreliable async-hooks/test-signalwrap Use an interval to keep the event loop open so the test does not exit before receiving all signals fom asynchronous `exec()` calls. PR-URL: https://github.com/nodejs/node/pull/17827 Fixes: https://github.com/nodejs/node/issues/14070 Reviewed-By: Colin Ihrig Reviewed-By: Gibson Fahnestock --- test/async-hooks/test-signalwrap.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/async-hooks/test-signalwrap.js b/test/async-hooks/test-signalwrap.js index fa975ff0178f3c..ae4f41c6a413ba 100644 --- a/test/async-hooks/test-signalwrap.js +++ b/test/async-hooks/test-signalwrap.js @@ -1,7 +1,8 @@ 'use strict'; const common = require('../common'); -if (common.isWindows) return common.skip('no signals in Windows'); +if (common.isWindows) + common.skip('no signals in Windows'); const assert = require('assert'); const initHooks = require('./init-hooks'); @@ -11,6 +12,10 @@ const exec = require('child_process').exec; const hooks = initHooks(); hooks.enable(); + +// Keep the event loop open so process doesn't exit before receiving signals. +const interval = setInterval(() => {}, 9999); + process.on('SIGUSR2', common.mustCall(onsigusr2, 2)); const as = hooks.activitiesOfTypes('SIGNALWRAP'); @@ -66,6 +71,7 @@ function onsigusr2() { } function onsigusr2Again() { + clearInterval(interval); setImmediate(() => { checkInvocations( signal1, { init: 1, before: 2, after: 2, destroy: 1 },