From 2d488e4bfb9ffdfd2d043cc4bba9e6037b4cc24e Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Tue, 8 Oct 2024 12:10:19 +0200 Subject: fix(console): missing cause property on non-error objects (#26061) Fixes https://github.com/denoland/deno/issues/26047 --- ext/console/01_console.js | 4 +++- tests/unit/console_test.ts | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ext/console/01_console.js b/ext/console/01_console.js index 1ca23d5a4..d9acc958a 100644 --- a/ext/console/01_console.js +++ b/ext/console/01_console.js @@ -1301,7 +1301,9 @@ function getKeys(value, showHidden) { ArrayPrototypePushApply(keys, ArrayPrototypeFilter(symbols, filter)); } } - keys = ArrayPrototypeFilter(keys, (key) => key !== "cause"); + if (ObjectPrototypeIsPrototypeOf(ErrorPrototype, value)) { + keys = ArrayPrototypeFilter(keys, (key) => key !== "cause"); + } return keys; } diff --git a/tests/unit/console_test.ts b/tests/unit/console_test.ts index 201d18f00..878d17ae3 100644 --- a/tests/unit/console_test.ts +++ b/tests/unit/console_test.ts @@ -1913,6 +1913,21 @@ Deno.test(function consoleLogWhenCauseIsAssignedShouldNotPrintCauseTwice() { }); }); +Deno.test(function consoleLogCauseNotFilteredOnNonError() { + mockConsole((console, out) => { + const foo = { + a: 1, + b: 2, + cause: 3, + }; + console.log(foo); + + const result = stripAnsiCode(out.toString()); + const expected = "{ a: 1, b: 2, cause: 3 }\n"; + assertEquals(result.trim(), expected.trim()); + }); +}); + // console.log(new Proxy(new RegExp(), {})) Deno.test(function consoleLogShouldNotThrowErrorWhenInputIsProxiedRegExp() { mockConsole((console, out) => { -- cgit v1.2.3