Skip to content

Commit 11f4cb8

Browse files
committed
Split Patch and TreeChanges generation
Remove Patch from TreeChanges Make repo.Diff.Compare() generic
1 parent c5419f7 commit 11f4cb8

13 files changed

+475
-270
lines changed

LibGit2Sharp.Tests/DiffTreeToTargetFixture.cs

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,12 @@ public void CanCompareASimpleTreeAgainstTheWorkDir()
4343
{
4444
SetUpSimpleDiffContext(repo);
4545

46-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree,
46+
var changes = repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree,
4747
DiffTargets.WorkingDirectory);
48+
Assert.Equal(1, changes.Modified.Count());
4849

50+
var patch = repo.Diff.Compare<Patch>(repo.Head.Tip.Tree,
51+
DiffTargets.WorkingDirectory);
4952
var expected = new StringBuilder()
5053
.Append("diff --git a/file.txt b/file.txt\n")
5154
.Append("index ce01362..4f125e3 100644\n")
@@ -56,7 +59,7 @@ public void CanCompareASimpleTreeAgainstTheWorkDir()
5659
.Append("+world\n")
5760
.Append("+!!!\n");
5861

59-
Assert.Equal(expected.ToString(), changes.Patch);
62+
Assert.Equal(expected.ToString(), patch);
6063
}
6164
}
6265

@@ -67,7 +70,7 @@ public void CanCompareAMoreComplexTreeAgainstTheWorkdir()
6770
{
6871
Tree tree = repo.Head.Tip.Tree;
6972

70-
TreeChanges changes = repo.Diff.Compare(tree, DiffTargets.WorkingDirectory);
73+
var changes = repo.Diff.Compare<TreeChanges>(tree, DiffTargets.WorkingDirectory);
7174
Assert.NotNull(changes);
7275

7376
Assert.Equal(6, changes.Count());
@@ -103,9 +106,12 @@ public void CanCompareASimpleTreeAgainstTheWorkDirAndTheIndex()
103106
{
104107
SetUpSimpleDiffContext(repo);
105108

106-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree,
109+
var changes = repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree,
107110
DiffTargets.Index | DiffTargets.WorkingDirectory);
111+
Assert.Equal(1, changes.Modified.Count());
108112

113+
var patch = repo.Diff.Compare<Patch>(repo.Head.Tip.Tree,
114+
DiffTargets.Index | DiffTargets.WorkingDirectory);
109115
var expected = new StringBuilder()
110116
.Append("diff --git a/file.txt b/file.txt\n")
111117
.Append("index ce01362..4f125e3 100644\n")
@@ -116,7 +122,7 @@ public void CanCompareASimpleTreeAgainstTheWorkDirAndTheIndex()
116122
.Append("+world\n")
117123
.Append("+!!!\n");
118124

119-
Assert.Equal(expected.ToString(), changes.Patch);
125+
Assert.Equal(expected.ToString(), patch);
120126
}
121127
}
122128

@@ -158,8 +164,13 @@ public void ShowcaseTheDifferenceBetweenTheTwoKindOfComparison()
158164
FileStatus state = repo.Index.RetrieveStatus("file.txt");
159165
Assert.Equal(FileStatus.Removed | FileStatus.Untracked, state);
160166

167+
var wrkDirToIdxToTree = repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree,
168+
DiffTargets.Index | DiffTargets.WorkingDirectory);
169+
170+
Assert.Equal(1, wrkDirToIdxToTree.Deleted.Count());
171+
Assert.Equal(0, wrkDirToIdxToTree.Modified.Count());
161172

162-
TreeChanges wrkDirToIdxToTree = repo.Diff.Compare(repo.Head.Tip.Tree,
173+
var patch = repo.Diff.Compare<Patch>(repo.Head.Tip.Tree,
163174
DiffTargets.Index | DiffTargets.WorkingDirectory);
164175
var expected = new StringBuilder()
165176
.Append("diff --git a/file.txt b/file.txt\n")
@@ -170,9 +181,15 @@ public void ShowcaseTheDifferenceBetweenTheTwoKindOfComparison()
170181
.Append("@@ -1 +0,0 @@\n")
171182
.Append("-hello\n");
172183

173-
Assert.Equal(expected.ToString(), wrkDirToIdxToTree.Patch);
184+
Assert.Equal(expected.ToString(), patch);
174185

175-
TreeChanges wrkDirToTree = repo.Diff.Compare(repo.Head.Tip.Tree,
186+
var wrkDirToTree = repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree,
187+
DiffTargets.WorkingDirectory);
188+
189+
Assert.Equal(0, wrkDirToTree.Deleted.Count());
190+
Assert.Equal(1, wrkDirToTree.Modified.Count());
191+
192+
patch = repo.Diff.Compare<Patch>(repo.Head.Tip.Tree,
176193
DiffTargets.WorkingDirectory);
177194
expected = new StringBuilder()
178195
.Append("diff --git a/file.txt b/file.txt\n")
@@ -184,7 +201,7 @@ public void ShowcaseTheDifferenceBetweenTheTwoKindOfComparison()
184201
.Append("+world\n")
185202
.Append("+!!!\n");
186203

187-
Assert.Equal(expected.ToString(), wrkDirToTree.Patch);
204+
Assert.Equal(expected.ToString(), patch);
188205
}
189206
}
190207

@@ -207,9 +224,12 @@ public void CanCompareASimpleTreeAgainstTheIndex()
207224
{
208225
SetUpSimpleDiffContext(repo);
209226

210-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree,
227+
var changes = repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree,
211228
DiffTargets.Index);
229+
Assert.Equal(1, changes.Modified.Count());
212230

231+
var patch = repo.Diff.Compare<Patch>(repo.Head.Tip.Tree,
232+
DiffTargets.Index);
213233
var expected = new StringBuilder()
214234
.Append("diff --git a/file.txt b/file.txt\n")
215235
.Append("index ce01362..94954ab 100644\n")
@@ -219,7 +239,7 @@ public void CanCompareASimpleTreeAgainstTheIndex()
219239
.Append(" hello\n")
220240
.Append("+world\n");
221241

222-
Assert.Equal(expected.ToString(), changes.Patch);
242+
Assert.Equal(expected.ToString(), patch);
223243
}
224244
}
225245

@@ -254,7 +274,7 @@ public void CanCompareAMoreComplexTreeAgainstTheIndex()
254274
{
255275
Tree tree = repo.Head.Tip.Tree;
256276

257-
TreeChanges changes = repo.Diff.Compare(tree, DiffTargets.Index);
277+
var changes = repo.Diff.Compare<TreeChanges>(tree, DiffTargets.Index);
258278
Assert.NotNull(changes);
259279

260280
Assert.Equal(3, changes.Count());
@@ -281,7 +301,7 @@ public void CanCompareASubsetofTheTreeAgainstTheIndex()
281301
{
282302
Tree tree = repo.Head.Tip.Tree;
283303

284-
TreeChanges changes = repo.Diff.Compare(tree, DiffTargets.Index,
304+
var changes = repo.Diff.Compare<TreeChanges>(tree, DiffTargets.Index,
285305
new[] { "deleted_staged_file.txt", "1/branch_file.txt" });
286306

287307
Assert.NotNull(changes);
@@ -305,11 +325,11 @@ public void CanCompareASubsetofTheTreeAgainstTheIndexWithLaxExplicitPathsValidat
305325
{
306326
Tree tree = repo.Head.Tip.Tree;
307327

308-
TreeChanges changes = repo.Diff.Compare(tree, DiffTargets.Index,
328+
var changes = repo.Diff.Compare<TreeChanges>(tree, DiffTargets.Index,
309329
new[] { "deleted_staged_file.txt", "1/branch_file.txt", "I-do/not-exist" }, new ExplicitPathsOptions { ShouldFailOnUnmatchedPath = false });
310330
AssertCanCompareASubsetOfTheTreeAgainstTheIndex(changes);
311331

312-
changes = repo.Diff.Compare(tree, DiffTargets.Index,
332+
changes = repo.Diff.Compare<TreeChanges>(tree, DiffTargets.Index,
313333
new[] { "deleted_staged_file.txt", "1/branch_file.txt", "I-do/not-exist" });
314334
AssertCanCompareASubsetOfTheTreeAgainstTheIndex(changes);
315335
}
@@ -322,7 +342,7 @@ public void ComparingASubsetofTheTreeAgainstTheIndexWithStrictExplicitPathsValid
322342
{
323343
Tree tree = repo.Head.Tip.Tree;
324344

325-
Assert.Throws<UnmatchedPathException>(() => repo.Diff.Compare(tree, DiffTargets.Index,
345+
Assert.Throws<UnmatchedPathException>(() => repo.Diff.Compare<TreeChanges>(tree, DiffTargets.Index,
326346
new[] { "deleted_staged_file.txt", "1/branch_file.txt", "I-do/not-exist" }, new ExplicitPathsOptions()));
327347
}
328348
}
@@ -359,11 +379,10 @@ public void CanCopeWithEndOfFileNewlineChanges()
359379
File.AppendAllText(fullpath, "\n");
360380
repo.Index.Stage("file.txt");
361381

362-
TreeChanges changes = repo.Diff.Compare(repo.Head.Tip.Tree, DiffTargets.Index);
382+
var changes = repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree, DiffTargets.Index);
363383
Assert.Equal(1, changes.Modified.Count());
364-
Assert.Equal(1, changes.LinesAdded);
365-
Assert.Equal(1, changes.LinesDeleted);
366384

385+
var patch = repo.Diff.Compare<Patch>(repo.Head.Tip.Tree, DiffTargets.Index);
367386
var expected = new StringBuilder()
368387
.Append("diff --git a/file.txt b/file.txt\n")
369388
.Append("index 2e65efe..7898192 100644\n")
@@ -374,7 +393,9 @@ public void CanCopeWithEndOfFileNewlineChanges()
374393
.Append("\\ No newline at end of file\n")
375394
.Append("+a\n");
376395

377-
Assert.Equal(expected.ToString(), changes.Patch);
396+
Assert.Equal(expected.ToString(), patch);
397+
Assert.Equal(1, patch.LinesAdded);
398+
Assert.Equal(1, patch.LinesDeleted);
378399
}
379400
}
380401

@@ -384,11 +405,11 @@ public void ComparingATreeInABareRepositoryAgainstTheWorkDirOrTheIndexThrows()
384405
using (var repo = new Repository(BareTestRepoPath))
385406
{
386407
Assert.Throws<BareRepositoryException>(
387-
() => repo.Diff.Compare(repo.Head.Tip.Tree, DiffTargets.WorkingDirectory));
408+
() => repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree, DiffTargets.WorkingDirectory));
388409
Assert.Throws<BareRepositoryException>(
389-
() => repo.Diff.Compare(repo.Head.Tip.Tree, DiffTargets.Index));
410+
() => repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree, DiffTargets.Index));
390411
Assert.Throws<BareRepositoryException>(
391-
() => repo.Diff.Compare(repo.Head.Tip.Tree, DiffTargets.WorkingDirectory | DiffTargets.Index));
412+
() => repo.Diff.Compare<TreeChanges>(repo.Head.Tip.Tree, DiffTargets.WorkingDirectory | DiffTargets.Index));
392413
}
393414
}
394415

@@ -401,14 +422,13 @@ public void CanCompareANullTreeAgainstTheIndex()
401422
{
402423
SetUpSimpleDiffContext(repo);
403424

404-
TreeChanges changes = repo.Diff.Compare(null,
425+
var changes = repo.Diff.Compare<TreeChanges>(null,
405426
DiffTargets.Index);
406427

407428
Assert.Equal(1, changes.Count());
408429
Assert.Equal(1, changes.Added.Count());
409430

410431
Assert.Equal("file.txt", changes.Added.Single().Path);
411-
Assert.Equal(2, changes.Added.Single().LinesAdded);
412432
}
413433
}
414434

@@ -421,14 +441,13 @@ public void CanCompareANullTreeAgainstTheWorkdir()
421441
{
422442
SetUpSimpleDiffContext(repo);
423443

424-
TreeChanges changes = repo.Diff.Compare(null,
444+
var changes = repo.Diff.Compare<TreeChanges>(null,
425445
DiffTargets.WorkingDirectory);
426446

427447
Assert.Equal(1, changes.Count());
428448
Assert.Equal(1, changes.Added.Count());
429449

430450
Assert.Equal("file.txt", changes.Added.Single().Path);
431-
Assert.Equal(3, changes.Added.Single().LinesAdded);
432451
}
433452
}
434453

@@ -441,14 +460,13 @@ public void CanCompareANullTreeAgainstTheWorkdirAndTheIndex()
441460
{
442461
SetUpSimpleDiffContext(repo);
443462

444-
TreeChanges changes = repo.Diff.Compare(null,
463+
var changes = repo.Diff.Compare<TreeChanges>(null,
445464
DiffTargets.WorkingDirectory | DiffTargets.Index);
446465

447466
Assert.Equal(1, changes.Count());
448467
Assert.Equal(1, changes.Added.Count());
449468

450469
Assert.Equal("file.txt", changes.Added.Single().Path);
451-
Assert.Equal(3, changes.Added.Single().LinesAdded);
452470
}
453471
}
454472
}

0 commit comments

Comments
 (0)