diff options
Diffstat (limited to 'std/examples/chat/server_test.ts')
-rw-r--r-- | std/examples/chat/server_test.ts | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/std/examples/chat/server_test.ts b/std/examples/chat/server_test.ts index c63453a19..8004055a4 100644 --- a/std/examples/chat/server_test.ts +++ b/std/examples/chat/server_test.ts @@ -3,10 +3,12 @@ import { assert, assertEquals } from "../../testing/asserts.ts"; import { TextProtoReader } from "../../textproto/mod.ts"; import { BufReader } from "../../io/bufio.ts"; import { connectWebSocket, WebSocket } from "../../ws/mod.ts"; +import { delay } from "../../util/async.ts"; -let server: Deno.Process | undefined; -async function startServer(): Promise<void> { - server = Deno.run({ +const { test, build } = Deno; + +async function startServer(): Promise<Deno.Process> { + const server = Deno.run({ args: [Deno.execPath(), "--allow-net", "--allow-read", "server.ts"], cwd: "examples/chat", stdout: "piped" @@ -17,54 +19,51 @@ async function startServer(): Promise<void> { const s = await r.readLine(); assert(s !== Deno.EOF && s.includes("chat server starting")); } catch { + server.stdout!.close(); server.close(); } -} -const { test, build } = Deno; + return server; +} // TODO: https://github.com/denoland/deno/issues/4108 const skip = build.os == "win"; test({ skip, - name: "beforeAll", - async fn() { - await startServer(); - } -}); - -test({ - skip, name: "GET / should serve html", async fn() { - const resp = await fetch("http://127.0.0.1:8080/"); - assertEquals(resp.status, 200); - assertEquals(resp.headers.get("content-type"), "text/html"); - const html = await resp.body.text(); - assert(html.includes("ws chat example"), "body is ok"); + const server = await startServer(); + try { + const resp = await fetch("http://127.0.0.1:8080/"); + assertEquals(resp.status, 200); + assertEquals(resp.headers.get("content-type"), "text/html"); + const html = await resp.body.text(); + assert(html.includes("ws chat example"), "body is ok"); + } finally { + server.close(); + server.stdout!.close(); + } + await delay(10); } }); -let ws: WebSocket | undefined; - test({ skip, name: "GET /ws should upgrade conn to ws", async fn() { - ws = await connectWebSocket("http://127.0.0.1:8080/ws"); - const it = ws.receive(); - assertEquals((await it.next()).value, "Connected: [1]"); - ws.send("Hello"); - assertEquals((await it.next()).value, "[1]: Hello"); - } -}); - -test({ - skip, - name: "afterAll", - fn() { - server?.close(); - ws?.conn.close(); + const server = await startServer(); + let ws: WebSocket | undefined; + try { + ws = await connectWebSocket("http://127.0.0.1:8080/ws"); + const it = ws.receive(); + assertEquals((await it.next()).value, "Connected: [1]"); + ws.send("Hello"); + assertEquals((await it.next()).value, "[1]: Hello"); + } finally { + server.close(); + server.stdout!.close(); + ws!.conn.close(); + } } }); |