New test-case: signal unregistration
authorJonas Pfenniger <jonas@pfenniger.name>
Sat, 24 Apr 2010 20:27:11 +0000 (22:27 +0200)
committerRyan Dahl <ry@tinyclouds.org>
Mon, 26 Apr 2010 06:14:07 +0000 (23:14 -0700)
The default signal-handler should be restored if no handlers are
assigned.

test/fixtures/should_exit.js [new file with mode: 0644]
test/pummel/test-signal-unregister.js [new file with mode: 0644]

diff --git a/test/fixtures/should_exit.js b/test/fixtures/should_exit.js
new file mode 100644 (file)
index 0000000..826a118
--- /dev/null
@@ -0,0 +1,6 @@
+function tmp() {}
+process.addListener("SIGINT", tmp);
+process.removeListener("SIGINT", tmp);
+setInterval(function () {
+  process.stdout.write('keep alive\n');
+}, 1000);
diff --git a/test/pummel/test-signal-unregister.js b/test/pummel/test-signal-unregister.js
new file mode 100644 (file)
index 0000000..29ce09d
--- /dev/null
@@ -0,0 +1,31 @@
+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);
+});