File tree Expand file tree Collapse file tree 2 files changed +63
-3
lines changed Expand file tree Collapse file tree 2 files changed +63
-3
lines changed Original file line number Diff line number Diff line change @@ -218,9 +218,7 @@ pub(super) mod _impl {
218218 if self . err . is_some ( ) {
219219 return ;
220220 }
221- if ( ( self . pos == 0 ) && ( before. start - self . pos > self . ctx_size ) )
222- || ( before. start - self . pos > 2 * self . ctx_size )
223- {
221+ if before. start - self . pos > 2 * self . ctx_size {
224222 if let Err ( err) = self . flush ( ) {
225223 self . err = Some ( err) ;
226224 return ;
Original file line number Diff line number Diff line change @@ -108,6 +108,68 @@ fn removed_modified_added() -> crate::Result {
108108 Ok ( ( ) )
109109}
110110
111+ #[ test]
112+ fn context_overlap_by_one_line_move_up ( ) -> crate :: Result {
113+ let a = "2\n 3\n 4\n 5\n 6\n 7\n " ;
114+ let b = "7\n 2\n 3\n 4\n 5\n 6\n " ;
115+
116+ let interner = gix_diff:: blob:: intern:: InternedInput :: new ( a, b) ;
117+ let actual = gix_diff:: blob:: diff (
118+ Algorithm :: Myers ,
119+ & interner,
120+ UnifiedDiff :: new (
121+ & interner,
122+ String :: new ( ) ,
123+ NewlineSeparator :: AfterHeaderAndLine ( "\n " ) ,
124+ ContextSize :: symmetrical ( 3 ) ,
125+ ) ,
126+ ) ?;
127+
128+ // merged by context.
129+ insta:: assert_snapshot!( actual, @r"
130+ @@ -1,6 +1,6 @@
131+ +7
132+ 2
133+ 3
134+ 4
135+ 5
136+ 6
137+ -7
138+ " ) ;
139+ Ok ( ( ) )
140+ }
141+
142+ #[ test]
143+ fn context_overlap_by_one_line_move_down ( ) -> crate :: Result {
144+ let a = "2\n 3\n 4\n 5\n 6\n 7\n " ;
145+ let b = "7\n 2\n 3\n 4\n 5\n 6\n " ;
146+
147+ let interner = gix_diff:: blob:: intern:: InternedInput :: new ( b, a) ;
148+ let actual = gix_diff:: blob:: diff (
149+ Algorithm :: Myers ,
150+ & interner,
151+ UnifiedDiff :: new (
152+ & interner,
153+ String :: new ( ) ,
154+ NewlineSeparator :: AfterHeaderAndLine ( "\n " ) ,
155+ ContextSize :: symmetrical ( 3 ) ,
156+ ) ,
157+ ) ?;
158+
159+ // merged by context.
160+ insta:: assert_snapshot!( actual, @r"
161+ @@ -1,6 +1,6 @@
162+ -7
163+ 2
164+ 3
165+ 4
166+ 5
167+ 6
168+ +7
169+ " ) ;
170+ Ok ( ( ) )
171+ }
172+
111173#[ test]
112174fn removed_modified_added_with_newlines_in_tokens ( ) -> crate :: Result {
113175 let a = "1\n 2\n 3\n 4\n 5\n 6\n 7\n 8\n 9\n 10" ;
You can’t perform that action at this time.
0 commit comments