Project

General

Profile

Defect #13644 » unified_diff.rb_r12041.diff

Jun NAITOH, 2013-07-27 23:48

View differences:

test/unit/lib/redmine/unified_diff_test.rb (working copy)
308 308
    end
309 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 359
  private
312 360

  
313 361
  def read_diff_fixture(filename)
test/fixtures/diffs/issue-13644-4.diff (revision 0)
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
test/fixtures/diffs/issue-13644-5.diff (revision 0)
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
test/fixtures/diffs/issue-13644-3.diff (revision 0)
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
lib/redmine/unified_diff.rb (working copy)
205 205
          end
206 206
        end
207 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 209
          ending -= 1
210 210
        end
211 211
        if (! "".respond_to?(:force_encoding)) && ending > (-1 * line_left.size)
212
          while line_left[ending].ord.between?(128, 191) && ending > -1
213
            ending -= 1
212
          while line_left[ending].ord.between?(128, 255) && 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 222
          end
215 223
        end
216 224
        unless starting == 0 && ending == -1
(5-5/5)