summaryrefslogtreecommitdiff
path: root/cli/tests/unit/os_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit/os_test.ts')
-rw-r--r--cli/tests/unit/os_test.ts304
1 files changed, 0 insertions, 304 deletions
diff --git a/cli/tests/unit/os_test.ts b/cli/tests/unit/os_test.ts
deleted file mode 100644
index e24494854..000000000
--- a/cli/tests/unit/os_test.ts
+++ /dev/null
@@ -1,304 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-import {
- assert,
- assertEquals,
- assertNotEquals,
- assertThrows,
-} from "./test_util.ts";
-
-Deno.test({ permissions: { env: true } }, function envSuccess() {
- Deno.env.set("TEST_VAR", "A");
- const env = Deno.env.toObject();
- Deno.env.set("TEST_VAR", "B");
- assertEquals(env["TEST_VAR"], "A");
- assertNotEquals(Deno.env.get("TEST_VAR"), env["TEST_VAR"]);
-});
-
-Deno.test({ permissions: { env: true } }, function envNotFound() {
- const r = Deno.env.get("env_var_does_not_exist!");
- assertEquals(r, undefined);
-});
-
-Deno.test({ permissions: { env: true } }, function deleteEnv() {
- Deno.env.set("TEST_VAR", "A");
- assertEquals(Deno.env.get("TEST_VAR"), "A");
- assertEquals(Deno.env.delete("TEST_VAR"), undefined);
- assertEquals(Deno.env.get("TEST_VAR"), undefined);
-});
-
-Deno.test({ permissions: { env: true } }, function hasEnv() {
- Deno.env.set("TEST_VAR", "A");
- assert(Deno.env.has("TEST_VAR"));
- Deno.env.delete("TEST_VAR");
- assert(!Deno.env.has("TEST_VAR"));
-});
-
-Deno.test({ permissions: { env: true } }, function avoidEmptyNamedEnv() {
- assertThrows(() => Deno.env.set("", "v"), TypeError);
- assertThrows(() => Deno.env.set("a=a", "v"), TypeError);
- assertThrows(() => Deno.env.set("a\0a", "v"), TypeError);
- assertThrows(() => Deno.env.set("TEST_VAR", "v\0v"), TypeError);
-
- assertThrows(() => Deno.env.get(""), TypeError);
- assertThrows(() => Deno.env.get("a=a"), TypeError);
- assertThrows(() => Deno.env.get("a\0a"), TypeError);
-
- assertThrows(() => Deno.env.delete(""), TypeError);
- assertThrows(() => Deno.env.delete("a=a"), TypeError);
- assertThrows(() => Deno.env.delete("a\0a"), TypeError);
-});
-
-Deno.test({ permissions: { env: false } }, function envPermissionDenied1() {
- assertThrows(() => {
- Deno.env.toObject();
- }, Deno.errors.PermissionDenied);
-});
-
-Deno.test({ permissions: { env: false } }, function envPermissionDenied2() {
- assertThrows(() => {
- Deno.env.get("PATH");
- }, Deno.errors.PermissionDenied);
-});
-
-// This test verifies that on Windows, environment variables are
-// case-insensitive. Case normalization needs be done using the collation
-// that Windows uses, rather than naively using String.toLowerCase().
-Deno.test(
- {
- ignore: Deno.build.os !== "windows",
- permissions: { read: true, env: true, run: true },
- },
- async function envCaseInsensitive() {
- // Utility function that runs a Deno subprocess with the environment
- // specified in `inputEnv`. The subprocess reads the environment variables
- // which are in the keys of `expectedEnv` and writes them to stdout as JSON.
- // It is then verified that these match with the values of `expectedEnv`.
- const checkChildEnv = async (
- inputEnv: Record<string, string>,
- expectedEnv: Record<string, string>,
- ) => {
- const src = `
- console.log(
- ${JSON.stringify(Object.keys(expectedEnv))}.map(k => Deno.env.get(k))
- )`;
- const { success, stdout } = await new Deno.Command(Deno.execPath(), {
- args: ["eval", src],
- env: { ...inputEnv, NO_COLOR: "1" },
- }).output();
- assertEquals(success, true);
- const expectedValues = Object.values(expectedEnv);
- const actualValues = JSON.parse(new TextDecoder().decode(stdout));
- assertEquals(actualValues, expectedValues);
- };
-
- assertEquals(Deno.env.get("path"), Deno.env.get("PATH"));
- assertEquals(Deno.env.get("Path"), Deno.env.get("PATH"));
-
- // Check 'foo', 'Foo' and 'Foo' are case folded.
- await checkChildEnv({ foo: "X" }, { foo: "X", Foo: "X", FOO: "X" });
-
- // Check that 'µ' and 'Μ' are not case folded.
- const lc1 = "µ";
- const uc1 = lc1.toUpperCase();
- assertNotEquals(lc1, uc1);
- await checkChildEnv(
- { [lc1]: "mu", [uc1]: "MU" },
- { [lc1]: "mu", [uc1]: "MU" },
- );
-
- // Check that 'dž' and 'DŽ' are folded, but 'Dž' is preserved.
- const c2 = "Dž";
- const lc2 = c2.toLowerCase();
- const uc2 = c2.toUpperCase();
- assertNotEquals(c2, lc2);
- assertNotEquals(c2, uc2);
- await checkChildEnv(
- { [c2]: "Dz", [lc2]: "dz" },
- { [c2]: "Dz", [lc2]: "dz", [uc2]: "dz" },
- );
- await checkChildEnv(
- { [c2]: "Dz", [uc2]: "DZ" },
- { [c2]: "Dz", [uc2]: "DZ", [lc2]: "DZ" },
- );
- },
-);
-
-Deno.test({ permissions: { env: true } }, function envInvalidChars() {
- assertThrows(() => Deno.env.get(""), TypeError, "Key is an empty string");
- assertThrows(
- () => Deno.env.get("\0"),
- TypeError,
- 'Key contains invalid characters: "\\0"',
- );
- assertThrows(
- () => Deno.env.get("="),
- TypeError,
- 'Key contains invalid characters: "="',
- );
- assertThrows(
- () => Deno.env.set("", "foo"),
- TypeError,
- "Key is an empty string",
- );
- assertThrows(
- () => Deno.env.set("\0", "foo"),
- TypeError,
- 'Key contains invalid characters: "\\0"',
- );
- assertThrows(
- () => Deno.env.set("=", "foo"),
- TypeError,
- 'Key contains invalid characters: "="',
- );
- assertThrows(
- () => Deno.env.set("foo", "\0"),
- TypeError,
- 'Value contains invalid characters: "\\0"',
- );
-});
-
-Deno.test(function osPid() {
- assertEquals(typeof Deno.pid, "number");
- assert(Deno.pid > 0);
-});
-
-Deno.test(function osPpid() {
- assertEquals(typeof Deno.ppid, "number");
- assert(Deno.ppid > 0);
-});
-
-Deno.test(
- { permissions: { run: true, read: true } },
- async function osPpidIsEqualToPidOfParentProcess() {
- const decoder = new TextDecoder();
- const { stdout } = await new Deno.Command(Deno.execPath(), {
- args: ["eval", "-p", "--unstable", "Deno.ppid"],
- env: { NO_COLOR: "true" },
- }).output();
-
- const expected = Deno.pid;
- const actual = parseInt(decoder.decode(stdout));
- assertEquals(actual, expected);
- },
-);
-
-Deno.test({ permissions: { read: true } }, function execPath() {
- assertNotEquals(Deno.execPath(), "");
-});
-
-Deno.test({ permissions: { read: false } }, function execPathPerm() {
- assertThrows(
- () => {
- Deno.execPath();
- },
- Deno.errors.PermissionDenied,
- "Requires read access to <exec_path>, run again with the --allow-read flag",
- );
-});
-
-Deno.test(
- { permissions: { sys: ["loadavg"] } },
- function loadavgSuccess() {
- const load = Deno.loadavg();
- assertEquals(load.length, 3);
- },
-);
-
-Deno.test({ permissions: { sys: false } }, function loadavgPerm() {
- assertThrows(() => {
- Deno.loadavg();
- }, Deno.errors.PermissionDenied);
-});
-
-Deno.test(
- { permissions: { sys: ["hostname"] } },
- function hostnameDir() {
- assertNotEquals(Deno.hostname(), "");
- },
-);
-
-Deno.test(
- { permissions: { run: [Deno.execPath()], read: true } },
- // See https://github.com/denoland/deno/issues/16527
- async function hostnameWithoutOtherNetworkUsages() {
- const { stdout } = await new Deno.Command(Deno.execPath(), {
- args: ["eval", "-p", "Deno.hostname()"],
- }).output();
- const hostname = new TextDecoder().decode(stdout).trim();
- assert(hostname.length > 0);
- },
-);
-
-Deno.test({ permissions: { sys: false } }, function hostnamePerm() {
- assertThrows(() => {
- Deno.hostname();
- }, Deno.errors.PermissionDenied);
-});
-
-Deno.test(
- { permissions: { sys: ["osRelease"] } },
- function releaseDir() {
- assertNotEquals(Deno.osRelease(), "");
- },
-);
-
-Deno.test({ permissions: { sys: false } }, function releasePerm() {
- assertThrows(() => {
- Deno.osRelease();
- }, Deno.errors.PermissionDenied);
-});
-
-Deno.test({ permissions: { sys: ["osUptime"] } }, function osUptime() {
- const uptime = Deno.osUptime();
- assert(typeof uptime === "number");
- assert(uptime > 0);
-});
-
-Deno.test({ permissions: { sys: false } }, function osUptimePerm() {
- assertThrows(() => {
- Deno.osUptime();
- }, Deno.errors.PermissionDenied);
-});
-
-Deno.test(
- { permissions: { sys: ["systemMemoryInfo"] } },
- function systemMemoryInfo() {
- const info = Deno.systemMemoryInfo();
- assert(info.total >= 0);
- assert(info.free >= 0);
- assert(info.available >= 0);
- assert(info.buffers >= 0);
- assert(info.cached >= 0);
- assert(info.swapTotal >= 0);
- assert(info.swapFree >= 0);
- },
-);
-
-Deno.test({ permissions: { sys: ["uid"] } }, function getUid() {
- if (Deno.build.os === "windows") {
- assertEquals(Deno.uid(), null);
- } else {
- const uid = Deno.uid();
- assert(typeof uid === "number");
- assert(uid > 0);
- }
-});
-
-Deno.test({ permissions: { sys: ["gid"] } }, function getGid() {
- if (Deno.build.os === "windows") {
- assertEquals(Deno.gid(), null);
- } else {
- const gid = Deno.gid();
- assert(typeof gid === "number");
- assert(gid > 0);
- }
-});
-
-Deno.test(function memoryUsage() {
- const mem = Deno.memoryUsage();
- assert(typeof mem.rss === "number");
- assert(typeof mem.heapTotal === "number");
- assert(typeof mem.heapUsed === "number");
- assert(typeof mem.external === "number");
- assert(mem.rss >= mem.heapTotal);
-});