From 2ac2906b2b6b998a3369595716e3a8b533089d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 22 Mar 2023 15:19:11 +0100 Subject: [PATCH] test: ignore fetchWithInvalidContentLength and fetchConnectionError on Windows (#18351) https://github.com/denoland/deno/issues/18350 --- cli/tests/unit/fetch_test.ts | 83 ++++++++++++++---------------------- 1 file changed, 33 insertions(+), 50 deletions(-) diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts index 59489a726d..bafb23c2a9 100644 --- a/cli/tests/unit/fetch_test.ts +++ b/cli/tests/unit/fetch_test.ts @@ -54,30 +54,11 @@ function findClosedPortInRange( ); } -function flakyTest( - fn: (t: Deno.TestContext) => Promise, -) { - async function wrapperFn(t: Deno.TestContext) { - let lastError; - - for (let i = 0; i < 3; i++) { - try { - await fn(t); - return; - } catch (e) { - lastError = e; - } - } - - throw lastError; - } - Object.defineProperty(wrapperFn, "name", { value: fn.name }); - return wrapperFn; -} - Deno.test( - { permissions: { net: true } }, - flakyTest(async function fetchConnectionError() { + // TODO(bartlomieju): reenable this test + // https://github.com/denoland/deno/issues/18350 + { ignore: Deno.build.os === "windows", permissions: { net: true } }, + async function fetchConnectionError() { const port = findClosedPortInRange(4000, 9999); await assertRejects( async () => { @@ -86,7 +67,7 @@ Deno.test( TypeError, "error trying to connect", ); - }), + }, ); Deno.test( @@ -1697,38 +1678,38 @@ function invalidServer(addr: string, body: Uint8Array): Deno.Listener { Deno.test( { permissions: { net: true } }, - flakyTest( - async function fetchWithInvalidContentLengthAndTransferEncoding(): Promise< - void - > { - const addr = "127.0.0.1:4516"; - const data = "a".repeat(10 << 10); + async function fetchWithInvalidContentLengthAndTransferEncoding(): Promise< + void + > { + const addr = "127.0.0.1:4516"; + const data = "a".repeat(10 << 10); - const body = new TextEncoder().encode( - `HTTP/1.1 200 OK\r\nContent-Length: ${ - Math.round(data.length * 2) - }\r\nTransfer-Encoding: chunked\r\n\r\n${ - data.length.toString(16) - }\r\n${data}\r\n0\r\n\r\n`, - ); + const body = new TextEncoder().encode( + `HTTP/1.1 200 OK\r\nContent-Length: ${ + Math.round(data.length * 2) + }\r\nTransfer-Encoding: chunked\r\n\r\n${ + data.length.toString(16) + }\r\n${data}\r\n0\r\n\r\n`, + ); - // if transfer-encoding is sent, content-length is ignored - // even if it has an invalid value (content-length > totalLength) - const listener = invalidServer(addr, body); - const response = await fetch(`http://${addr}/`); + // if transfer-encoding is sent, content-length is ignored + // even if it has an invalid value (content-length > totalLength) + const listener = invalidServer(addr, body); + const response = await fetch(`http://${addr}/`); - const res = await response.arrayBuffer(); - const buf = new TextEncoder().encode(data); - assertEquals(res.byteLength, buf.byteLength); - assertEquals(new Uint8Array(res), buf); + const res = await response.arrayBuffer(); + const buf = new TextEncoder().encode(data); + assertEquals(res.byteLength, buf.byteLength); + assertEquals(new Uint8Array(res), buf); - listener.close(); - }, - ), + listener.close(); + }, ); Deno.test( - { permissions: { net: true } }, + // TODO(bartlomieju): reenable this test + // https://github.com/denoland/deno/issues/18350 + { ignore: Deno.build.os === "windows", permissions: { net: true } }, async function fetchWithInvalidContentLength(): Promise< void > { @@ -1867,7 +1848,9 @@ Deno.test( ); Deno.test( - { permissions: { net: true } }, + // TODO(bartlomieju): reenable this test + // https://github.com/denoland/deno/issues/18350 + { ignore: Deno.build.os === "windows", permissions: { net: true } }, async function fetchRequestBodyErrorCatchable() { const listener = Deno.listen({ hostname: "127.0.0.1", port: 4514 }); const server = (async () => {