mirror of
https://github.com/ruby/ruby.git
synced 2026-10-29 08:55:35 +08:00
Fix remove_entry error when path encoding is not compatible UTF-8
This commit is contained in:
2 files changed
+22
-1
No files matched your search
+5
-1
@@ -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
|
||||
|
||||
|
||||
Reference in new issue
Block a user