|
| 1 | +import os from "node:os"; |
| 2 | +import * as path from "node:path"; |
| 3 | +import { describe, expect, it } from "vite-plus/test"; |
| 4 | +import { NODE_COMPILE_CACHE_DIR_NAME } from "../src/constants.js"; |
| 5 | +import { buildOxlintChildEnv } from "../src/utils/build-oxlint-child-env.js"; |
| 6 | + |
| 7 | +const SHARED_COMPILE_CACHE_BASE = path.join(os.tmpdir(), NODE_COMPILE_CACHE_DIR_NAME); |
| 8 | + |
| 9 | +describe("buildOxlintChildEnv", () => { |
| 10 | + it("sets NODE_COMPILE_CACHE to the shared tmp base dir by default", () => { |
| 11 | + const childEnv = buildOxlintChildEnv({ PATH: "/usr/bin" }); |
| 12 | + expect(childEnv.NODE_COMPILE_CACHE).toBe(SHARED_COMPILE_CACHE_BASE); |
| 13 | + }); |
| 14 | + |
| 15 | + it("respects NODE_DISABLE_COMPILE_CACHE and leaves NODE_COMPILE_CACHE unset", () => { |
| 16 | + const childEnv = buildOxlintChildEnv({ PATH: "/usr/bin", NODE_DISABLE_COMPILE_CACHE: "1" }); |
| 17 | + expect(childEnv.NODE_COMPILE_CACHE).toBeUndefined(); |
| 18 | + }); |
| 19 | + |
| 20 | + it("does not clobber an inherited NODE_COMPILE_CACHE value", () => { |
| 21 | + const childEnv = buildOxlintChildEnv({ PATH: "/usr/bin", NODE_COMPILE_CACHE: "/custom/dir" }); |
| 22 | + expect(childEnv.NODE_COMPILE_CACHE).toBe("/custom/dir"); |
| 23 | + }); |
| 24 | + |
| 25 | + it("preserves an inherited empty-string NODE_COMPILE_CACHE (the guard is !== undefined)", () => { |
| 26 | + const childEnv = buildOxlintChildEnv({ PATH: "/usr/bin", NODE_COMPILE_CACHE: "" }); |
| 27 | + expect(childEnv.NODE_COMPILE_CACHE).toBe(""); |
| 28 | + }); |
| 29 | + |
| 30 | + it("treats the disable and inherited guards independently", () => { |
| 31 | + const childEnv = buildOxlintChildEnv({ |
| 32 | + PATH: "/usr/bin", |
| 33 | + NODE_DISABLE_COMPILE_CACHE: "1", |
| 34 | + NODE_COMPILE_CACHE: "/custom/dir", |
| 35 | + }); |
| 36 | + expect(childEnv.NODE_COMPILE_CACHE).toBe("/custom/dir"); |
| 37 | + }); |
| 38 | + |
| 39 | + it("still strips NODE_OPTIONS, NODE_DEBUG, and npm_config_* while passing PATH through", () => { |
| 40 | + const childEnv = buildOxlintChildEnv({ |
| 41 | + PATH: "/usr/bin", |
| 42 | + NODE_OPTIONS: "--inspect", |
| 43 | + NODE_DEBUG: "module", |
| 44 | + npm_config_foo: "bar", |
| 45 | + }); |
| 46 | + expect(childEnv.NODE_OPTIONS).toBeUndefined(); |
| 47 | + expect(childEnv.NODE_DEBUG).toBeUndefined(); |
| 48 | + expect(childEnv.npm_config_foo).toBeUndefined(); |
| 49 | + expect(childEnv.PATH).toBe("/usr/bin"); |
| 50 | + }); |
| 51 | +}); |
0 commit comments