chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
function withEnv(vars: Record<string, string | undefined>, fn: () => void) {
|
||||
const saved: Record<string, string | undefined> = {};
|
||||
for (const [k, v] of Object.entries(vars)) {
|
||||
saved[k] = process.env[k];
|
||||
if (v === undefined) delete process.env[k];
|
||||
else process.env[k] = v;
|
||||
}
|
||||
try {
|
||||
fn();
|
||||
} finally {
|
||||
for (const [k, v] of Object.entries(saved)) {
|
||||
if (v === undefined) delete process.env[k];
|
||||
else process.env[k] = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test("detectRestrictedEnvironment retorna github-codespaces quando CODESPACES=true", async () => {
|
||||
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
|
||||
withEnv({ CODESPACES: "true" }, () => {
|
||||
const env = detectRestrictedEnvironment();
|
||||
assert.equal(env.type, "github-codespaces");
|
||||
assert.equal(env.canOpenBrowser, false);
|
||||
assert.equal(env.canUseTray, false);
|
||||
});
|
||||
});
|
||||
|
||||
test("detectRestrictedEnvironment retorna wsl com hint", async () => {
|
||||
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
|
||||
withEnv({ WSL_DISTRO_NAME: "Ubuntu-22.04" }, () => {
|
||||
const env = detectRestrictedEnvironment();
|
||||
assert.equal(env.type, "wsl");
|
||||
assert.equal(env.canOpenBrowser, true);
|
||||
assert.equal(env.canUseTray, false);
|
||||
assert.ok(env.hint?.includes("Windows"));
|
||||
});
|
||||
});
|
||||
|
||||
test("detectRestrictedEnvironment retorna gitpod quando GITPOD_WORKSPACE_ID set", async () => {
|
||||
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
|
||||
withEnv({ GITPOD_WORKSPACE_ID: "ws-abc123" }, () => {
|
||||
const env = detectRestrictedEnvironment();
|
||||
assert.equal(env.type, "gitpod");
|
||||
assert.equal(env.canOpenBrowser, false);
|
||||
});
|
||||
});
|
||||
|
||||
test("detectRestrictedEnvironment retorna ci quando CI=1", async () => {
|
||||
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
|
||||
withEnv(
|
||||
{ CI: "1", CODESPACES: undefined, WSL_DISTRO_NAME: undefined, GITPOD_WORKSPACE_ID: undefined },
|
||||
() => {
|
||||
const env = detectRestrictedEnvironment();
|
||||
assert.equal(env.type, "ci");
|
||||
assert.equal(env.canOpenBrowser, false);
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
test("detectRestrictedEnvironment retorna replit quando REPL_ID set", async () => {
|
||||
const { detectRestrictedEnvironment } = await import("../../bin/cli/utils/environment.mjs");
|
||||
withEnv({ REPL_ID: "repl-123", CI: undefined, CODESPACES: undefined }, () => {
|
||||
const env = detectRestrictedEnvironment();
|
||||
assert.equal(env.type, "replit");
|
||||
assert.equal(env.canOpenBrowser, false);
|
||||
});
|
||||
});
|
||||
|
||||
test("getEnvBanner retorna null para desktop", async () => {
|
||||
const { getEnvBanner } = await import("../../bin/cli/utils/environment.mjs");
|
||||
withEnv(
|
||||
{
|
||||
CODESPACES: undefined,
|
||||
WSL_DISTRO_NAME: undefined,
|
||||
WSL_INTEROP: undefined,
|
||||
GITPOD_WORKSPACE_ID: undefined,
|
||||
REPL_ID: undefined,
|
||||
REPL_SLUG: undefined,
|
||||
CI: undefined,
|
||||
},
|
||||
() => {
|
||||
// Non-TTY stdin will return non-interactive, not null
|
||||
// So we just test the function exists and returns a string or null
|
||||
const banner = getEnvBanner();
|
||||
assert.ok(banner === null || typeof banner === "string");
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
test("getEnvBanner retorna string com tipo para Codespaces", async () => {
|
||||
const { getEnvBanner } = await import("../../bin/cli/utils/environment.mjs");
|
||||
withEnv({ CODESPACES: "true" }, () => {
|
||||
const banner = getEnvBanner();
|
||||
assert.ok(typeof banner === "string");
|
||||
assert.ok(banner!.includes("github-codespaces"));
|
||||
});
|
||||
});
|
||||
|
||||
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");
|
||||
});
|
||||
Reference in New Issue
Block a user