From 1b0473c38ece757f509d6c41d9b5baab1400882a Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Sat, 9 Apr 2011 06:34:33 +0000 Subject: [PATCH] scm: set empty log encoding UTF-8 in Ruby 1.9 and add tests. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5368 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/changeset.rb | 5 ++++- test/unit/changeset_test.rb | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/app/models/changeset.rb b/app/models/changeset.rb index 7039d9905..6475ae2d0 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -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 diff --git a/test/unit/changeset_test.rb b/test/unit/changeset_test.rb index 9000193d7..9325874d4 100644 --- a/test/unit/changeset_test.rb +++ b/test/unit/changeset_test.rb @@ -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 -- 2.39.5