From 346560d7c8df3404b8bae89d95b32b377e3ad783 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Wed, 5 May 2021 15:54:39 +0100 Subject: [PATCH] LibJS/Tests: Use hasOwnProperty() for duplicate test check The current way of doing this would also traverse the prototype chain, and therefore yield false positive results for keys like "toString". --- .../Array/Array.prototype-generic-functions.js | 3 +-- Userland/Libraries/LibJS/Tests/test-common.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype-generic-functions.js b/Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype-generic-functions.js index a8afde0ea3..7121d6c18d 100644 --- a/Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype-generic-functions.js +++ b/Userland/Libraries/LibJS/Tests/builtins/Array/Array.prototype-generic-functions.js @@ -53,8 +53,7 @@ describe("ability to work with generic non-array objects", () => { ); }); - // FIXME: test-js asserts when this is just called "toString" ಠ_ಠ - test("toString (FIXME)", () => { + test("toString", () => { expect(Array.prototype.toString.call({})).toBe("[object Object]"); expect(Array.prototype.toString.call({ join: "foo" })).toBe("[object Object]"); expect(Array.prototype.toString.call({ join: () => "foo" })).toBe("foo"); diff --git a/Userland/Libraries/LibJS/Tests/test-common.js b/Userland/Libraries/LibJS/Tests/test-common.js index 9cec16a2e6..271dcd4363 100644 --- a/Userland/Libraries/LibJS/Tests/test-common.js +++ b/Userland/Libraries/LibJS/Tests/test-common.js @@ -431,7 +431,7 @@ class ExpectationError extends Error { if (!__TestResults__[suiteMessage]) __TestResults__[suiteMessage] = {}; const suite = __TestResults__[suiteMessage]; - if (suite[message]) { + if (Object.prototype.hasOwnProperty.call(suite, message)) { suite[message] = { result: "fail", details: "Another test with the same message did already run", @@ -459,7 +459,13 @@ class ExpectationError extends Error { if (!__TestResults__[suiteMessage]) __TestResults__[suiteMessage] = {}; const suite = __TestResults__[suiteMessage]; - if (suite[message]) throw new Error("Duplicate test name: " + message); + if (Object.prototype.hasOwnProperty.call(suite, message)) { + suite[message] = { + result: "fail", + details: "Another test with the same message did already run", + }; + return; + } suite[message] = { result: "skip",