From 5a2c80cb48c4e876f93f0ed867dd8ec7afc0e008 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Sun, 28 Oct 2012 06:19:29 +0000 Subject: [PATCH] use String#encode at scm_iconv on Ruby 1.9 (#12228) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unit git adapter test fails on JRuby 1.7.
Failure:
  <"test-Ü-2.txt">("UTF-8") expected but was
  <"test-\xC3\x9C-2.txt">("ASCII-8BIT").

  diff:
  - test-Ü-2.txt
  ?      ^
  + test-Ü-2.txt
  ?      ^^
test_entries_latin_1_files(GitAdapterTest)
test/unit/lib/redmine/scm/adapters/git_adapter_test.rb:468:in `test_entries_latin_1_files'
     465:         assert entries1
     466:         assert_equal 3, entries1.size
     467:         f1 = entries1[1]
  => 468:         assert_equal "test-#{@char_1}-2.txt", f1.name
     469:         assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
     470:         assert_equal 'file', f1.kind
     471:       end
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10740 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/scm/adapters/abstract_adapter.rb | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/redmine/scm/adapters/abstract_adapter.rb b/lib/redmine/scm/adapters/abstract_adapter.rb index 429d0f17c..c15965595 100644 --- a/lib/redmine/scm/adapters/abstract_adapter.rb +++ b/lib/redmine/scm/adapters/abstract_adapter.rb @@ -260,11 +260,21 @@ module Redmine def scm_iconv(to, from, str) return nil if str.nil? return str if to == from - begin - Iconv.conv(to, from, str) - rescue Iconv::Failure => err - logger.error("failed to convert from #{from} to #{to}. #{err}") - nil + if str.respond_to?(:force_encoding) + str.force_encoding(from) + begin + s = str.encode(to) + rescue Exception => e + logger.error("failed to convert from #{from} to #{to}. #{err}") + nil + end + else + begin + Iconv.conv(to, from, str) + rescue Iconv::Failure => err + logger.error("failed to convert from #{from} to #{to}. #{err}") + nil + end end end