1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-01-07 06:46:59 -05:00
denoland-deno/std/node/process_test.ts

197 lines
4.4 KiB
TypeScript
Raw Normal View History

// deno-lint-ignore-file no-undef
2021-01-10 21:59:07 -05:00
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
import "./global.ts";
import { assert, assertEquals, assertThrows } from "../testing/asserts.ts";
import { stripColor } from "../fmt/colors.ts";
import * as path from "../path/mod.ts";
import { delay } from "../async/delay.ts";
import { env } from "./process.ts";
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.cwd and process.chdir success",
fn() {
assertEquals(process.cwd(), Deno.cwd());
const currentDir = Deno.cwd();
const tempDir = Deno.makeTempDirSync();
process.chdir(tempDir);
assertEquals(
Deno.realPathSync(process.cwd()),
Deno.realPathSync(tempDir),
);
process.chdir(currentDir);
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.chdir failure",
fn() {
assertThrows(
() => {
process.chdir("non-existent-directory-name");
},
2020-02-24 15:48:35 -05:00
Deno.errors.NotFound,
"file",
2019-11-18 18:30:24 -05:00
// 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.
);
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.version",
fn() {
assertEquals(typeof process, "object");
assertEquals(typeof process.version, "string");
assertEquals(typeof process.versions, "object");
assertEquals(typeof process.versions.node, "string");
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.platform",
fn() {
assertEquals(typeof process.platform, "string");
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
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);
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.pid",
fn() {
assertEquals(typeof process.pid, "number");
assertEquals(process.pid, Deno.pid);
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.on",
async fn() {
2019-11-18 18:30:24 -05:00
assertEquals(typeof process.on, "function");
assertThrows(
() => {
process.on("uncaughtException", (_err: Error) => {});
},
Error,
"implemented",
2019-11-18 18:30:24 -05:00
);
let triggered = false;
process.on("exit", () => {
triggered = true;
});
process.emit("exit");
assert(triggered);
const cwd = path.dirname(path.fromFileUrl(import.meta.url));
const p = Deno.run({
cmd: [
Deno.execPath(),
"run",
"./process_exit_test.ts",
],
cwd,
stdout: "piped",
});
const decoder = new TextDecoder();
const rawOutput = await p.output();
assertEquals(
stripColor(decoder.decode(rawOutput).trim()),
"1\n2",
);
p.close();
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.argv",
fn() {
2019-11-18 18:30:24 -05:00
assert(Array.isArray(process.argv));
assert(
process.argv[0].match(/[^/\\]*deno[^/\\]*$/),
"deno included in the file name of argv[0]",
2019-11-18 18:30:24 -05:00
);
assertEquals(
process.argv[1],
path.fromFileUrl(Deno.mainModule),
);
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
2019-11-18 18:30:24 -05:00
name: "process.env",
fn() {
Deno.env.set("HELLO", "WORLD");
assertEquals(typeof (process.env.HELLO), "string");
assertEquals(process.env.HELLO, "WORLD");
assertEquals(typeof env.HELLO, "string");
assertEquals(env.HELLO, "WORLD");
},
2019-11-18 18:30:24 -05:00
});
Deno.test({
name: "process.stdin",
fn() {
assertEquals(typeof process.stdin.fd, "number");
assertEquals(process.stdin.fd, Deno.stdin.rid);
// TODO(jayhelton) Uncomment out this assertion once PTY is supported
//assert(process.stdin.isTTY);
},
});
Deno.test({
name: "process.stdout",
fn() {
assertEquals(typeof process.stdout.fd, "number");
assertEquals(process.stdout.fd, Deno.stdout.rid);
// TODO(jayhelton) Uncomment out this assertion once PTY is supported
// assert(process.stdout.isTTY);
},
});
Deno.test({
name: "process.stderr",
fn() {
assertEquals(typeof process.stderr.fd, "number");
assertEquals(process.stderr.fd, Deno.stderr.rid);
// TODO(jayhelton) Uncomment out this assertion once PTY is supported
// assert(process.stderr.isTTY);
},
});
Deno.test({
name: "process.nextTick",
async fn() {
let withoutArguments = false;
process.nextTick(() => {
withoutArguments = true;
});
const expected = 12;
let result;
process.nextTick((x: number) => {
result = x;
}, 12);
await delay(10);
assert(withoutArguments);
assertEquals(result, expected);
},
});