Skip to content

Commit

Permalink
test(net): improve test coverage (#4709)
Browse files Browse the repository at this point in the history
Co-authored-by: Asher Gomez <ashersaupingomez@gmail.com>
  • Loading branch information
mbhrznr and iuioiua committed May 12, 2024
1 parent ea70808 commit 1cd35a6
Showing 1 changed file with 27 additions and 2 deletions.
29 changes: 27 additions & 2 deletions net/get_available_port_test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.

import { getAvailablePort } from "./get_available_port.ts";
import { assertEquals } from "@std/assert";
import { assertEquals, assertNotEquals, assertThrows } from "@std/assert";
import { stub } from "@std/testing/mock";

/** Helper function to see if a port is indeed available for listening (race-y) */
async function testWithPort(port: number) {
Expand All @@ -20,10 +21,34 @@ async function testWithPort(port: number) {

Deno.test("getAvailablePort() gets an available port", async () => {
const port = getAvailablePort();
assertEquals(typeof port, "number");
await testWithPort(port);
});

Deno.test("getAvailablePort() gets an available port with a preferred port", async () => {
const port = getAvailablePort({ preferredPort: 9563 });
const preferredPort = 9563;
const port = getAvailablePort({ preferredPort });
assertEquals(port, preferredPort);
await testWithPort(port);
});

Deno.test("getAvailablePort() falls back to another port if preferred port is in use", async () => {
const preferredPort = 9563;
const server = Deno.serve(
{ port: preferredPort, onListen: () => {} },
() => new Response("hello"),
);
const port = getAvailablePort({ preferredPort });
assertEquals(typeof port, "number");
assertNotEquals(port, preferredPort);
server.shutdown();
await server.finished;
});

Deno.test("getAvailablePort() throws if error is not AddrInUse", () => {
using _ = stub(Deno, "listen", () => {
throw new Error();
});
const preferredPort = 9563;
assertThrows(() => getAvailablePort({ preferredPort }), Error);
});

0 comments on commit 1cd35a6

Please sign in to comment.