1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-01-03 04:48:52 -05:00

fix(tests): fix fetchConnectionError test if port is in use (#9465)

Fixes #9379
This commit is contained in:
David DeSimone 2021-02-22 04:26:17 -08:00 committed by GitHub
parent 05911e5d7f
commit 8be0c8b43a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 1 deletions

View file

@ -5,6 +5,7 @@ import {
assertThrows,
assertThrowsAsync,
fail,
unimplemented,
unitTest,
} from "./test_util.ts";
@ -20,12 +21,37 @@ unitTest({ perms: { net: true } }, async function fetchProtocolError(): Promise<
);
});
function findClosedPortInRange(
minPort: number,
maxPort: number,
): number | never {
let port = minPort;
// If we hit the return statement of this loop
// that means that we did not throw an
// AddrInUse error when we executed Deno.listen.
while (port < maxPort) {
try {
const listener = Deno.listen({ port });
listener.close();
return port;
} catch (e) {
port++;
}
}
unimplemented(
`No available ports between ${minPort} and ${maxPort} to test fetch`,
);
}
unitTest(
{ perms: { net: true } },
async function fetchConnectionError(): Promise<void> {
const port = findClosedPortInRange(4000, 9999);
await assertThrowsAsync(
async (): Promise<void> => {
await fetch("http://localhost:4000");
await fetch(`http://localhost:${port}`);
},
TypeError,
"error trying to connect",

View file

@ -17,6 +17,7 @@ export {
assertThrows,
assertThrowsAsync,
fail,
unimplemented,
unreachable,
} from "../../../test_util/std/testing/asserts.ts";
export { deferred } from "../../../test_util/std/async/deferred.ts";