--- /dev/null
+function tmp() {}
+process.addListener("SIGINT", tmp);
+process.removeListener("SIGINT", tmp);
+setInterval(function () {
+ process.stdout.write('keep alive\n');
+}, 1000);
--- /dev/null
+require("../common");
+
+var childKilled = false, done = false,
+ spawn = require('child_process').spawn,
+ sys = require("sys"),
+ child;
+
+var join = require('path').join;
+
+child = spawn(process.argv[0], [join(fixturesDir, 'should_exit.js')]);
+child.addListener('exit', function () {
+ if (!done) childKilled = true;
+});
+
+setTimeout(function () {
+ sys.puts("Sending SIGINT");
+ child.kill("SIGINT");
+ setTimeout(function () {
+ sys.puts("Chance has been given to die");
+ done = true;
+ if (!childKilled) {
+ // Cleanup
+ sys.puts("Child did not die on SIGINT, sending SIGTERM");
+ child.kill("SIGTERM");
+ }
+ }, 200);
+}, 200);
+
+process.addListener("exit", function () {
+ assert.ok(childKilled);
+});