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
|
def entries
|
||||||
opts = {}
|
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)
|
files = if Dir.respond_to?(:children)
|
||||||
Dir.children(path, **opts)
|
Dir.children(path, **opts)
|
||||||
|
|
|
@ -756,6 +756,23 @@ class TestFileUtils < Test::Unit::TestCase
|
||||||
assert_file_not_exist dir
|
assert_file_not_exist dir
|
||||||
end
|
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
|
def test_remove_entry_secure
|
||||||
check_singleton :remove_entry_secure
|
check_singleton :remove_entry_secure
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue