mirror of
https://github.com/denoland/deno.git
synced 2025-01-03 04:48:52 -05:00
test: mark two unit tests as flaky (#18344)
Temporarily marking two "fetch" tests as flaky, since they've been failing on CI for the past 24h.
This commit is contained in:
parent
5804d7434e
commit
aa7f02946d
1 changed files with 47 additions and 24 deletions
|
@ -54,9 +54,30 @@ function findClosedPortInRange(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function flakyTest(
|
||||||
|
fn: (t: Deno.TestContext) => Promise<void>,
|
||||||
|
) {
|
||||||
|
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(
|
Deno.test(
|
||||||
{ permissions: { net: true } },
|
{ permissions: { net: true } },
|
||||||
async function fetchConnectionError() {
|
flakyTest(async function fetchConnectionError() {
|
||||||
const port = findClosedPortInRange(4000, 9999);
|
const port = findClosedPortInRange(4000, 9999);
|
||||||
await assertRejects(
|
await assertRejects(
|
||||||
async () => {
|
async () => {
|
||||||
|
@ -65,7 +86,7 @@ Deno.test(
|
||||||
TypeError,
|
TypeError,
|
||||||
"error trying to connect",
|
"error trying to connect",
|
||||||
);
|
);
|
||||||
},
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
Deno.test(
|
Deno.test(
|
||||||
|
@ -1676,32 +1697,34 @@ function invalidServer(addr: string, body: Uint8Array): Deno.Listener {
|
||||||
|
|
||||||
Deno.test(
|
Deno.test(
|
||||||
{ permissions: { net: true } },
|
{ permissions: { net: true } },
|
||||||
async function fetchWithInvalidContentLengthAndTransferEncoding(): Promise<
|
flakyTest(
|
||||||
void
|
async function fetchWithInvalidContentLengthAndTransferEncoding(): Promise<
|
||||||
> {
|
void
|
||||||
const addr = "127.0.0.1:4516";
|
> {
|
||||||
const data = "a".repeat(10 << 10);
|
const addr = "127.0.0.1:4516";
|
||||||
|
const data = "a".repeat(10 << 10);
|
||||||
|
|
||||||
const body = new TextEncoder().encode(
|
const body = new TextEncoder().encode(
|
||||||
`HTTP/1.1 200 OK\r\nContent-Length: ${
|
`HTTP/1.1 200 OK\r\nContent-Length: ${
|
||||||
Math.round(data.length * 2)
|
Math.round(data.length * 2)
|
||||||
}\r\nTransfer-Encoding: chunked\r\n\r\n${
|
}\r\nTransfer-Encoding: chunked\r\n\r\n${
|
||||||
data.length.toString(16)
|
data.length.toString(16)
|
||||||
}\r\n${data}\r\n0\r\n\r\n`,
|
}\r\n${data}\r\n0\r\n\r\n`,
|
||||||
);
|
);
|
||||||
|
|
||||||
// if transfer-encoding is sent, content-length is ignored
|
// if transfer-encoding is sent, content-length is ignored
|
||||||
// even if it has an invalid value (content-length > totalLength)
|
// even if it has an invalid value (content-length > totalLength)
|
||||||
const listener = invalidServer(addr, body);
|
const listener = invalidServer(addr, body);
|
||||||
const response = await fetch(`http://${addr}/`);
|
const response = await fetch(`http://${addr}/`);
|
||||||
|
|
||||||
const res = await response.arrayBuffer();
|
const res = await response.arrayBuffer();
|
||||||
const buf = new TextEncoder().encode(data);
|
const buf = new TextEncoder().encode(data);
|
||||||
assertEquals(res.byteLength, buf.byteLength);
|
assertEquals(res.byteLength, buf.byteLength);
|
||||||
assertEquals(new Uint8Array(res), buf);
|
assertEquals(new Uint8Array(res), buf);
|
||||||
|
|
||||||
listener.close();
|
listener.close();
|
||||||
},
|
},
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
Deno.test(
|
Deno.test(
|
||||||
|
|
Loading…
Reference in a new issue