From 4730faea0cfd3ffbd4e8cf37e41f12f2a35ad600 Mon Sep 17 00:00:00 2001 From: bbassie <17990055+bbassie@users.noreply.github.com> Date: Wed, 9 Sep 2026 14:15:46 +0000 Subject: [PATCH] Cover the message fallback in Link error logging Co-Authored-By: Claude Fable 5.1 --- test/lib/link/link.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/test/lib/link/link.js b/test/lib/link/link.js index 5488c3a3..112ae492 100644 --- a/test/lib/link/link.js +++ b/test/lib/link/link.js @@ -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(