diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2012-10-28 06:19:29 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2012-10-28 06:19:29 +0000 |
commit | 5a2c80cb48c4e876f93f0ed867dd8ec7afc0e008 (patch) | |
tree | 943406fd9d99ec57dada3d208b24ba520c786d02 | |
parent | a71ff93f8f753ac1b5b9374a8868cf839572f70c (diff) | |
download | redmine-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.rb | 20 |
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 |