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 {
218
218
if self . err . is_some ( ) {
219
219
return ;
220
220
}
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 {
224
222
if let Err ( err) = self . flush ( ) {
225
223
self . err = Some ( err) ;
226
224
return ;
Original file line number Diff line number Diff line change @@ -108,6 +108,68 @@ fn removed_modified_added() -> crate::Result {
108
108
Ok ( ( ) )
109
109
}
110
110
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
+
111
173
#[ test]
112
174
fn removed_modified_added_with_newlines_in_tokens ( ) -> crate :: Result {
113
175
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