Cover the message fallback in Link error logging

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bbassieandClaude Fable 5.1 committed 2026-09-09 14:15:46 +00:00
1 parent dc129b2fad
commit 4730faea0c
1 file changed
+35
+35
View File
@@ -432,6 +432,23 @@ describe("lib/link/link", function() {
));
assert(logged[0].includes('"message": "must be number"'));
});
it("should fall back to message when event handler error has no stack", async function() {
let logged = [];
const originalError = lib.logger.error;
lib.logger.error = msg => { logged.push(msg); };
try {
testLink.handle(SimpleEvent, async () => {
let err = new Error("no stack");
err.stack = undefined;
throw err;
});
testConnector.emit("message", new lib.MessageEvent(1, dst, src, "SimpleEvent"));
await new Promise(resolve => setImmediate(resolve));
} finally {
lib.logger.error = originalError;
}
assert.deepEqual(logged, ["Unexpected error handling SimpleEvent:\nno stack"]);
});
it("should throw on unknown type", function() {
assert.throws(
() => testLink.handle({ name: "Bad", type: "bad" }),
@@ -634,6 +651,24 @@ describe("lib/link/link", function() {
));
assert(logged[0].includes('"message": "must be number"'));
});
it("should fall back to message when snoop handler error has no stack", async function() {
let logged = [];
const originalError = lib.logger.error;
lib.logger.error = msg => { logged.push(msg); };
try {
testLink.handle(SimpleEvent, async () => {});
testLink.snoopEvent(SimpleEvent, async () => {
let err = new Error("no stack");
err.stack = undefined;
throw err;
});
testConnector.emit("message", new lib.MessageEvent(1, dst, src, "SimpleEvent"));
await new Promise(resolve => setImmediate(resolve));
} finally {
lib.logger.error = originalError;
}
assert.deepEqual(logged, ["Unexpected error snooping SimpleEvent:\nno stack"]);
});
it("should throw on double registration", function() {
testLink.snoopEvent(SimpleEvent);
assert.throws(