@@ -241,6 +241,40 @@ where
241241            continue ; 
242242        } ; 
243243
244+         // This block asserts that, for every `UnblamedHunk`, all lines in the *Blamed File* are 
245+         // identical to the corresponding lines in the *Source File*. 
246+         #[ cfg( debug_assertions) ]  
247+         { 
248+             let  source_blob = odb. find_blob ( & entry_id,  & mut  buf) ?. data . to_vec ( ) ; 
249+             let  mut  source_interner = gix_diff:: blob:: intern:: Interner :: new ( source_blob. len ( )  / 100 ) ; 
250+             let  source_lines_as_tokens:  Vec < _ >  = tokens_for_diffing ( & source_blob) 
251+                 . tokenize ( ) 
252+                 . map ( |token| source_interner. intern ( token) ) 
253+                 . collect ( ) ; 
254+ 
255+             let  mut  blamed_interner = gix_diff:: blob:: intern:: Interner :: new ( blamed_file_blob. len ( )  / 100 ) ; 
256+             let  blamed_lines_as_tokens:  Vec < _ >  = tokens_for_diffing ( & blamed_file_blob) 
257+                 . tokenize ( ) 
258+                 . map ( |token| blamed_interner. intern ( token) ) 
259+                 . collect ( ) ; 
260+ 
261+             for  hunk in  hunks_to_blame. iter ( )  { 
262+                 if  let  Some ( range_in_suspect)  = hunk. suspects . get ( & suspect)  { 
263+                     let  range_in_blamed_file = hunk. range_in_blamed_file . clone ( ) ; 
264+ 
265+                     for  ( blamed_line_number,  source_line_number)  in  range_in_blamed_file. zip ( range_in_suspect. clone ( ) )  { 
266+                         let  source_token = source_lines_as_tokens[ source_line_number as  usize ] ; 
267+                         let  blame_token = blamed_lines_as_tokens[ blamed_line_number as  usize ] ; 
268+ 
269+                         let  source_line = BString :: new ( source_interner[ source_token] . into ( ) ) ; 
270+                         let  blamed_line = BString :: new ( blamed_interner[ blame_token] . into ( ) ) ; 
271+ 
272+                         assert_eq ! ( source_line,  blamed_line) ; 
273+                     } 
274+                 } 
275+             } 
276+         } 
277+ 
244278        for  ( pid,  ( parent_id,  parent_commit_time) )  in  parent_ids. iter ( ) . enumerate ( )  { 
245279            if  let  Some ( parent_entry_id)  =
246280                find_path_entry_in_commit ( & odb,  parent_id,  file_path,  & mut  buf,  & mut  buf2,  & mut  stats) ?
0 commit comments