summaryrefslogtreecommitdiff
path: root/std/wasi/snapshot_preview1_test.ts
diff options
context:
space:
mode:
authorCasper Beyer <caspervonb@pm.me>2020-06-27 03:36:46 +0800
committerGitHub <noreply@github.com>2020-06-26 15:36:46 -0400
commit99f4a710f16bc62ac79cfcc79533f76e646c2889 (patch)
tree24b96f56c260000799fab4fb257f721d78897771 /std/wasi/snapshot_preview1_test.ts
parente10d74a3d3981310819299d21f129d6b8bf81d79 (diff)
test(std/wasi): add read, write and metadata tests (#6494)
Diffstat (limited to 'std/wasi/snapshot_preview1_test.ts')
-rw-r--r--std/wasi/snapshot_preview1_test.ts108
1 files changed, 61 insertions, 47 deletions
diff --git a/std/wasi/snapshot_preview1_test.ts b/std/wasi/snapshot_preview1_test.ts
index 37502e606..262aa7f95 100644
--- a/std/wasi/snapshot_preview1_test.ts
+++ b/std/wasi/snapshot_preview1_test.ts
@@ -72,54 +72,68 @@ if (import.meta.main) {
const prelude = await Deno.readTextFile(path.resolve(outdir, basename));
const options = JSON.parse(prelude);
- const process = await Deno.run({
- cwd: testdir,
- cmd: [
- `${Deno.execPath()}`,
- "run",
- "--quiet",
- "--unstable",
- "--allow-all",
- import.meta.url,
- prelude,
- path.resolve(outdir, entry.name),
- ],
- stdin: "piped",
- stdout: "piped",
- stderr: "piped",
- });
-
- if (options.stdin) {
- const stdin = new TextEncoder().encode(options.stdin);
- await Deno.writeAll(process.stdin, stdin);
+ await Deno.mkdir(`${testdir}/scratch`);
+
+ try {
+ const process = await Deno.run({
+ cwd: testdir,
+ cmd: [
+ `${Deno.execPath()}`,
+ "run",
+ "--quiet",
+ "--unstable",
+ "--allow-all",
+ import.meta.url,
+ prelude,
+ path.resolve(outdir, entry.name),
+ ],
+ stdin: "piped",
+ stdout: "piped",
+ stderr: "piped",
+ });
+
+ if (options.stdin) {
+ const stdin = new TextEncoder().encode(options.stdin);
+ await Deno.writeAll(process.stdin, stdin);
+ }
+
+ process.stdin.close();
+
+ const stdout = await Deno.readAll(process.stdout);
+
+ if (options.stdout) {
+ assertEquals(new TextDecoder().decode(stdout), options.stdout);
+ } else {
+ await Deno.writeAll(Deno.stdout, stdout);
+ }
+
+ process.stdout.close();
+
+ const stderr = await Deno.readAll(process.stderr);
+
+ if (options.stderr) {
+ assertEquals(new TextDecoder().decode(stderr), options.stderr);
+ } else {
+ await Deno.writeAll(Deno.stderr, stderr);
+ }
+
+ process.stderr.close();
+
+ if (options.files) {
+ for (const [key, value] of Object.entries(options.files)) {
+ assertEquals(value, await Deno.readTextFile(`${testdir}/${key}`));
+ }
+ }
+
+ const status = await process.status();
+ assertEquals(status.code, options.exitCode ? +options.exitCode : 0);
+
+ process.close();
+ } catch (err) {
+ throw err;
+ } finally {
+ await Deno.remove(`${testdir}/scratch`, { recursive: true });
}
-
- process.stdin.close();
-
- const stdout = await Deno.readAll(process.stdout);
-
- if (options.stdout) {
- assertEquals(new TextDecoder().decode(stdout), options.stdout);
- } else {
- await Deno.writeAll(Deno.stdout, stdout);
- }
-
- process.stdout.close();
-
- const stderr = await Deno.readAll(process.stderr);
-
- if (options.stderr) {
- assertEquals(new TextDecoder().decode(stderr), options.stderr);
- } else {
- await Deno.writeAll(Deno.stderr, stderr);
- }
-
- process.stderr.close();
-
- const status = await process.status();
- assertEquals(status.code, options.exitCode ? +options.exitCode : 0);
-
- process.close();
});
}
}