wavelength_server/websocket_server/node_modules/node-cleanup/tests/multiple.js

359 lines
8.6 KiB
JavaScript

// tests in which spawned child installs multiple cleanup handlers
var t = require('tap');
var lib = require('./lib/library');
t.test("multiple handlers: normal exit", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: null,
messages2: null,
return1: true,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
// no signal
}, {
exitReason: 0,
stdout: "cleanup1 cleanup2",
stderr: ""
});
});
t.test("multiple handlers: uncaught exception - custom messages", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
uncaughtException: "Not the surprise you're looking for."
},
messages2: {
uncaughtException: "Look! A surprise!"
},
return1: true,
return2: true,
exception: true,
uninstall: false
}, function (childPID) {
// no signal
}, {
exitReason: 1,
stdout: "cleanup1 cleanup2",
stderr: /^Look! A surprise!/
});
});
t.test("multiple handlers: uncaught exception - removed message",
function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
uncaughtException: "Not the surprise you're looking for."
},
messages2: {
uncaughtException: ""
},
return1: true,
return2: true,
exception: true,
uninstall: false
}, function (childPID) {
// no signal
}, {
exitReason: 1,
stdout: "cleanup1 cleanup2",
stderr: /tests[\/\\]bin[\/\\]stackable.js/
});
}
);
t.test("multiple handlers: uncaught exception - added message",
function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
ctrl_C: "{^C}}"
},
messages2: {
uncaughtException: "Oops!"
},
return1: true,
return2: true,
exception: true,
uninstall: false
}, function (childPID) {
// no signal
}, {
exitReason: 1,
stdout: "cleanup1 cleanup2",
stderr: /^Oops!/
});
}
);
t.test("multiple handlers: uncaught exception - no message", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: null,
messages2: null,
return1: true,
return2: true,
exception: true,
uninstall: false
}, function (childPID) {
// no signal
}, {
exitReason: 1,
stdout: "cleanup1 cleanup2",
stderr: /tests[\/\\]bin[\/\\]stackable.js/
});
});
t.test("multiple handlers: child SIGINT - both heeded, custom messages",
function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
ctrl_C: "{^C1}"
},
messages2: {
ctrl_C: "{^C2}"
},
return1: true,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGINT');
}, {
exitReason: 'SIGINT',
stdout: "cleanup1 cleanup2",
stderr: "{^C2}\n"
});
}
);
t.test("multiple handlers: child SIGINT - first heeded, custom messages",
function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
ctrl_C: "{^C1}"
},
messages2: {
ctrl_C: "{^C2}"
},
return1: true,
return2: false,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGINT');
}, {
exitReason: 0,
stdout: "cleanup1 cleanup2",
stderr: ""
});
}
);
t.test("multiple handlers: child SIGINT - second heeded, custom messages",
function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
ctrl_C: "{^C1}"
},
messages2: {
ctrl_C: "{^C2}"
},
return1: false,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGINT');
}, {
exitReason: 0,
stdout: "cleanup1 cleanup2",
stderr: ""
});
}
);
t.test("multiple handlers: child SIGINT - removed message", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
ctrl_C: "{^C1}"
},
messages2: {
ctrl_C: ""
},
return1: true,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGINT');
}, {
exitReason: 'SIGINT',
stdout: "cleanup1 cleanup2",
stderr: ""
});
});
t.test("multiple handlers: child SIGINT - added message", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
uncaughtException: "Oops!"
},
messages2: {
ctrl_C: "{^C1}"
},
return1: true,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGINT');
}, {
exitReason: 'SIGINT',
stdout: "cleanup1 cleanup2",
stderr: "{^C1}\n"
});
});
t.test("multiple handlers: child SIGQUIT", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: null,
messages2: null,
return1: true,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGQUIT');
}, {
exitReason: 'SIGQUIT',
stdout: "cleanup1 cleanup2",
stderr: ""
});
});
t.test("multiple handlers: child SIGTERM", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: null,
messages2: null,
return1: true,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGTERM');
}, {
exitReason: 'SIGTERM',
stdout: "cleanup1 cleanup2",
stderr: ""
});
});
t.test("multiple handlers: child SIGKILL", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: null,
messages2: null,
return1: true,
return2: true,
exception: false,
uninstall: false
}, function (childPID) {
process.kill(childPID, 'SIGKILL');
}, {
exitReason: 'SIGKILL',
stdout: "",
stderr: ""
});
});
t.test("multiple handlers/uninstall: normal child exit", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: null,
messages2: null,
return1: true,
return2: true,
exception: false,
uninstall: true
}, function (childPID) {
// no signal
}, {
exitReason: 0,
stdout: "",
stderr: ""
});
});
t.test("multiple handlers/uninstall: uncaught exception", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
uncaughtException: "Shouldn't show."
},
messages2: {
uncaughtException: "Also shouldn't show."
},
return1: true,
return2: true,
exception: true,
uninstall: true
}, function (childPID) {
// no signal
}, {
exitReason: 1,
stdout: "",
stderr: /tests[\/\\]bin[\/\\]stackable.js/
});
});
t.test("multiple handlers/uninstall: child SIGINT", function (t) {
lib.test(t, {
child: 'stackable',
handlers: 2,
messages1: {
ctrl_C: "{^C1}"
},
messages2: {
ctrl_C: "{^C2}"
},
return1: true,
return2: true,
exception: false,
uninstall: true
}, function (childPID) {
process.kill(childPID, 'SIGINT');
}, {
exitReason: 'SIGINT',
stdout: "",
stderr: ""
});
});