mirror of
https://github.com/SerTimBerrners-Lee/talkis.git
synced 2026-10-03 04:36:55 +00:00
58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
import { describe, expect, test } from "bun:test";
|
|
|
|
import { withWindowsToolchainPaths } from "./windows-toolchain-env.mjs";
|
|
|
|
describe("Windows toolchain environment", () => {
|
|
test("discovers Rust, Visual Studio CMake, and LLVM outside a stale PATH", () => {
|
|
const existingPaths = new Set([
|
|
"C:\\Users\\Tester\\.cargo\\bin\\rustc.exe",
|
|
"C:\\Visual Studio\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\bin\\cmake.exe",
|
|
"C:\\Program Files\\LLVM\\bin\\libclang.dll",
|
|
]);
|
|
const env = withWindowsToolchainPaths(
|
|
{
|
|
Path: "C:\\Windows\\System32",
|
|
USERPROFILE: "C:\\Users\\Tester",
|
|
ProgramFiles: "C:\\Program Files",
|
|
},
|
|
{
|
|
platform: "win32",
|
|
fileExists: (path) => existingPaths.has(path),
|
|
visualStudioInstallation: "C:\\Visual Studio",
|
|
},
|
|
);
|
|
|
|
expect(env.Path.split(";")).toEqual([
|
|
"C:\\Users\\Tester\\.cargo\\bin",
|
|
"C:\\Visual Studio\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\bin",
|
|
"C:\\Program Files\\LLVM\\bin",
|
|
"C:\\Windows\\System32",
|
|
]);
|
|
expect(env.LIBCLANG_PATH).toBe("C:\\Program Files\\LLVM\\bin");
|
|
});
|
|
|
|
test("does not duplicate directories already present in PATH", () => {
|
|
const rustBin = "C:\\Users\\Tester\\.cargo\\bin";
|
|
const env = withWindowsToolchainPaths(
|
|
{
|
|
PATH: `${rustBin};C:\\Windows`,
|
|
USERPROFILE: "C:\\Users\\Tester",
|
|
},
|
|
{
|
|
platform: "win32",
|
|
fileExists: (path) => path === `${rustBin}\\rustc.exe`,
|
|
},
|
|
);
|
|
|
|
expect(env.PATH.split(";").filter((path) => path === rustBin)).toHaveLength(
|
|
1,
|
|
);
|
|
});
|
|
|
|
test("leaves non-Windows environments unchanged", () => {
|
|
const sourceEnv = { PATH: "/usr/bin", HOME: "/tmp/user" };
|
|
expect(
|
|
withWindowsToolchainPaths(sourceEnv, { platform: "linux" }),
|
|
).toEqual(sourceEnv);
|
|
});
|
|
});
|