Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 6339957

Browse files
committed
Fix diff parsing.
If we pass a `LibGit2Sharp.Patch` to `DiffUtilities.ParseFragment` it includes a header that should not be counted when calculating `DiffLine`. Make the parser ignore diff content before the first diff chunk header.
1 parent 3a71c8e commit 6339957

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/GitHub.Exports/Models/DiffUtilities.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static IEnumerable<DiffChunk> ParseFragment(string diff)
1616
{
1717
string line;
1818
DiffChunk chunk = null;
19-
int diffLine = 0;
19+
int diffLine = -1;
2020
int oldLine = -1;
2121
int newLine = -1;
2222

@@ -31,6 +31,8 @@ public static IEnumerable<DiffChunk> ParseFragment(string diff)
3131
yield return chunk;
3232
}
3333

34+
if (diffLine == -1) diffLine = 0;
35+
3436
chunk = new DiffChunk
3537
{
3638
OldLineNumber = oldLine = int.Parse(headerMatch.Groups[1].Value),
@@ -70,7 +72,7 @@ public static IEnumerable<DiffChunk> ParseFragment(string diff)
7072
}
7173
}
7274

73-
++diffLine;
75+
if (diffLine != -1) ++diffLine;
7476
}
7577

7678
if (chunk != null)

test/GitHub.InlineReviews.UnitTests/Services/DiffServiceTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,17 @@ public void ShouldParsePr960()
4141
// - public class UsageTracker : IUsageTracker
4242
Assert.Equal(17, result[0].Lines[7].OldLineNumber);
4343
Assert.Equal(-1, result[0].Lines[7].NewLineNumber);
44-
Assert.Equal(12, result[0].Lines[7].DiffLineNumber);
44+
Assert.Equal(8, result[0].Lines[7].DiffLineNumber);
4545

4646
// + public sealed class UsageTracker : IUsageTracker, IDisposable
4747
Assert.Equal(-1, result[0].Lines[8].OldLineNumber);
4848
Assert.Equal(18, result[0].Lines[8].NewLineNumber);
49-
Assert.Equal(13, result[0].Lines[8].DiffLineNumber);
49+
Assert.Equal(9, result[0].Lines[8].DiffLineNumber);
5050

5151
// IConnectionManager connectionManager;
5252
Assert.Equal(26, result[0].Lines[17].OldLineNumber);
5353
Assert.Equal(25, result[0].Lines[17].NewLineNumber);
54-
Assert.Equal(22, result[0].Lines[17].DiffLineNumber);
54+
Assert.Equal(18, result[0].Lines[17].DiffLineNumber);
5555
}
5656
}
5757
}

0 commit comments

Comments
 (0)