Files
oh-my-pi/packages/coding-agent/test/task/worktree.test.ts
T
haram 801553b118 Implement fuse-projfs as an alternative to fuse-overlay for Windows. (#244)
* 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>
2026-03-03 04:12:30 +01:00

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);
});
});