4
4
using System . Text ;
5
5
using LibGit2Sharp . Tests . TestHelpers ;
6
6
using Xunit ;
7
+ using Xunit . Extensions ;
7
8
8
9
namespace LibGit2Sharp . Tests
9
10
{
@@ -222,23 +223,31 @@ public void CanDetectTheRenamingOfAModifiedFile()
222
223
* $ git diff --shortstat f8d44d7..ec9e401
223
224
* 1 file changed, 2 insertions(+), 1 deletion(-)
224
225
*/
225
- [ Fact ]
226
- public void CanCompareTwoVersionsOfAFileWithATrailingNewlineDeletion ( )
226
+ [ Theory ]
227
+ [ InlineData ( 0 , 175 ) ]
228
+ [ InlineData ( 1 , 191 ) ]
229
+ [ InlineData ( 2 , 184 ) ]
230
+ [ InlineData ( 3 , 187 ) ]
231
+ [ InlineData ( 4 , 193 ) ]
232
+ public void CanCompareTwoVersionsOfAFileWithATrailingNewlineDeletion ( int contextLines , int expectedPatchLength )
227
233
{
228
234
using ( var repo = new Repository ( StandardTestRepoPath ) )
229
235
{
230
236
Tree rootCommitTree = repo . Lookup < Commit > ( "f8d44d7" ) . Tree ;
231
237
Tree commitTreeWithUpdatedFile = repo . Lookup < Commit > ( "ec9e401" ) . Tree ;
232
238
233
- TreeChanges changes = repo . Diff . Compare ( rootCommitTree , commitTreeWithUpdatedFile ) ;
239
+ TreeChanges changes = repo . Diff . Compare ( rootCommitTree , commitTreeWithUpdatedFile ,
240
+ compareOptions : new CompareOptions { ContextLines = contextLines } ) ;
234
241
235
242
Assert . Equal ( 1 , changes . Count ( ) ) ;
236
243
Assert . Equal ( 1 , changes . Modified . Count ( ) ) ;
244
+ Assert . Equal ( expectedPatchLength , changes . Patch . Length ) ;
237
245
238
246
TreeEntryChanges treeEntryChanges = changes . Modified . Single ( ) ;
239
247
240
248
Assert . Equal ( 2 , treeEntryChanges . LinesAdded ) ;
241
249
Assert . Equal ( 1 , treeEntryChanges . LinesDeleted ) ;
250
+ Assert . Equal ( expectedPatchLength , treeEntryChanges . Patch . Length ) ;
242
251
}
243
252
}
244
253
@@ -293,15 +302,31 @@ public void CanCompareTwoVersionsOfAFileWithATrailingNewlineDeletion()
293
302
* super-file.txt | 5 +++++
294
303
* 3 files changed, 8 insertions(+), 5 deletions(-)
295
304
*/
296
- [ Fact ]
297
- public void CanCompareTwoVersionsOfAFileWithADiffOfTwoHunks ( )
305
+ [ Theory ]
306
+ [ InlineData ( 0 , 3 ) ]
307
+ [ InlineData ( 0 , 4 ) ]
308
+ [ InlineData ( 1 , 1 ) ]
309
+ [ InlineData ( 1 , 2 ) ]
310
+ [ InlineData ( 2 , 4 ) ]
311
+ [ InlineData ( 2 , 5 ) ]
312
+ [ InlineData ( 3 , 2 ) ]
313
+ [ InlineData ( 3 , 3 ) ]
314
+ [ InlineData ( 4 , 0 ) ]
315
+ [ InlineData ( 4 , 1 ) ]
316
+ public void CanCompareTwoVersionsOfAFileWithADiffOfTwoHunks ( int contextLines , int interhunkLines )
298
317
{
318
+ var compareOptions = new CompareOptions
319
+ {
320
+ ContextLines = contextLines ,
321
+ InterhunkLines = interhunkLines ,
322
+ } ;
323
+
299
324
using ( var repo = new Repository ( StandardTestRepoPath ) )
300
325
{
301
326
Tree rootCommitTree = repo . Lookup < Commit > ( "f8d44d7" ) . Tree ;
302
327
Tree mergedCommitTree = repo . Lookup < Commit > ( "7252fe2" ) . Tree ;
303
328
304
- TreeChanges changes = repo . Diff . Compare ( rootCommitTree , mergedCommitTree ) ;
329
+ TreeChanges changes = repo . Diff . Compare ( rootCommitTree , mergedCommitTree , compareOptions : compareOptions ) ;
305
330
306
331
Assert . Equal ( 3 , changes . Count ( ) ) ;
307
332
Assert . Equal ( 1 , changes . Modified . Count ( ) ) ;
@@ -314,77 +339,10 @@ public void CanCompareTwoVersionsOfAFileWithADiffOfTwoHunks()
314
339
Assert . Equal ( 1 , treeEntryChanges . LinesDeleted ) ;
315
340
316
341
Assert . Equal ( Mode . Nonexistent , changes [ "my-name-does-not-feel-right.txt" ] . Mode ) ;
317
-
318
- var expected = new StringBuilder ( )
319
- . Append ( "diff --git a/numbers.txt b/numbers.txt\n " )
320
- . Append ( "index 7909961..4e935b7 100644\n " )
321
- . Append ( "--- a/numbers.txt\n " )
322
- . Append ( "+++ b/numbers.txt\n " )
323
- . Append ( "@@ -1,4 +1,5 @@\n " )
324
- . Append ( " 1\n " )
325
- . Append ( "+2\n " )
326
- . Append ( " 3\n " )
327
- . Append ( " 4\n " )
328
- . Append ( " 5\n " )
329
- . Append ( "@@ -8,8 +9,9 @@\n " )
330
- . Append ( " 8\n " )
331
- . Append ( " 9\n " )
332
- . Append ( " 10\n " )
333
- . Append ( "-12\n " )
334
- . Append ( "+11\n " )
335
- . Append ( " 12\n " )
336
- . Append ( " 13\n " )
337
- . Append ( " 14\n " )
338
- . Append ( " 15\n " )
339
- . Append ( "+16\n " ) ;
340
-
341
- Assert . Equal ( expected . ToString ( ) , treeEntryChanges . Patch ) ;
342
-
343
- expected = new StringBuilder ( )
344
- . Append ( "diff --git a/my-name-does-not-feel-right.txt b/my-name-does-not-feel-right.txt\n " )
345
- . Append ( "deleted file mode 100644\n " )
346
- . Append ( "index e8953ab..0000000\n " )
347
- . Append ( "--- a/my-name-does-not-feel-right.txt\n " )
348
- . Append ( "+++ /dev/null\n " )
349
- . Append ( "@@ -1,4 +0,0 @@\n " )
350
- . Append ( "-That's a terrible name!\n " )
351
- . Append ( "-I don't like it.\n " )
352
- . Append ( "-People look down at me and laugh. :-(\n " )
353
- . Append ( "-Really!!!!\n " )
354
- . Append ( "diff --git a/numbers.txt b/numbers.txt\n " )
355
- . Append ( "index 7909961..4e935b7 100644\n " )
356
- . Append ( "--- a/numbers.txt\n " )
357
- . Append ( "+++ b/numbers.txt\n " )
358
- . Append ( "@@ -1,4 +1,5 @@\n " )
359
- . Append ( " 1\n " )
360
- . Append ( "+2\n " )
361
- . Append ( " 3\n " )
362
- . Append ( " 4\n " )
363
- . Append ( " 5\n " )
364
- . Append ( "@@ -8,8 +9,9 @@\n " )
365
- . Append ( " 8\n " )
366
- . Append ( " 9\n " )
367
- . Append ( " 10\n " )
368
- . Append ( "-12\n " )
369
- . Append ( "+11\n " )
370
- . Append ( " 12\n " )
371
- . Append ( " 13\n " )
372
- . Append ( " 14\n " )
373
- . Append ( " 15\n " )
374
- . Append ( "+16\n " )
375
- . Append ( "diff --git a/super-file.txt b/super-file.txt\n " )
376
- . Append ( "new file mode 100644\n " )
377
- . Append ( "index 0000000..16bdf1d\n " )
378
- . Append ( "--- /dev/null\n " )
379
- . Append ( "+++ b/super-file.txt\n " )
380
- . Append ( "@@ -0,0 +1,5 @@\n " )
381
- . Append ( "+That's a terrible name!\n " )
382
- . Append ( "+I don't like it.\n " )
383
- . Append ( "+People look down at me and laugh. :-(\n " )
384
- . Append ( "+Really!!!!\n " )
385
- . Append ( "+Yeah! Better!\n " ) ;
386
-
387
- Assert . Equal ( expected . ToString ( ) , changes . Patch ) ;
342
+ Assert . Equal ( Expected ( "f8d44d7...7252fe2/numbers.txt-{0}-{1}.diff" , contextLines , interhunkLines ) ,
343
+ treeEntryChanges . Patch ) ;
344
+ Assert . Equal ( Expected ( "f8d44d7...7252fe2/full-{0}-{1}.diff" , contextLines , interhunkLines ) ,
345
+ changes . Patch ) ;
388
346
}
389
347
}
390
348
@@ -479,7 +437,7 @@ public void ComparingTwoNullTreesReturnsAnEmptyTreeChanges()
479
437
{
480
438
using ( var repo = new Repository ( StandardTestRepoPath ) )
481
439
{
482
- TreeChanges changes = repo . Diff . Compare ( null , null , null ) ;
440
+ TreeChanges changes = repo . Diff . Compare ( default ( Tree ) , default ( Tree ) ) ;
483
441
484
442
Assert . Equal ( 0 , changes . Count ( ) ) ;
485
443
}
0 commit comments