From cba9c099c81558ede0fd3553157162f6f4b92b75 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 6 Apr 2025 23:27:10 +1200 Subject: [PATCH] Tests/LibJS: Split await Promise constructor observability test into two This makes it easier to figure out the expected behaviour of each of the tests since it was difficult to determine what each case was aiming to test. --- Libraries/LibJS/Tests/syntax/async-await.js | 27 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/Libraries/LibJS/Tests/syntax/async-await.js b/Libraries/LibJS/Tests/syntax/async-await.js index 565e9731b01..1d5c4bcb486 100644 --- a/Libraries/LibJS/Tests/syntax/async-await.js +++ b/Libraries/LibJS/Tests/syntax/async-await.js @@ -257,7 +257,7 @@ describe("await thenables", () => { }); }); -describe("await observably looks up constructor of Promise objects", () => { +describe("await observably looks up constructor of Promise objects increasing call count", () => { let calls = 0; function makeConstructorObservable(promise) { Object.defineProperty(promise, "constructor", { @@ -276,9 +276,6 @@ describe("await observably looks up constructor of Promise objects", () => { resolve(); }) ); - await makeConstructorObservable(new Boolean(true)); - await makeConstructorObservable({}); - await makeConstructorObservable(new Number(2)); try { await makeConstructorObservable(Promise.reject(3)); } catch {} @@ -292,3 +289,25 @@ describe("await observably looks up constructor of Promise objects", () => { runQueuedPromiseJobs(); expect(calls).toBe(4); }); + +describe("await observably looks up constructor of Promise objects not increasing call count", () => { + let calls = 0; + function makeConstructorObservable(promise) { + Object.defineProperty(promise, "constructor", { + get() { + calls++; + return Promise; + }, + }); + return promise; + } + + async function test() { + await makeConstructorObservable(new Boolean(true)); + await makeConstructorObservable({}); + await makeConstructorObservable(new Number(2)); + } + test(); + runQueuedPromiseJobs(); + expect(calls).toBe(0); +});