]> source.dussan.org Git - redmine.git/commitdiff
scm: set empty log encoding UTF-8 in Ruby 1.9 and add tests.
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 9 Apr 2011 06:34:33 +0000 (06:34 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Sat, 9 Apr 2011 06:34:33 +0000 (06:34 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5368 e93f8b46-1217-0410-a6f0-8f06a7374b81

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

index 7039d99057d6f24348854ac8bd5ba70976f5d0fc..6475ae2d0fbffddd3ba06fdf6a8ce731c7ad73c6 100644 (file)
@@ -247,7 +247,10 @@ class Changeset < ActiveRecord::Base
   def self.to_utf8(str, encoding)
     return str if str.nil?
     str.force_encoding("ASCII-8BIT") if str.respond_to?(:force_encoding)
-    return str if str.empty?
+    if str.empty?
+      str.force_encoding("UTF-8") if str.respond_to?(:force_encoding)
+      return str
+    end
     str.force_encoding("UTF-8") if str.respond_to?(:force_encoding)
     if str.respond_to?(:force_encoding)
       enc = encoding.blank? ? "UTF-8" : encoding
index 9000193d7eb88cb2c465e934d96d4708f37c6bf7..9325874d4c9f89e041a113c713a1d1bb932388c7 100644 (file)
@@ -292,6 +292,42 @@ class ChangesetTest < ActiveSupport::TestCase
       assert_equal s4, c.comments
   end
 
+  def test_comments_nil
+      proj = Project.find(3)
+      r = Repository::Bazaar.create!(
+            :project => proj, :url => '/tmp/test/bazaar',
+            :log_encoding => 'ISO-8859-1' )
+      assert r
+      c = Changeset.new(:repository => r,
+                        :committed_on => Time.now,
+                        :revision => '123',
+                        :scmid => '12345',
+                        :comments => nil)
+      assert( c.save )
+      assert_equal "", c.comments
+      if c.comments.respond_to?(:force_encoding)
+        assert_equal "UTF-8", c.comments.encoding.to_s
+      end
+  end
+
+  def test_comments_empty
+      proj = Project.find(3)
+      r = Repository::Bazaar.create!(
+            :project => proj, :url => '/tmp/test/bazaar',
+            :log_encoding => 'ISO-8859-1' )
+      assert r
+      c = Changeset.new(:repository => r,
+                        :committed_on => Time.now,
+                        :revision => '123',
+                        :scmid => '12345',
+                        :comments => "")
+      assert( c.save )
+      assert_equal "", c.comments
+      if c.comments.respond_to?(:force_encoding)
+        assert_equal "UTF-8", c.comments.encoding.to_s
+      end
+  end
+
   def test_identifier
     c = Changeset.find_by_revision('1')
     assert_equal c.revision, c.identifier