test: fix timing issue in signal test
authorBen Noordhuis <info@bnoordhuis.nl>
Fri, 20 Mar 2015 22:55:37 +0000 (23:55 +0100)
committerBen Noordhuis <info@bnoordhuis.nl>
Sun, 22 Mar 2015 23:55:34 +0000 (00:55 +0100)
Change sequential/test-signal-unregister so it doesn't use fixed
timeouts for sending the signal and expecting the child to quit.

Fixes: https://github.com/iojs/io.js/issues/1223
PR-URL: https://github.com/iojs/io.js/pull/1227
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
test/fixtures/should_exit.js
test/sequential/test-signal-unregister.js

index 6f45a90..b251353 100644 (file)
@@ -4,3 +4,4 @@ process.removeListener('SIGINT', tmp);
 setInterval(function() {
   process.stdout.write('keep alive\n');
 }, 1000);
+process.stdout.write('start\n');
index 3190ac3..c3ab108 100644 (file)
@@ -1,32 +1,12 @@
 var common = require('../common');
 var assert = require('assert');
+var spawn = require('child_process').spawn;
 
-var childKilled = false, done = false,
-    spawn = require('child_process').spawn,
-    util = require('util'),
-    child;
-
-var join = require('path').join;
-
-child = spawn(process.argv[0], [join(common.fixturesDir, 'should_exit.js')]);
-child.on('exit', function() {
-  if (!done) childKilled = true;
-});
-
-setTimeout(function() {
-  console.log('Sending SIGINT');
+var child = spawn(process.argv[0], [common.fixturesDir + '/should_exit.js']);
+child.stdout.once('data', function() {
   child.kill('SIGINT');
-  setTimeout(function() {
-    console.log('Chance has been given to die');
-    done = true;
-    if (!childKilled) {
-      // Cleanup
-      console.log('Child did not die on SIGINT, sending SIGTERM');
-      child.kill('SIGTERM');
-    }
-  }, 200);
-}, 200);
-
-process.on('exit', function() {
-  assert.ok(childKilled);
 });
+child.on('exit', common.mustCall(function(exitCode, signalCode) {
+  assert.equal(exitCode, null);
+  assert.equal(signalCode, 'SIGINT');
+}));