From 04836dc700a8e22fdb604f0640cb72be5e0194c9 Mon Sep 17 00:00:00 2001 From: tokiedokie Date: Sun, 27 Sep 2020 00:54:26 +0900 Subject: refactor(std/example): Inconsistencies in the example tests (#7684) --- std/examples/echo_server_test.ts | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 std/examples/echo_server_test.ts (limited to 'std/examples/echo_server_test.ts') diff --git a/std/examples/echo_server_test.ts b/std/examples/echo_server_test.ts new file mode 100644 index 000000000..1a5286a0e --- /dev/null +++ b/std/examples/echo_server_test.ts @@ -0,0 +1,47 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { assertStrictEquals, assertNotEquals } from "../testing/asserts.ts"; +import { BufReader, ReadLineResult } from "../io/bufio.ts"; +import { dirname, fromFileUrl } from "../path/mod.ts"; + +const moduleDir = dirname(fromFileUrl(import.meta.url)); + +Deno.test("[examples/echo_server]", async () => { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + const process = Deno.run({ + cmd: [Deno.execPath(), "run", "--allow-net", "echo_server.ts"], + cwd: moduleDir, + stdout: "piped", + }); + + let conn: Deno.Conn | undefined; + try { + const processReader = new BufReader(process.stdout); + const message = await processReader.readLine(); + + assertNotEquals(message, null); + assertStrictEquals( + decoder.decode((message as ReadLineResult).line).trim(), + "Listening on 0.0.0.0:8080", + ); + + conn = await Deno.connect({ hostname: "127.0.0.1", port: 8080 }); + const connReader = new BufReader(conn); + + await conn.write(encoder.encode("Hello echo_server\n")); + const result = await connReader.readLine(); + + assertNotEquals(result, null); + + const actualResponse = decoder + .decode((result as ReadLineResult).line) + .trim(); + const expectedResponse = "Hello echo_server"; + + assertStrictEquals(actualResponse, expectedResponse); + } finally { + conn?.close(); + process.stdout.close(); + process.close(); + } +}); -- cgit v1.2.3