1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-30 11:16:38 -05:00
denoland-deno/std/examples/tests/catj_test.ts
Bartek Iwańczuk a913b7a1ba
BREAKING: remove CLI 'deno script.ts' hack (#5026)
This PR removes the hack in CLI that allows to run scripts with shorthand: deno script.ts.

Removing this functionality because it hacks around short-comings of clap our CLI parser. We agree that this shorthand syntax is desirable, but it needs to be rethinked and reimplemented. For 1.0 we should go with conservative approach that is correct.
2020-05-04 13:03:30 +02:00

86 lines
2.3 KiB
TypeScript

// 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 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");
assertStrictEq(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");
assertStrictEq(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");
assertStrictEq(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();
assertStrictEq(actual, '.foo = "bar"');
} finally {
process.close();
}
});
function catj(...files: string[]): Deno.Process {
return Deno.run({
cmd: [Deno.execPath(), "run", "--allow-read", "catj.ts", ...files],
cwd: "examples",
stdin: "piped",
stdout: "piped",
env: { NO_COLOR: "true" },
});
}