mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Fix remove_entry error when path encoding is not compatible UTF-8
This commit is contained in:
parent
48d7ebe6fc
commit
d231b8f95b
2 changed files with 22 additions and 1 deletions
|
@ -1287,7 +1287,11 @@ module FileUtils
|
|||
|
||||
def entries
|
||||
opts = {}
|
||||
opts[:encoding] = fu_windows? ? ::Encoding::UTF_8 : path.encoding
|
||||
if fu_windows? && ::Encoding.compatible?(::Encoding::UTF_8, path.encoding)
|
||||
opts[:encoding] = ::Encoding::UTF_8
|
||||
else
|
||||
opts[:encoding] = path.encoding
|
||||
end
|
||||
|
||||
files = if Dir.respond_to?(:children)
|
||||
Dir.children(path, **opts)
|
||||
|
|
|
@ -756,6 +756,23 @@ class TestFileUtils < Test::Unit::TestCase
|
|||
assert_file_not_exist dir
|
||||
end
|
||||
|
||||
def test_remove_entry_multibyte_path
|
||||
c = "\u00a7"
|
||||
begin
|
||||
c = c.encode('filesystem')
|
||||
rescue EncodingError
|
||||
c = c.b
|
||||
end
|
||||
dir = "tmpdir#{c}"
|
||||
my_rm_rf dir
|
||||
|
||||
Dir.mkdir dir
|
||||
File.write("#{dir}/#{c}.txt", "test_remove_entry_multibyte_path")
|
||||
|
||||
remove_entry dir
|
||||
assert_file_not_exist dir
|
||||
end
|
||||
|
||||
def test_remove_entry_secure
|
||||
check_singleton :remove_entry_secure
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue