801553b118
* Implement fuse-projfs to use ProjFS on WIndows. * fix(pi-natives): prevent ProjFS session key mismatch and start race --------- Co-authored-by: can1357 <me@can.ac>
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import { describe, expect, it, vi } from "bun:test";
|
|
|
|
const projfsOverlayStartMock = vi.fn();
|
|
const projfsOverlayStopMock = vi.fn();
|
|
|
|
vi.mock("@oh-my-pi/pi-natives", () => ({
|
|
projfsOverlayStart: projfsOverlayStartMock,
|
|
projfsOverlayStop: projfsOverlayStopMock,
|
|
}));
|
|
|
|
async function loadWorktreeHelpers() {
|
|
const { getGitNoIndexNullPath, isProjfsUnavailableError } = await import("../../src/task/worktree");
|
|
return { getGitNoIndexNullPath, isProjfsUnavailableError };
|
|
}
|
|
|
|
describe("worktree isolation helpers", () => {
|
|
it("returns platform-specific null path for git --no-index diffs", async () => {
|
|
const { getGitNoIndexNullPath } = await loadWorktreeHelpers();
|
|
const expected = process.platform === "win32" ? "NUL" : "/dev/null";
|
|
expect(getGitNoIndexNullPath()).toBe(expected);
|
|
});
|
|
|
|
it("detects ProjFS prerequisite errors by prefix", async () => {
|
|
const { isProjfsUnavailableError } = await loadWorktreeHelpers();
|
|
expect(isProjfsUnavailableError(new Error("PROJFS_UNAVAILABLE: missing feature"))).toBe(true);
|
|
expect(isProjfsUnavailableError(new Error("fuse-overlay mount failed"))).toBe(false);
|
|
expect(isProjfsUnavailableError("PROJFS_UNAVAILABLE: not-an-error-instance")).toBe(false);
|
|
});
|
|
});
|