diff --git a/denops/@denops-private/cli_test.ts b/denops/@denops-private/cli_test.ts index 13594e2d..a88b9290 100644 --- a/denops/@denops-private/cli_test.ts +++ b/denops/@denops-private/cli_test.ts @@ -288,7 +288,7 @@ Deno.test("main()", async (t) => { ); await t.step("and the worker stream is closed", async (t) => { - fakeWorker.onmessage(new MessageEvent("message", { data: null })); + fakeWorker.onmessage!(new MessageEvent("message", { data: null })); await delay(0); await t.step("calls Worker.terminate()", () => { @@ -453,7 +453,7 @@ Deno.test("main()", async (t) => { assertSpyCalls(globalThis_Worker, 1); fakeTcpListener.close(); - fakeWorker.onmessage(new MessageEvent("message", { data: null })); + fakeWorker.onmessage!(new MessageEvent("message", { data: null })); await delay(0); await t.step("calls Worker.terminate()", () => { @@ -557,7 +557,7 @@ Deno.test("main()", async (t) => { await delay(0); await t.step("and the worker stream is closed", async (t) => { - fakeWorker.onmessage(new MessageEvent("message", { data: null })); + fakeWorker.onmessage!(new MessageEvent("message", { data: null })); await delay(0); await t.step("outputs error logs", () => { diff --git a/denops/@denops-private/worker_test.ts b/denops/@denops-private/worker_test.ts index d2009376..9fa0ed96 100644 --- a/denops/@denops-private/worker_test.ts +++ b/denops/@denops-private/worker_test.ts @@ -145,8 +145,13 @@ for (const { host, mode } of matrix) { throw error; }); - await delay(0); - assertEquals(consoleStub.error.firstCall.args, [ + // NOTE: The unhandledrejection event dispatch timing varies across + // platforms and Deno versions. Poll until console.error is called. + const deadline = Date.now() + 5000; + while (!consoleStub.error.firstCall && Date.now() < deadline) { + await delay(10); + } + assertEquals(consoleStub.error.firstCall?.args, [ "Unhandled rejection:", error, ]); diff --git a/tests/denops/testutil/mock_test.ts b/tests/denops/testutil/mock_test.ts index 6a9af175..b5f5bb33 100644 --- a/tests/denops/testutil/mock_test.ts +++ b/tests/denops/testutil/mock_test.ts @@ -24,6 +24,10 @@ type MethodKeyOf = ({ [K in keyof T]: T[K] extends AnyFn ? K : never; })[keyof T]; +type NullableMethodKeyOf = ({ + [K in keyof T]: T[K] extends AnyFn | null ? K : never; +})[keyof T]; + type GetterKeyOf = ({ [K in keyof T]: T[K] extends AnyFn ? never : K; })[keyof T]; @@ -337,7 +341,7 @@ Deno.test("createFakeWorker()", async (t) => { "removeEventListener", "dispatchEvent", "terminate", - ] as const satisfies readonly MethodKeyOf[]; + ] as const satisfies readonly NullableMethodKeyOf[]; for (const key of unimplementedMethods) { await t.step(`.${key}()`, () => { assertThrows(() => (worker[key] as AnyFn)(), Error, "Unimplemented"); diff --git a/tests/denops/testutil/with.ts b/tests/denops/testutil/with.ts index 7ce1d839..ff0a4713 100644 --- a/tests/denops/testutil/with.ts +++ b/tests/denops/testutil/with.ts @@ -56,7 +56,7 @@ export function withVim( "-c", "visual", // Go to Normal mode "-c", - "set columns=9999", // Avoid unwilling output newline + "set columns=9999 shortmess-=T", // Avoid unwilling output newline/truncation ...commands.flatMap((c) => ["-c", c]), ]; return withProcess(cmd, args, { verbose: conf.verbose, ...options });