1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/find.rb (Find.find): respect the encodings of arguments.

[ruby-dev:47530] [Feature #8657]

* test/test_find.rb: add tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42866 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ktsj 2013-09-07 04:34:27 +00:00
parent dd946739dd
commit 0a4801e768
3 changed files with 64 additions and 17 deletions

View file

@ -210,6 +210,40 @@ class TestFind < Test::Unit::TestCase
}
end
def test_encoding_ascii
Dir.mktmpdir {|d|
File.open("#{d}/a", "w"){}
Dir.mkdir("#{d}/b")
a = []
Find.find(d.encode(Encoding::US_ASCII)) {|f| a << f }
a.each do |i|
assert(Encoding.compatible?(d.encode(Encoding.find('filesystem')), i))
end
}
end
def test_encoding_non_ascii
Dir.mktmpdir {|d|
File.open("#{d}/a", "w"){}
Dir.mkdir("#{d}/b")
euc_jp = Encoding::EUC_JP
win_31j = Encoding::Windows_31J
utf_8 = Encoding::UTF_8
a = []
Find.find(d.encode(euc_jp), d.encode(win_31j), d.encode(utf_8)) {|f| a << [f, f.encoding] }
assert_equal([[d, euc_jp], ["#{d}/a", euc_jp], ["#{d}/b", euc_jp],
[d, win_31j], ["#{d}/a", win_31j], ["#{d}/b", win_31j],
[d, utf_8], ["#{d}/a", utf_8], ["#{d}/b", utf_8]],
a)
if /mswin|mingw/ =~ RUBY_PLATFORM
a = []
Dir.mkdir("#{d}/\u{2660}")
Find.find("#{d}".encode(utf_8)) {|f| a << [f, f.encoding] }
assert_equal([[d, utf_8], ["#{d}/a", utf_8], ["#{d}/b", utf_8], ["#{d}/\u{2660}", utf_8]], a)
end
}
end
class TestInclude < Test::Unit::TestCase
include Find