fix(ui): render whole-file patches as complete diffs (#30516)

This commit is contained in:
Brendan Allan 2026-06-03 15:29:23 +08:00 committed by GitHub
commit 707166ae4a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 80 additions and 4 deletions

View file

@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"
import { normalize, resolveFileDiff, text } from "./session-diff"
describe("session diff", () => {
test("keeps unified patch content", () => {
test("renders whole-file unified patches as complete diffs", () => {
const diff = {
file: "a.ts",
patch:
@ -14,7 +14,7 @@ describe("session diff", () => {
const view = normalize(diff)
expect(view.fileDiff.name).toBe("a.ts")
expect(view.fileDiff.isPartial).toBe(true)
expect(view.fileDiff.isPartial).toBe(false)
expect(text(view, "deletions")).toBe("one\ntwo\n")
expect(text(view, "additions")).toBe("one\nthree\n")
})
@ -34,6 +34,26 @@ describe("session diff", () => {
expect(text(view, "additions")).toBe("one\nthree")
})
test("renders whole-file VCS patches as complete diffs", () => {
const fileDiff = resolveFileDiff({
file: "a.ts",
patch: "diff --git a/a.ts b/a.ts\nindex 1a2b3c4..5d6e7f8 100644\n--- a/a.ts\n+++ b/a.ts\n@@ -1,2 +1,2 @@\n one\n-old\n+new\n",
})
expect(fileDiff.isPartial).toBe(false)
expect(fileDiff.additionLines).toEqual(["one\n", "new\n"])
})
test("keeps ordinary leading tool patches partial", () => {
const fileDiff = resolveFileDiff({
file: "a.ts",
patch: "Index: a.ts\n===================================================================\n--- a.ts\n+++ a.ts\n@@ -1,5 +1,5 @@\n-old\n+new\n two\n three\n four\n five\n",
})
expect(fileDiff.isPartial).toBe(true)
expect(fileDiff.additionLines).toEqual(["new\n", "two\n", "three\n", "four\n", "five\n"])
})
test("keeps separated patch hunks partial without complete file contents", () => {
const fileDiff = resolveFileDiff({
file: "project.ts",