Files
2026-07-13 13:39:12 +08:00

105 lines
4.2 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
test("environment.mjs pode ser importado sem erro", async () => {
const mod = await import("../../bin/cli/utils/environment.mjs");
assert.equal(typeof mod.detectRestrictedEnvironment, "function");
assert.equal(typeof mod.getEnvBanner, "function");
});
test("detectRestrictedEnvironment retorna objeto com type e flags", async () => {
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
const result = detectRestrictedEnvironment();
assert.ok(typeof result === "object" && result !== null);
assert.ok(typeof result.type === "string");
assert.ok(typeof result.canOpenBrowser === "boolean");
assert.ok(typeof result.canUseTray === "boolean");
});
test("detectRestrictedEnvironment detecta Codespaces via CODESPACES=true", async () => {
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
const orig = process.env.CODESPACES;
process.env.CODESPACES = "true";
try {
const result = detectRestrictedEnvironment();
assert.equal(result.type, "github-codespaces");
assert.equal(result.canOpenBrowser, false);
assert.equal(result.canUseTray, false);
} finally {
if (orig === undefined) delete process.env.CODESPACES;
else process.env.CODESPACES = orig;
}
});
test("detectRestrictedEnvironment detecta WSL via WSL_DISTRO_NAME", async () => {
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
// Skip se Codespaces (env pode estar setado no CI)
if (process.env.CODESPACES === "true") return;
const orig = process.env.WSL_DISTRO_NAME;
process.env.WSL_DISTRO_NAME = "Ubuntu";
try {
const result = detectRestrictedEnvironment();
assert.equal(result.type, "wsl");
assert.equal(result.canOpenBrowser, true);
assert.equal(result.canUseTray, false);
} finally {
if (orig === undefined) delete process.env.WSL_DISTRO_NAME;
else process.env.WSL_DISTRO_NAME = orig;
}
});
test("detectRestrictedEnvironment detecta CI via CI env var", async () => {
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
if (process.env.CODESPACES === "true" || process.env.WSL_DISTRO_NAME) return;
const orig = process.env.CI;
process.env.CI = "true";
try {
const result = detectRestrictedEnvironment();
assert.equal(result.type, "ci");
assert.equal(result.canOpenBrowser, false);
} finally {
if (orig === undefined) delete process.env.CI;
else process.env.CI = orig;
}
});
test("detectRestrictedEnvironment detecta Gitpod via GITPOD_WORKSPACE_ID", async () => {
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
if (process.env.CODESPACES === "true" || process.env.WSL_DISTRO_NAME) return;
const orig = process.env.GITPOD_WORKSPACE_ID;
process.env.GITPOD_WORKSPACE_ID = "ws-abc123";
try {
const result = detectRestrictedEnvironment();
assert.equal(result.type, "gitpod");
assert.equal(result.canOpenBrowser, false);
assert.equal(result.canUseTray, false);
} finally {
if (orig === undefined) delete process.env.GITPOD_WORKSPACE_ID;
else process.env.GITPOD_WORKSPACE_ID = orig;
}
});
test("getEnvBanner retorna null em ambiente desktop", async () => {
const { getEnvBanner, detectRestrictedEnvironment } =
await import("../../bin/cli/utils/environment.mjs");
const env = detectRestrictedEnvironment();
if (env.type !== "desktop") return; // não pode testar desktop se rodando em CI/Codespaces
const banner = getEnvBanner();
assert.equal(banner, null);
});
test("getEnvBanner retorna string em ambiente restrito (Gitpod)", async () => {
const { getEnvBanner } = await import("../../bin/cli/utils/environment.mjs");
if (process.env.CODESPACES === "true" || process.env.WSL_DISTRO_NAME) return;
const orig = process.env.GITPOD_WORKSPACE_ID;
process.env.GITPOD_WORKSPACE_ID = "ws-test";
try {
const banner = getEnvBanner();
assert.ok(typeof banner === "string");
assert.ok((banner as string).includes("gitpod"));
} finally {
if (orig === undefined) delete process.env.GITPOD_WORKSPACE_ID;
else process.env.GITPOD_WORKSPACE_ID = orig;
}
});