]> source.dussan.org Git - redmine.git/commitdiff
scm: Ruby 1.9 compatibility for log.
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Tue, 22 Feb 2011 13:39:12 +0000 (13:39 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Tue, 22 Feb 2011 13:39:12 +0000 (13:39 +0000)
Remove assuming UTF-8 is valid.
"\xC2\x80" of latin-1(iso-8859-1) is valid sequence of UTF-8.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4925 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/changeset.rb
test/unit/changeset_test.rb

index e49113ebfc398aa0e231e1eeb34fbb1112a19499..d2e4a53f8607b8b533a1f8ca5ae22c138957aeac 100644 (file)
@@ -245,13 +245,6 @@ class Changeset < ActiveRecord::Base
   end
 
   def self.to_utf8(str)
-    if str.respond_to?(:force_encoding)
-      str.force_encoding('UTF-8')
-      return str if str.valid_encoding?
-    else
-      return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
-    end
-
     encoding = Setting.commit_logs_encoding.to_s.strip
     unless encoding.blank? || encoding == 'UTF-8'
       begin
index cb4d640425aaa652f5bed3b822522dcc82e55ff4..508294fea533cf3102b707617c5798f250cb903c 100644 (file)
@@ -221,6 +221,25 @@ class ChangesetTest < ActiveSupport::TestCase
     end
   end
 
+  def test_comments_should_be_converted_all_latin1_to_utf8
+    with_settings :commit_logs_encoding => 'ISO-8859-1' do
+      c = Changeset.new
+      s1 = "\xC2\x80"
+      s2 = "\xc3\x82\xc2\x80"
+      if s1.respond_to?(:force_encoding)
+        s3 = s1
+        s4 = s2
+        s1.force_encoding('ASCII-8BIT')
+        s2.force_encoding('ASCII-8BIT')
+        s3.force_encoding('ISO-8859-1')
+        s4.force_encoding('UTF-8')
+        assert_equal s3.encode('UTF-8'), s4
+      end
+      c.comments = s1
+      assert_equal s2, c.comments
+    end
+  end
+
   def test_identifier
     c = Changeset.find_by_revision('1')
     assert_equal c.revision, c.identifier