diff options
author | uki00a <uki00a@gmail.com> | 2020-02-24 22:31:40 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-24 08:31:40 -0500 |
commit | fe9ac35a650dfeea9168fc1cbbbf323b5689fc3b (patch) | |
tree | 56008d06659dbc0cc167eb0380006dbc5b3d48f4 /std/examples/tests | |
parent | 162d66d23fe984d7ac0396faacb8800f19a719fd (diff) |
fix(std/examples): add tests for examples (#4094)
Diffstat (limited to 'std/examples/tests')
-rw-r--r-- | std/examples/tests/cat_test.ts | 25 | ||||
-rw-r--r-- | std/examples/tests/catj_test.ts | 83 | ||||
-rw-r--r-- | std/examples/tests/colors_test.ts | 19 | ||||
-rw-r--r-- | std/examples/tests/curl_test.ts | 41 | ||||
-rw-r--r-- | std/examples/tests/echo_server_test.ts | 43 | ||||
-rw-r--r-- | std/examples/tests/test_test.ts | 2 | ||||
-rw-r--r-- | std/examples/tests/welcome_test.ts | 19 | ||||
-rw-r--r-- | std/examples/tests/xeval_test.ts | 1 |
8 files changed, 233 insertions, 0 deletions
diff --git a/std/examples/tests/cat_test.ts b/std/examples/tests/cat_test.ts new file mode 100644 index 000000000..93e884f61 --- /dev/null +++ b/std/examples/tests/cat_test.ts @@ -0,0 +1,25 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { assertStrictEq } from "../../testing/asserts.ts"; + +Deno.test("[examples/cat] print multiple files", async () => { + const decoder = new TextDecoder(); + const process = Deno.run({ + args: [ + Deno.execPath(), + "--allow-read", + "cat.ts", + "testdata/cat/hello.txt", + "testdata/cat/world.txt" + ], + cwd: "examples", + stdout: "piped" + }); + + try { + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + assertStrictEq(actual, "Hello\nWorld"); + } finally { + process.close(); + } +}); diff --git a/std/examples/tests/catj_test.ts b/std/examples/tests/catj_test.ts new file mode 100644 index 000000000..9267f532b --- /dev/null +++ b/std/examples/tests/catj_test.ts @@ -0,0 +1,83 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { assertStrictEq } from "../../testing/asserts.ts"; + +Deno.test("[examples/catj] print an array", async () => { + const decoder = new TextDecoder(); + const process = catj("testdata/catj/array.json"); + try { + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + const expected = [ + '.[0] = "string"', + ".[1] = 100", + '.[2].key = "value"', + '.[2].array[0] = "foo"', + '.[2].array[1] = "bar"' + ].join("\n"); + + assertStrictEq(actual, expected); + } finally { + process.close(); + } +}); + +Deno.test("[examples/catj] print an object", async () => { + const decoder = new TextDecoder(); + const process = catj("testdata/catj/object.json"); + try { + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + const expected = [ + '.string = "foobar"', + ".number = 123", + '.array[0].message = "hello"' + ].join("\n"); + + assertStrictEq(actual, expected); + } finally { + process.close(); + } +}); + +Deno.test("[examples/catj] print multiple files", async () => { + const decoder = new TextDecoder(); + const process = catj( + "testdata/catj/simple-object.json", + "testdata/catj/simple-array.json" + ); + try { + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + const expected = ['.message = "hello"', ".[0] = 1", ".[1] = 2"].join("\n"); + + assertStrictEq(actual, expected); + } finally { + process.close(); + } +}); + +Deno.test("[examples/catj] read from stdin", async () => { + const decoder = new TextDecoder(); + const process = catj("-"); + const input = `{ "foo": "bar" }`; + try { + await process.stdin!.write(new TextEncoder().encode(input)); + process.stdin!.close(); + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + + assertStrictEq(actual, '.foo = "bar"'); + } finally { + process.close(); + } +}); + +function catj(...files: string[]): Deno.Process { + return Deno.run({ + args: [Deno.execPath(), "--allow-read", "catj.ts", ...files], + cwd: "examples", + stdin: "piped", + stdout: "piped", + env: { NO_COLOR: "true" } + }); +} diff --git a/std/examples/tests/colors_test.ts b/std/examples/tests/colors_test.ts new file mode 100644 index 000000000..dcb485f6c --- /dev/null +++ b/std/examples/tests/colors_test.ts @@ -0,0 +1,19 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { assertStrictEq } from "../../testing/asserts.ts"; + +Deno.test("[examples/colors] print a colored text", async () => { + const decoder = new TextDecoder(); + const process = Deno.run({ + args: [Deno.execPath(), "colors.ts"], + cwd: "examples", + stdout: "piped" + }); + try { + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + const expected = "[44m[3m[31m[1mHello world![22m[39m[23m[49m"; + assertStrictEq(actual, expected); + } finally { + process.close(); + } +}); diff --git a/std/examples/tests/curl_test.ts b/std/examples/tests/curl_test.ts new file mode 100644 index 000000000..71a0fe67f --- /dev/null +++ b/std/examples/tests/curl_test.ts @@ -0,0 +1,41 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { Server, serve } from "../../http/server.ts"; +import { assertStrictEq } from "../../testing/asserts.ts"; + +let server: Server | undefined; + +async function startTestServer(): Promise<void> { + server = await serve({ port: 8080 }); + (async (): Promise<void> => { + for await (const req of server) { + req.respond({ body: "Hello world" }); + } + })(); +} + +Deno.test("[examples/curl] beforeAll", async () => { + await startTestServer(); +}); + +Deno.test("[examples/curl] send a request to a specified url", async () => { + const decoder = new TextDecoder(); + const process = Deno.run({ + args: [Deno.execPath(), "--allow-net", "curl.ts", "http://localhost:8080"], + cwd: "examples", + stdout: "piped" + }); + + try { + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + const expected = "Hello world"; + + assertStrictEq(actual, expected); + } finally { + process.close(); + } +}); + +Deno.test("[examples/curl] afterAll", () => { + server?.close(); +}); diff --git a/std/examples/tests/echo_server_test.ts b/std/examples/tests/echo_server_test.ts new file mode 100644 index 000000000..49a1feb31 --- /dev/null +++ b/std/examples/tests/echo_server_test.ts @@ -0,0 +1,43 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { assertStrictEq, assertNotEquals } from "../../testing/asserts.ts"; +import { BufReader, ReadLineResult } from "../../io/bufio.ts"; + +Deno.test("[examples/echo_server]", async () => { + const encoder = new TextEncoder(); + const decoder = new TextDecoder(); + const process = Deno.run({ + args: [Deno.execPath(), "--allow-net", "echo_server.ts"], + cwd: "examples", + stdout: "piped" + }); + + let conn: Deno.Conn | undefined; + try { + const processReader = new BufReader(process.stdout!); + const message = await processReader.readLine(); + + assertNotEquals(message, Deno.EOF); + assertStrictEq( + 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, Deno.EOF); + + const actualResponse = decoder + .decode((result as ReadLineResult).line) + .trim(); + const expectedResponse = "Hello echo_server"; + + assertStrictEq(actualResponse, expectedResponse); + } finally { + conn?.close(); + process.close(); + } +}); diff --git a/std/examples/tests/test_test.ts b/std/examples/tests/test_test.ts new file mode 100644 index 000000000..7c9527060 --- /dev/null +++ b/std/examples/tests/test_test.ts @@ -0,0 +1,2 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import "../test.ts"; diff --git a/std/examples/tests/welcome_test.ts b/std/examples/tests/welcome_test.ts new file mode 100644 index 000000000..76209cfad --- /dev/null +++ b/std/examples/tests/welcome_test.ts @@ -0,0 +1,19 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { assertStrictEq } from "../../testing/asserts.ts"; + +Deno.test("[examples/welcome] print a welcome message", async () => { + const decoder = new TextDecoder(); + const process = Deno.run({ + args: [Deno.execPath(), "welcome.ts"], + cwd: "examples", + stdout: "piped" + }); + try { + const output = await Deno.readAll(process.stdout!); + const actual = decoder.decode(output).trim(); + const expected = "Welcome to Deno 🦕"; + assertStrictEq(actual, expected); + } finally { + process.close(); + } +}); diff --git a/std/examples/tests/xeval_test.ts b/std/examples/tests/xeval_test.ts index 3df11c8af..870a00acf 100644 --- a/std/examples/tests/xeval_test.ts +++ b/std/examples/tests/xeval_test.ts @@ -1,3 +1,4 @@ +// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. import { xeval } from "../xeval.ts"; import { stringsReader } from "../../io/util.ts"; import { decode, encode } from "../../strings/mod.ts"; |