summaryrefslogtreecommitdiff
path: root/cli/js/tests/dispatch_json_test.ts
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-03-10 01:06:47 +0100
committerGitHub <noreply@github.com>2020-03-10 01:06:47 +0100
commit68119e1d7ed23421ccdcba20532ebe9ae3df9f18 (patch)
tree455dd170024112e3388adc27ebebb119b0ecda38 /cli/js/tests/dispatch_json_test.ts
parentdad8036766dca3417b79858b9a04d90447f88605 (diff)
reorg: move js runtime tests to cli/js/tests/ (#4250)
All Deno runtime test files were moved to cli/js/tests/ directory. It makes a clear distinction that cli/js/tests/ contains code that is run under Deno runtime as opposed to code in cli/js/ which is used to create bundle and snapshot with "deno_typescript".
Diffstat (limited to 'cli/js/tests/dispatch_json_test.ts')
-rw-r--r--cli/js/tests/dispatch_json_test.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/cli/js/tests/dispatch_json_test.ts b/cli/js/tests/dispatch_json_test.ts
new file mode 100644
index 000000000..a2306dda8
--- /dev/null
+++ b/cli/js/tests/dispatch_json_test.ts
@@ -0,0 +1,32 @@
+import { assert, unitTest, assertMatch, unreachable } from "./test_util.ts";
+
+const openErrorStackPattern = new RegExp(
+ `^.*
+ at unwrapResponse \\(.*dispatch_json\\.ts:.*\\)
+ at Object.sendAsync \\(.*dispatch_json\\.ts:.*\\)
+ at async Object\\.open \\(.*files\\.ts:.*\\).*$`,
+ "ms"
+);
+
+unitTest(
+ { perms: { read: true } },
+ async function sendAsyncStackTrace(): Promise<void> {
+ await Deno.open("nonexistent.txt")
+ .then(unreachable)
+ .catch((error): void => {
+ assertMatch(error.stack, openErrorStackPattern);
+ });
+ }
+);
+
+unitTest(async function malformedJsonControlBuffer(): Promise<void> {
+ // @ts-ignore
+ const opId = Deno.core.ops()["op_open"];
+ // @ts-ignore
+ const res = Deno.core.send(opId, new Uint8Array([1, 2, 3, 4, 5]));
+ const resText = new TextDecoder().decode(res);
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const resJson = JSON.parse(resText) as any;
+ assert(!resJson.ok);
+ assert(resJson.err);
+});