mirror of
https://github.com/VibedByKaKi/t3-code-android-nightly.git
synced 2026-10-10 20:31:16 +02:00
94 lines
2.1 KiB
TypeScript
94 lines
2.1 KiB
TypeScript
import { assert, describe } from "@effect/vitest";
|
|
|
|
import { createOxlintRuleHarness } from "../test/utils.ts";
|
|
|
|
const rule = createOxlintRuleHarness("t3code/no-global-process-runtime");
|
|
|
|
describe("t3code/no-global-process-runtime", () => {
|
|
rule.valid(
|
|
"allows injected host process references",
|
|
`
|
|
import * as HostProcess from "@t3tools/shared/HostProcess";
|
|
import * as Effect from "effect/Effect";
|
|
|
|
export const isWindows = Effect.map(HostProcess.Platform, (platform) => platform === "win32");
|
|
`,
|
|
);
|
|
|
|
rule.valid(
|
|
"allows unrelated process members",
|
|
`
|
|
process.exitCode = 1;
|
|
const nodeEnv = process.env.NODE_ENV;
|
|
`,
|
|
);
|
|
|
|
rule.valid(
|
|
"allows unrelated node os imports",
|
|
`
|
|
import { tmpdir } from "node:os";
|
|
|
|
export const tempDirectory = tmpdir();
|
|
`,
|
|
);
|
|
|
|
rule.invalid(
|
|
"reports direct platform reads",
|
|
`
|
|
export const isWindows = process.platform === "win32";
|
|
`,
|
|
(output) => {
|
|
assert.match(output, /Use HostProcess\.Platform/);
|
|
},
|
|
);
|
|
|
|
rule.invalid(
|
|
"reports direct architecture reads",
|
|
`
|
|
export const isArm = process.arch === "arm64";
|
|
`,
|
|
(output) => {
|
|
assert.match(output, /Use HostProcess\.Architecture/);
|
|
},
|
|
);
|
|
|
|
rule.invalid(
|
|
"reports globalThis process platform reads",
|
|
`
|
|
export const terminalName = globalThis.process.platform === "win32" ? "xterm-color" : "xterm-256color";
|
|
`,
|
|
);
|
|
|
|
rule.invalid(
|
|
"reports node os namespace platform reads",
|
|
`
|
|
import * as NodeOS from "node:os";
|
|
|
|
export const isWindows = NodeOS.platform() === "win32";
|
|
`,
|
|
(output) => {
|
|
assert.match(output, /Use HostProcess\.Platform/);
|
|
},
|
|
);
|
|
|
|
rule.invalid(
|
|
"reports renamed node os architecture imports",
|
|
`
|
|
import { arch as hostArch } from "node:os";
|
|
|
|
export const isArm = hostArch() === "arm64";
|
|
`,
|
|
(output) => {
|
|
assert.match(output, /Use HostProcess\.Architecture/);
|
|
},
|
|
);
|
|
|
|
rule.invalid(
|
|
"reports default node os platform reads",
|
|
`
|
|
import os from "node:os";
|
|
|
|
export const isWindows = os.platform() === "win32";
|
|
`,
|
|
);
|
|
});
|