Skip to content

Commit 05d9547

Browse files
authored
Remove extra space when writing first hunk when outside of context (#4075)
1 parent 2402521 commit 05d9547

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

private/pkg/diff/diffmyers/diffmyers.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,10 @@ func Print(from, to [][]byte, edits []Edit) ([]byte, error) {
144144
var buffer bytes.Buffer
145145
buffer.Grow(bufferSize)
146146
for _, line := range out {
147-
if line.hunk && len(line.line) > 0 {
148-
buffer.Write(line.line)
147+
if line.hunk {
148+
if len(line.line) > 0 {
149+
buffer.Write(line.line)
150+
}
149151
continue
150152
}
151153
switch line.EditKind {

private/pkg/diff/diffmyers/diffmyers_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,32 @@ The door of all subtleties!
201201
)
202202
testPrint(t, lao, tzu, edits, "lao-tzu")
203203
})
204+
205+
t.Run("first-line-prefix", func(t *testing.T) {
206+
t.Parallel()
207+
from := "syntax = \"proto3\";\n\npackage test;\n\nmessage Foo {\n string field1 = 1;\n string field2 = 2;\n string field3 = 3;\n string field4 = 4;\n string field5 = 5;\n}\n"
208+
to := "syntax = \"proto3\";\n\npackage test;\n\nmessage Foo {\n string field1 = 1;\n string field2 = 2;\n string field3 = 3;\n string field4 = 4;\n int32 field5 = 5;\n}\n"
209+
expectedFirstLineOfOutput := " syntax = \"proto3\";"
210+
fromLines := splitLines(from)
211+
toLines := splitLines(to)
212+
edits := diffmyers.Diff(
213+
fromLines,
214+
toLines,
215+
)
216+
diff, err := diffmyers.Print(
217+
fromLines,
218+
toLines,
219+
edits,
220+
)
221+
require.NoError(t, err)
222+
firstLineEnd := bytes.Index(diff, []byte("\n"))
223+
224+
firstLine := diff[:firstLineEnd]
225+
actualFirstLine := string(firstLine)
226+
require.Equal(t, expectedFirstLineOfOutput, actualFirstLine,
227+
"First line of diff output should match expected format (single space prefix, no double space)")
228+
testPrint(t, from, to, edits, "first-line-prefix")
229+
})
204230
}
205231

206232
func testPrint(t *testing.T, from, to string, edits []diffmyers.Edit, golden string) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
syntax = "proto3";
2+
3+
package test;
4+
5+
message Foo {
6+
string field1 = 1;
7+
string field2 = 2;
8+
string field3 = 3;
9+
string field4 = 4;
10+
@@ -10,1 +10,1 @@
11+
- string field5 = 5;
12+
+ int32 field5 = 5;
13+
}

0 commit comments

Comments
 (0)