mirror of
https://github.com/luckyyzh/pi-agent-integrated.git
synced 2026-10-03 02:59:35 +00:00
feat: integrate Pi backend and Pi Web
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
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" });
|
||||
});
|
||||
Reference in New Issue
Block a user