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,63 @@
|
||||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
|
||||
async function loadSubject() {
|
||||
return import("./patch.ts");
|
||||
}
|
||||
|
||||
test("parses paired changes into split diff rows", async () => {
|
||||
const { parseUnifiedPatch } = await loadSubject();
|
||||
const files = parseUnifiedPatch(`--- a/demo.ts
|
||||
+++ b/demo.ts
|
||||
@@ -10,3 +10,3 @@
|
||||
const keep = true;
|
||||
-const value = "old";
|
||||
+const value = "new";
|
||||
done();
|
||||
`);
|
||||
|
||||
assert.equal(files?.length, 1);
|
||||
assert.equal(files?.[0].oldPath, "a/demo.ts");
|
||||
assert.equal(files?.[0].newPath, "b/demo.ts");
|
||||
assert.deepEqual(files?.[0].rows.filter((row) => row.type === "line"), [
|
||||
{
|
||||
type: "line",
|
||||
left: { lineNo: 10, text: "const keep = true;", type: "context" },
|
||||
right: { lineNo: 10, text: "const keep = true;", type: "context" },
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
left: { lineNo: 11, text: 'const value = "old";', type: "removed" },
|
||||
right: { lineNo: 11, text: 'const value = "new";', type: "added" },
|
||||
},
|
||||
{
|
||||
type: "line",
|
||||
left: { lineNo: 12, text: "done();", type: "context" },
|
||||
right: { lineNo: 12, text: "done();", type: "context" },
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
test("pads one-sided additions and removes timestamp suffixes from file paths", async () => {
|
||||
const { parseUnifiedPatch } = await loadSubject();
|
||||
const files = parseUnifiedPatch(`--- a/demo.ts\t2026-01-01
|
||||
+++ b/demo.ts\t2026-01-02
|
||||
@@ -1,1 +1,2 @@
|
||||
first
|
||||
+second
|
||||
`);
|
||||
|
||||
assert.equal(files?.[0].oldPath, "a/demo.ts");
|
||||
assert.equal(files?.[0].newPath, "b/demo.ts");
|
||||
assert.deepEqual(files?.[0].rows.at(-1), {
|
||||
type: "line",
|
||||
left: { lineNo: null, text: "", type: "empty" },
|
||||
right: { lineNo: 2, text: "second", type: "added" },
|
||||
});
|
||||
});
|
||||
|
||||
test("returns null for text without diff lines", async () => {
|
||||
const { parseUnifiedPatch } = await loadSubject();
|
||||
|
||||
assert.equal(parseUnifiedPatch("not a patch"), null);
|
||||
});
|
||||
Reference in New Issue
Block a user