From cba925d71220bb522d636a4571d4491cb0075806 Mon Sep 17 00:00:00 2001 From: Billy Keyes Date: Tue, 7 Jan 2025 19:33:12 -0800 Subject: [PATCH] Fix binary headers in formatted patches Include file names in the header (now that we can actually parse them) and fix a bad find-and-replace that changed "differ" to "fmer". Add a new test to verify that binary files without data format correctly. --- gitdiff/format.go | 6 +++++- gitdiff/format_roundtrip_test.go | 1 + gitdiff/testdata/string/binary_modify_nodata.patch | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 gitdiff/testdata/string/binary_modify_nodata.patch diff --git a/gitdiff/format.go b/gitdiff/format.go index 5653f6f..d97aba9 100644 --- a/gitdiff/format.go +++ b/gitdiff/format.go @@ -169,7 +169,11 @@ func (fm *formatter) FormatFile(f *File) { if f.IsBinary { if f.BinaryFragment == nil { - fm.WriteString("Binary files fmer\n") + fm.WriteString("Binary files ") + fm.WriteQuotedName("a/" + aName) + fm.WriteString(" and ") + fm.WriteQuotedName("b/" + bName) + fm.WriteString(" differ\n") } else { fm.WriteString("GIT binary patch\n") fm.FormatBinaryFragment(f.BinaryFragment) diff --git a/gitdiff/format_roundtrip_test.go b/gitdiff/format_roundtrip_test.go index 58cff97..a230e91 100644 --- a/gitdiff/format_roundtrip_test.go +++ b/gitdiff/format_roundtrip_test.go @@ -31,6 +31,7 @@ func TestFormatRoundtrip(t *testing.T) { // data is slightly different when re-encoded by Go. {File: "binary_modify.patch", SkipTextCompare: true}, {File: "binary_new.patch", SkipTextCompare: true}, + {File: "binary_modify_nodata.patch"}, } for _, patch := range patches { diff --git a/gitdiff/testdata/string/binary_modify_nodata.patch b/gitdiff/testdata/string/binary_modify_nodata.patch new file mode 100644 index 0000000..833a534 --- /dev/null +++ b/gitdiff/testdata/string/binary_modify_nodata.patch @@ -0,0 +1,3 @@ +diff --git a/file.bin b/file.bin +index a7f4d5d..bdc9a70 100644 +Binary files a/file.bin and b/file.bin differ