summaryrefslogtreecommitdiff
path: root/std/examples/chat/server_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/examples/chat/server_test.ts')
-rw-r--r--std/examples/chat/server_test.ts67
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();
+ }
}
});