summaryrefslogtreecommitdiff
path: root/std/examples/tests
diff options
context:
space:
mode:
Diffstat (limited to 'std/examples/tests')
-rw-r--r--std/examples/tests/cat_test.ts25
-rw-r--r--std/examples/tests/catj_test.ts83
-rw-r--r--std/examples/tests/colors_test.ts19
-rw-r--r--std/examples/tests/curl_test.ts41
-rw-r--r--std/examples/tests/echo_server_test.ts43
-rw-r--r--std/examples/tests/test_test.ts2
-rw-r--r--std/examples/tests/welcome_test.ts19
-rw-r--r--std/examples/tests/xeval_test.ts1
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 = "Hello world!";
+ 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";