@@ -0,0 +1,7 | |||||
|
1 | --- a.txt 2013-07-27 06:03:49.133257759 +0900 | |||
|
2 | +++ b.txt 2013-07-27 06:03:58.791221118 +0900 | |||
|
3 | @@ -1,3 +1,3 @@ | |||
|
4 | aaaa | |||
|
5 | -日本記 | |||
|
6 | +日本娘 | |||
|
7 | bbbb |
@@ -0,0 +1,7 | |||||
|
1 | --- a.txt 2013-07-27 04:20:45.973229414 +0900 | |||
|
2 | +++ b.txt 2013-07-27 04:20:52.366228105 +0900 | |||
|
3 | @@ -1,3 +1,3 @@ | |||
|
4 | aaaa | |||
|
5 | -日本記 | |||
|
6 | +日本誘 | |||
|
7 | bbbb |
@@ -0,0 +1,7 | |||||
|
1 | --- a.txt 2013-07-27 05:52:11.415223830 +0900 | |||
|
2 | +++ b.txt 2013-07-27 05:52:18.249190358 +0900 | |||
|
3 | @@ -1,3 +1,3 @@ | |||
|
4 | aaaa | |||
|
5 | -日本記ok | |||
|
6 | +日本誘ok | |||
|
7 | bbbb |
@@ -205,12 +205,20 module Redmine | |||||
205 | end |
|
205 | end | |
206 | end |
|
206 | end | |
207 | ending = -1 |
|
207 | ending = -1 | |
208 | while ending >= -(max - starting) && line_left[ending] == line_right[ending] |
|
208 | while ending >= -(max - starting) && (line_left[ending] == line_right[ending]) | |
209 | ending -= 1 |
|
209 | ending -= 1 | |
210 | end |
|
210 | end | |
211 | if (! "".respond_to?(:force_encoding)) && ending > (-1 * line_left.size) |
|
211 | if (! "".respond_to?(:force_encoding)) && ending > (-1 * line_left.size) | |
212 |
while line_left[ending].ord.between?(128, |
|
212 | while line_left[ending].ord.between?(128, 255) && ending < -1 | |
213 | ending -= 1 |
|
213 | if line_left[ending].ord.between?(128, 191) | |
|
214 | if line_left[ending + 1].ord.between?(128, 191) | |||
|
215 | ending += 1 | |||
|
216 | else | |||
|
217 | break | |||
|
218 | end | |||
|
219 | else | |||
|
220 | ending += 1 | |||
|
221 | end | |||
214 | end |
|
222 | end | |
215 | end |
|
223 | end | |
216 | unless starting == 0 && ending == -1 |
|
224 | unless starting == 0 && ending == -1 |
@@ -308,6 +308,54 DIFF | |||||
308 | end |
|
308 | end | |
309 | end |
|
309 | end | |
310 |
|
310 | |||
|
311 | def test_offset_range_japanese_3 | |||
|
312 | # UTF-8 The 1st byte differs. | |||
|
313 | ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>" | |||
|
314 | ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) | |||
|
315 | ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe5\xa8\x98</span>" | |||
|
316 | ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) | |||
|
317 | with_settings :repositories_encodings => '' do | |||
|
318 | diff = Redmine::UnifiedDiff.new( | |||
|
319 | read_diff_fixture('issue-13644-3.diff'), :type => 'sbs') | |||
|
320 | assert_equal 1, diff.size | |||
|
321 | assert_equal 3, diff.first.size | |||
|
322 | assert_equal ja1, diff.first[1].html_line_left | |||
|
323 | assert_equal ja2, diff.first[1].html_line_right | |||
|
324 | end | |||
|
325 | end | |||
|
326 | ||||
|
327 | def test_offset_range_japanese_4 | |||
|
328 | # UTF-8 The 2nd byte differs. | |||
|
329 | ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>" | |||
|
330 | ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) | |||
|
331 | ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x98</span>" | |||
|
332 | ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) | |||
|
333 | with_settings :repositories_encodings => '' do | |||
|
334 | diff = Redmine::UnifiedDiff.new( | |||
|
335 | read_diff_fixture('issue-13644-4.diff'), :type => 'sbs') | |||
|
336 | assert_equal 1, diff.size | |||
|
337 | assert_equal 3, diff.first.size | |||
|
338 | assert_equal ja1, diff.first[1].html_line_left | |||
|
339 | assert_equal ja2, diff.first[1].html_line_right | |||
|
340 | end | |||
|
341 | end | |||
|
342 | ||||
|
343 | def test_offset_range_japanese_5 | |||
|
344 | # UTF-8 The 2nd byte differs. | |||
|
345 | ja1 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xa8\x98</span>ok" | |||
|
346 | ja1.force_encoding('UTF-8') if ja1.respond_to?(:force_encoding) | |||
|
347 | ja2 = "\xe6\x97\xa5\xe6\x9c\xac<span>\xe8\xaa\x98</span>ok" | |||
|
348 | ja2.force_encoding('UTF-8') if ja2.respond_to?(:force_encoding) | |||
|
349 | with_settings :repositories_encodings => '' do | |||
|
350 | diff = Redmine::UnifiedDiff.new( | |||
|
351 | read_diff_fixture('issue-13644-5.diff'), :type => 'sbs') | |||
|
352 | assert_equal 1, diff.size | |||
|
353 | assert_equal 3, diff.first.size | |||
|
354 | assert_equal ja1, diff.first[1].html_line_left | |||
|
355 | assert_equal ja2, diff.first[1].html_line_right | |||
|
356 | end | |||
|
357 | end | |||
|
358 | ||||
311 | private |
|
359 | private | |
312 |
|
360 | |||
313 | def read_diff_fixture(filename) |
|
361 | def read_diff_fixture(filename) |
General Comments 0
You need to be logged in to leave comments.
Login now