@@ -403,7 +403,15 @@ fn process_change(
403
403
hunk. offset ( ) + * offset_in_destination,
404
404
) ) ;
405
405
406
- ( None , None )
406
+ let new_change = if unchanged. end > hunk. range_in_destination . end {
407
+ let line_range = hunk. range_in_destination . end ..unchanged. end ;
408
+
409
+ Some ( Change :: Unchanged ( line_range) )
410
+ } else {
411
+ todo ! ( ) ;
412
+ } ;
413
+
414
+ ( None , new_change)
407
415
}
408
416
( false , false ) => {
409
417
if unchanged. end <= hunk. range_in_destination . start {
@@ -1645,6 +1653,36 @@ fn process_change_works_enclosing_addition() {
1645
1653
assert_eq ! ( offset_in_destination, Offset :: Added ( 3 ) ) ;
1646
1654
}
1647
1655
1656
+ #[ test]
1657
+ fn process_change_works_enclosing_unchanged_lines ( ) {
1658
+ let mut lines_blamed: Vec < BlameEntry > = vec ! [ ] ;
1659
+ let mut new_hunks_to_blame: Vec < UnblamedHunk > = vec ! [ ] ;
1660
+ let mut offset_in_destination: Offset = Offset :: Added ( 3 ) ;
1661
+ let suspect = ObjectId :: null ( gix_hash:: Kind :: Sha1 ) ;
1662
+
1663
+ let ( hunk, change) = process_change (
1664
+ & mut lines_blamed,
1665
+ & mut new_hunks_to_blame,
1666
+ & mut offset_in_destination,
1667
+ suspect,
1668
+ // range_in_destination: 109..113
1669
+ Some ( UnblamedHunk :: new ( 110 ..114 , Offset :: Added ( 1 ) ) ) ,
1670
+ Some ( Change :: Unchanged ( 109 ..172 ) ) ,
1671
+ ) ;
1672
+
1673
+ assert_eq ! ( hunk, None ) ;
1674
+ assert_eq ! ( change, Some ( Change :: Unchanged ( 113 ..172 ) ) ) ;
1675
+ assert_eq ! ( lines_blamed, vec![ ] ) ;
1676
+ assert_eq ! (
1677
+ new_hunks_to_blame,
1678
+ vec![ UnblamedHunk {
1679
+ range_in_blamed_file: 110 ..114 ,
1680
+ range_in_destination: 106 ..110
1681
+ } ]
1682
+ ) ;
1683
+ assert_eq ! ( offset_in_destination, Offset :: Added ( 3 ) ) ;
1684
+ }
1685
+
1648
1686
#[ test]
1649
1687
fn process_change_works_unchanged_hunk ( ) {
1650
1688
let mut lines_blamed: Vec < BlameEntry > = vec ! [ ] ;
@@ -1697,7 +1735,7 @@ fn process_change_works_unchanged_hunk_2() {
1697
1735
) ;
1698
1736
1699
1737
assert_eq ! ( hunk, None ) ;
1700
- assert_eq ! ( change, None ) ;
1738
+ assert_eq ! ( change, Some ( Change :: Unchanged ( 5 .. 7 ) ) ) ;
1701
1739
assert_eq ! ( lines_blamed, vec![ ] ) ;
1702
1740
assert_eq ! (
1703
1741
new_hunks_to_blame,
0 commit comments