forked from rubyzip/rubyzip
/
unicode_file_names_and_comments_test.rb
62 lines (55 loc) · 1.81 KB
/
unicode_file_names_and_comments_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# encoding: utf-8
require 'test_helper'
class ZipUnicodeFileNamesAndComments < MiniTest::Test
FILENAME = File.join(File.dirname(__FILE__), 'test1.zip')
def test_unicode_file_name
file_entrys = ['текстовыйфайл.txt', 'Résumé.txt', '슬레이어스휘.txt']
directory_entrys = ['папка/текстовыйфайл.txt', 'Résumé/Résumé.txt', '슬레이어스휘/슬레이어스휘.txt']
stream = ::Zip::OutputStream.open(FILENAME) do |io|
file_entrys.each do |filename|
io.put_next_entry(filename)
io.write(filename)
end
directory_entrys.each do |filepath|
io.put_next_entry(filepath)
io.write(filepath)
end
end
assert(!stream.nil?)
::Zip::InputStream.open(FILENAME) do |io|
file_entrys.each do |filename|
entry = io.get_next_entry
entry_name = entry.name
entry_name = entry_name.force_encoding('UTF-8')
assert(filename == entry_name)
end
directory_entrys.each do |filepath|
entry = io.get_next_entry
entry_name = entry.name
entry_name = entry_name.force_encoding('UTF-8')
assert(filepath == entry_name)
end
end
::Zip.force_entry_names_encoding = 'UTF-8'
::Zip::File.open(FILENAME) do |zip|
file_entrys.each do |filename|
refute_nil(zip.find_entry(filename))
end
directory_entrys.each do |filepath|
refute_nil(zip.find_entry(filepath))
end
end
::Zip.force_entry_names_encoding = nil
::File.unlink(FILENAME)
end
def test_unicode_comment
str = '渠道升级'
::Zip::File.open(FILENAME, Zip::File::CREATE) do |z|
z.comment = str
end
::Zip::File.open(FILENAME) do |z|
assert(z.comment.force_encoding('UTF-8') == str)
end
::File.unlink(FILENAME)
end
end