summaryrefslogtreecommitdiff
path: root/std/node/process_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'std/node/process_test.ts')
-rw-r--r--std/node/process_test.ts103
1 files changed, 103 insertions, 0 deletions
diff --git a/std/node/process_test.ts b/std/node/process_test.ts
new file mode 100644
index 000000000..0ddf71fbc
--- /dev/null
+++ b/std/node/process_test.ts
@@ -0,0 +1,103 @@
+import { test } from "../testing/mod.ts";
+import { assert, assertThrows, assertEquals } from "../testing/asserts.ts";
+import { process } from "./process.ts";
+
+// NOTE: Deno.execPath() (and thus process.argv) currently requires --allow-env
+// (Also Deno.env() (and process.env) requires --allow-env but it's more obvious)
+
+test({
+ name: "process.cwd and process.chdir success",
+ fn() {
+ // this should be run like other tests from directory up
+ assert(process.cwd().match(/\Wstd$/));
+ process.chdir("node");
+ assert(process.cwd().match(/\Wnode$/));
+ process.chdir("..");
+ assert(process.cwd().match(/\Wstd$/));
+ }
+});
+
+test({
+ name: "process.chdir failure",
+ fn() {
+ assertThrows(
+ () => {
+ process.chdir("non-existent-directory-name");
+ },
+ Deno.DenoError,
+ "file"
+ // On every OS Deno returns: "No such file" except for Windows, where it's:
+ // "The system cannot find the file specified. (os error 2)" so "file" is
+ // the only common string here.
+ // TODO(rsp): Crazy idea: 404 for things like this?
+ // It would be nice to have error codes like 404 or 403 in addition to strings.
+ );
+ }
+});
+
+test({
+ name: "process.version",
+ fn() {
+ assertEquals(typeof process, "object");
+ assertEquals(typeof process.version, "string");
+ assertEquals(typeof process.versions, "object");
+ assertEquals(typeof process.versions.node, "string");
+ }
+});
+
+test({
+ name: "process.platform",
+ fn() {
+ assertEquals(typeof process.platform, "string");
+ }
+});
+
+test({
+ name: "process.arch",
+ fn() {
+ assertEquals(typeof process.arch, "string");
+ // TODO(rsp): make sure that the arch strings should be the same in Node and Deno:
+ assertEquals(process.arch, Deno.build.arch);
+ }
+});
+
+test({
+ name: "process.pid",
+ fn() {
+ assertEquals(typeof process.pid, "number");
+ assertEquals(process.pid, Deno.pid);
+ }
+});
+
+test({
+ name: "process.on",
+ fn() {
+ assertEquals(typeof process.on, "function");
+ assertThrows(
+ () => {
+ process.on("uncaughtException", (_err: Error) => {});
+ },
+ Error,
+ "implemented"
+ );
+ }
+});
+
+test({
+ name: "process.argv",
+ fn() {
+ assert(Array.isArray(process.argv));
+ assert(
+ process.argv[0].match(/[^/\\]*deno[^/\\]*$/),
+ "deno included in the file name of argv[0]"
+ );
+ // we cannot test for anything else (we see test runner arguments here)
+ }
+});
+
+test({
+ name: "process.env",
+ fn() {
+ assertEquals(typeof process.env.PATH, "string");
+ }
+});