summaryrefslogtreecommitdiff
path: root/std/examples/tests/catj_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/examples/tests/catj_test.ts')
-rw-r--r--std/examples/tests/catj_test.ts83
1 files changed, 83 insertions, 0 deletions
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" }
+ });
+}