summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-10-28 06:19:29 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2012-10-28 06:19:29 +0000
commit5a2c80cb48c4e876f93f0ed867dd8ec7afc0e008 (patch)
tree943406fd9d99ec57dada3d208b24ba520c786d02
parenta71ff93f8f753ac1b5b9374a8868cf839572f70c (diff)
downloadredmine-5a2c80cb48c4e876f93f0ed867dd8ec7afc0e008.tar.gz
redmine-5a2c80cb48c4e876f93f0ed867dd8ec7afc0e008.zip
use String#encode at scm_iconv on Ruby 1.9 (#12228)
Unit git adapter test fails on JRuby 1.7. <pre> 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 </pre> git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10740 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--lib/redmine/scm/adapters/abstract_adapter.rb20
1 files 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