summaryrefslogtreecommitdiff
path: root/std/examples/catj_test.ts
diff options
context:
space:
mode:
authortokiedokie <thetokiedokie@gmail.com>2020-09-27 00:54:26 +0900
committerGitHub <noreply@github.com>2020-09-26 11:54:26 -0400
commit04836dc700a8e22fdb604f0640cb72be5e0194c9 (patch)
treef5828053fcef820de6f39d6160f047d82ef96802 /std/examples/catj_test.ts
parentff785bc35aa650152643ffc65a2195e2b27f845b (diff)
refactor(std/example): Inconsistencies in the example tests (#7684)
Diffstat (limited to 'std/examples/catj_test.ts')
-rw-r--r--std/examples/catj_test.ts91
1 files changed, 91 insertions, 0 deletions
diff --git a/std/examples/catj_test.ts b/std/examples/catj_test.ts
new file mode 100644
index 000000000..031a161c9
--- /dev/null
+++ b/std/examples/catj_test.ts
@@ -0,0 +1,91 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+import { assertStrictEquals } from "../testing/asserts.ts";
+import { dirname, fromFileUrl } from "../path/mod.ts";
+
+const moduleDir = dirname(fromFileUrl(import.meta.url));
+
+Deno.test("[examples/catj] print an array", async () => {
+ const decoder = new TextDecoder();
+ const process = catj("testdata/catj/array.json");
+ try {
+ const output = await process.output();
+ 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");
+
+ assertStrictEquals(actual, expected);
+ } finally {
+ process.stdin.close();
+ 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 process.output();
+ const actual = decoder.decode(output).trim();
+ const expected = [
+ '.string = "foobar"',
+ ".number = 123",
+ '.array[0].message = "hello"',
+ ].join("\n");
+
+ assertStrictEquals(actual, expected);
+ } finally {
+ process.stdin.close();
+ 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 process.output();
+ const actual = decoder.decode(output).trim();
+ const expected = ['.message = "hello"', ".[0] = 1", ".[1] = 2"].join("\n");
+
+ assertStrictEquals(actual, expected);
+ } finally {
+ process.stdin.close();
+ 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 process.output();
+ const actual = decoder.decode(output).trim();
+
+ assertStrictEquals(actual, '.foo = "bar"');
+ } finally {
+ process.close();
+ }
+});
+
+function catj(
+ ...files: string[]
+): Deno.Process<Deno.RunOptions & { stdin: "piped"; stdout: "piped" }> {
+ return Deno.run({
+ cmd: [Deno.execPath(), "run", "--allow-read", "catj.ts", ...files],
+ cwd: moduleDir,
+ stdin: "piped",
+ stdout: "piped",
+ env: { NO_COLOR: "true" },
+ });
+}