diff options
Diffstat (limited to 'std/examples/catj_test.ts')
-rw-r--r-- | std/examples/catj_test.ts | 91 |
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" }, + }); +} |