fix: control exact commits in dirty Windows worktrees

This commit is contained in:
Codex
2026-07-11 02:56:09 +02:00
parent 7797d9d9b6
commit 4e0cfae91b
5 changed files with 143 additions and 0 deletions
+16
View File
@@ -82,6 +82,22 @@ describe("ssh windows fs read-only operations", () => {
expect(commitInvocation.parsed.requiresStdin).toBe(false);
});
test("builds controlled exact-commit and object status helpers", () => {
const status = parseSshInvocation("D601:win/F/Work/ConStart", ["git", "exact-commit", "status"]);
const plan = parseSshInvocation("D601:win/F/Work/ConStart", ["git", "exact-commit", "plan", "--path", "src/main.c"]);
const run = parseSshInvocation("D601:win/F/Work/ConStart", ["git", "exact-commit", "run", "--path", "src/main.c", "--message", "fix: exact", "--confirm"]);
const decoded = decodedWindowsPowerShellCommand(run.parsed.remoteCommand);
expect(status.parsed.invocationKind).toBe("helper");
expect(plan.parsed.invocationKind).toBe("helper");
expect(decoded).toContain("GIT_INDEX_FILE");
expect(decoded).toContain("update-ref");
expect(decoded).toContain("unselected worktree/index fingerprint");
expect(decoded).toContain("old-value CAS");
expect(() => parseSshInvocation("D601:win/F/Work/ConStart", ["git", "exact-commit", "run", "--path", "src/main.c", "--message", "fix: exact"])).toThrow("requires --confirm");
expect(() => parseSshInvocation("D601:win/F/Work/ConStart", ["git", "exact-commit", "plan", "--path", "../secret"])).toThrow("must stay inside");
});
test("builds bounded UTF-8 scripts for cat, ls, and rg", () => {
const catScript = windowsFsReadOnlyScript("F:\\Work\\demo", "cat", ["--max-bytes", "4096", "中文.md"]);
const lsScript = windowsFsReadOnlyScript("F:\\Work\\demo", "ls", ["-la", "--limit=5"]);