From 63a12753780b6330d7ca6b6e80f1dde9b07bd973 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Sun, 27 Jun 2021 22:17:05 +0100 Subject: [PATCH] LibJS/Tests: Improve valueToString() output This regressed recently and would only output a bunch of '[object Foo]', the reason being that String(value) failed in some cases - which is easily fixed by trying that first and using Object.prototype.toString() as a fallback in the case of an exception :^) --- Userland/Libraries/LibJS/Tests/test-common.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibJS/Tests/test-common.js b/Userland/Libraries/LibJS/Tests/test-common.js index 3c0eec4f11..9141fbe53c 100644 --- a/Userland/Libraries/LibJS/Tests/test-common.js +++ b/Userland/Libraries/LibJS/Tests/test-common.js @@ -51,7 +51,14 @@ class ExpectationError extends Error { return true; }; - const valueToString = value => Object.prototype.toString.call(value); + const valueToString = value => { + try { + return String(value); + } catch { + // e.g for objects without a prototype, the above throws. + return Object.prototype.toString.call(value); + } + }; class Expector { constructor(target, inverted) {