mirror of
https://github.com/luckyyzh/pi-agent-integrated.git
synced 2026-10-03 11:09:34 +00:00
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
async function loadSubject() {
|
|
return import("./git-status.ts");
|
|
}
|
|
|
|
test("parses null-delimited Git status entries including renames", async () => {
|
|
const { parseGitPorcelainV1 } = await loadSubject();
|
|
const entries = parseGitPorcelainV1([
|
|
" M components/App.tsx",
|
|
"?? notes.txt",
|
|
"R src/new-name.ts",
|
|
"src/old-name.ts",
|
|
"",
|
|
].join("\0"));
|
|
|
|
assert.deepEqual(entries, [
|
|
{
|
|
path: "components/App.tsx",
|
|
indexStatus: " ",
|
|
worktreeStatus: "M",
|
|
},
|
|
{
|
|
path: "notes.txt",
|
|
indexStatus: "?",
|
|
worktreeStatus: "?",
|
|
},
|
|
{
|
|
path: "src/new-name.ts",
|
|
originalPath: "src/old-name.ts",
|
|
indexStatus: "R",
|
|
worktreeStatus: " ",
|
|
},
|
|
]);
|
|
});
|
|
|
|
test("classifies Git status for explorer badges", async () => {
|
|
const { classifyGitStatus } = await loadSubject();
|
|
const classify = (pair) => classifyGitStatus({
|
|
path: "file.ts",
|
|
indexStatus: pair[0],
|
|
worktreeStatus: pair[1],
|
|
});
|
|
|
|
assert.deepEqual(classify(" M"), { status: "modified", code: "M" });
|
|
assert.deepEqual(classify("??"), { status: "untracked", code: "U" });
|
|
assert.deepEqual(classify("A "), { status: "added", code: "A" });
|
|
assert.deepEqual(classify("R "), { status: "renamed", code: "R" });
|
|
assert.deepEqual(classify("UU"), { status: "conflict", code: "C" });
|
|
assert.deepEqual(classify(" D"), { status: "deleted", code: "D" });
|
|
});
|