зеркало из https://github.com/github/ruby.git
Fix remove_entry error when path encoding is not compatible UTF-8
This commit is contained in:
Родитель
48d7ebe6fc
Коммит
d231b8f95b
|
@ -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
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче