diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2020-01-30 18:02:14 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-30 21:02:14 -0500 |
commit | 97b2a0bb958549e298cd137778053210a05d85d8 (patch) | |
tree | 42322cfcf1d8da7f0f398f3c49b0f7a6cc2fe993 /std/examples/tests/xeval_test.ts | |
parent | 3de9540ac6ae5ce051ccd9be69c1d6ef64663a26 (diff) |
bring back std/examples/xeval.ts (#3822)
Diffstat (limited to 'std/examples/tests/xeval_test.ts')
-rw-r--r-- | std/examples/tests/xeval_test.ts | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/std/examples/tests/xeval_test.ts b/std/examples/tests/xeval_test.ts new file mode 100644 index 000000000..db9cbceee --- /dev/null +++ b/std/examples/tests/xeval_test.ts @@ -0,0 +1,48 @@ +import { xeval } from "../xeval.ts"; +import { stringsReader } from "../../io/util.ts"; +import { decode, encode } from "../../strings/mod.ts"; +import { assertEquals, assertStrContains } from "../../testing/asserts.ts"; +import { test } from "../../testing/mod.ts"; +const { execPath, run } = Deno; + +test(async function xevalSuccess(): Promise<void> { + const chunks: string[] = []; + await xeval(stringsReader("a\nb\nc"), ($): number => chunks.push($)); + assertEquals(chunks, ["a", "b", "c"]); +}); + +test(async function xevalDelimiter(): Promise<void> { + const chunks: string[] = []; + await xeval(stringsReader("!MADMADAMADAM!"), ($): number => chunks.push($), { + delimiter: "MADAM" + }); + assertEquals(chunks, ["!MAD", "ADAM!"]); +}); + +// https://github.com/denoland/deno/issues/2861 +const xevalPath = "examples/xeval.ts"; + +test(async function xevalCliReplvar(): Promise<void> { + const p = run({ + args: [execPath(), xevalPath, "--", "--replvar=abc", "console.log(abc)"], + stdin: "piped", + stdout: "piped", + stderr: "null" + }); + await p.stdin!.write(encode("hello")); + await p.stdin!.close(); + assertEquals(await p.status(), { code: 0, success: true }); + assertEquals(decode(await p.output()).trimEnd(), "hello"); +}); + +test(async function xevalCliSyntaxError(): Promise<void> { + const p = run({ + args: [execPath(), xevalPath, "--", "("], + stdin: "null", + stdout: "piped", + stderr: "piped" + }); + assertEquals(await p.status(), { code: 1, success: false }); + assertEquals(decode(await p.output()), ""); + assertStrContains(decode(await p.stderrOutput()), "Uncaught SyntaxError"); +}); |