rubyzip 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -8
- data/lib/zip.rb +1 -1
- data/lib/zip/version.rb +1 -1
- metadata +6 -154
- data/test/basic_zip_file_test.rb +0 -60
- data/test/case_sensitivity_test.rb +0 -69
- data/test/central_directory_entry_test.rb +0 -69
- data/test/central_directory_test.rb +0 -100
- data/test/crypto/null_encryption_test.rb +0 -57
- data/test/crypto/traditional_encryption_test.rb +0 -80
- data/test/data/WarnInvalidDate.zip +0 -0
- data/test/data/file1.txt +0 -46
- data/test/data/file1.txt.deflatedData +0 -0
- data/test/data/file2.txt +0 -1504
- data/test/data/globTest.zip +0 -0
- data/test/data/globTest/foo.txt +0 -0
- data/test/data/globTest/foo/bar/baz/foo.txt +0 -0
- data/test/data/globTest/food.txt +0 -0
- data/test/data/gpbit3stored.zip +0 -0
- data/test/data/mimetype +0 -1
- data/test/data/notzippedruby.rb +0 -7
- data/test/data/ntfs.zip +0 -0
- data/test/data/oddExtraField.zip +0 -0
- data/test/data/path_traversal/Makefile +0 -10
- data/test/data/path_traversal/jwilk/README.md +0 -5
- data/test/data/path_traversal/jwilk/absolute1.zip +0 -0
- data/test/data/path_traversal/jwilk/absolute2.zip +0 -0
- data/test/data/path_traversal/jwilk/dirsymlink.zip +0 -0
- data/test/data/path_traversal/jwilk/dirsymlink2a.zip +0 -0
- data/test/data/path_traversal/jwilk/dirsymlink2b.zip +0 -0
- data/test/data/path_traversal/jwilk/relative0.zip +0 -0
- data/test/data/path_traversal/jwilk/relative2.zip +0 -0
- data/test/data/path_traversal/jwilk/symlink.zip +0 -0
- data/test/data/path_traversal/relative1.zip +0 -0
- data/test/data/path_traversal/tilde.zip +0 -0
- data/test/data/path_traversal/tuzovakaoff/README.md +0 -3
- data/test/data/path_traversal/tuzovakaoff/absolutepath.zip +0 -0
- data/test/data/path_traversal/tuzovakaoff/symlink.zip +0 -0
- data/test/data/rubycode.zip +0 -0
- data/test/data/rubycode2.zip +0 -0
- data/test/data/test.xls +0 -0
- data/test/data/testDirectory.bin +0 -0
- data/test/data/zip64-sample.zip +0 -0
- data/test/data/zipWithDirs.zip +0 -0
- data/test/data/zipWithEncryption.zip +0 -0
- data/test/deflater_test.rb +0 -65
- data/test/encryption_test.rb +0 -42
- data/test/entry_set_test.rb +0 -163
- data/test/entry_test.rb +0 -154
- data/test/errors_test.rb +0 -35
- data/test/extra_field_test.rb +0 -76
- data/test/file_extract_directory_test.rb +0 -54
- data/test/file_extract_test.rb +0 -145
- data/test/file_permissions_test.rb +0 -65
- data/test/file_split_test.rb +0 -57
- data/test/file_test.rb +0 -666
- data/test/filesystem/dir_iterator_test.rb +0 -58
- data/test/filesystem/directory_test.rb +0 -139
- data/test/filesystem/file_mutating_test.rb +0 -87
- data/test/filesystem/file_nonmutating_test.rb +0 -508
- data/test/filesystem/file_stat_test.rb +0 -64
- data/test/gentestfiles.rb +0 -126
- data/test/inflater_test.rb +0 -14
- data/test/input_stream_test.rb +0 -182
- data/test/ioextras/abstract_input_stream_test.rb +0 -102
- data/test/ioextras/abstract_output_stream_test.rb +0 -106
- data/test/ioextras/fake_io_test.rb +0 -18
- data/test/local_entry_test.rb +0 -154
- data/test/output_stream_test.rb +0 -128
- data/test/pass_thru_compressor_test.rb +0 -30
- data/test/pass_thru_decompressor_test.rb +0 -14
- data/test/path_traversal_test.rb +0 -141
- data/test/samples/example_recursive_test.rb +0 -37
- data/test/settings_test.rb +0 -95
- data/test/test_helper.rb +0 -234
- data/test/unicode_file_names_and_comments_test.rb +0 -62
- data/test/zip64_full_test.rb +0 -51
- data/test/zip64_support_test.rb +0 -14
data/test/data/globTest.zip
DELETED
Binary file
|
data/test/data/globTest/foo.txt
DELETED
File without changes
|
File without changes
|
data/test/data/globTest/food.txt
DELETED
File without changes
|
data/test/data/gpbit3stored.zip
DELETED
Binary file
|
data/test/data/mimetype
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
application/epub+zip
|
data/test/data/notzippedruby.rb
DELETED
data/test/data/ntfs.zip
DELETED
Binary file
|
data/test/data/oddExtraField.zip
DELETED
Binary file
|
@@ -1,10 +0,0 @@
|
|
1
|
-
# Based on 'relative2' in https://github.com/jwilk/path-traversal-samples,
|
2
|
-
# but create the local `tmp` folder before adding the symlink. Otherwise
|
3
|
-
# we may bail out before we get to trying to create the file.
|
4
|
-
all: relative1.zip
|
5
|
-
relative1.zip:
|
6
|
-
rm -f $(@)
|
7
|
-
mkdir -p -m 755 tmp/tmp
|
8
|
-
umask 022 && echo moo > moo
|
9
|
-
cd tmp && zip -X ../$(@) tmp tmp/../../moo
|
10
|
-
rm -rf tmp moo
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/data/rubycode.zip
DELETED
Binary file
|
data/test/data/rubycode2.zip
DELETED
Binary file
|
data/test/data/test.xls
DELETED
Binary file
|
data/test/data/testDirectory.bin
DELETED
Binary file
|
data/test/data/zip64-sample.zip
DELETED
Binary file
|
data/test/data/zipWithDirs.zip
DELETED
Binary file
|
Binary file
|
data/test/deflater_test.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class DeflaterTest < MiniTest::Test
|
4
|
-
include CrcTest
|
5
|
-
|
6
|
-
DEFLATER_TEST_FILE = 'test/data/generated/deflatertest.bin'
|
7
|
-
BEST_COMP_FILE = 'test/data/generated/compressiontest_best_compression.bin'
|
8
|
-
DEFAULT_COMP_FILE = 'test/data/generated/compressiontest_default_compression.bin'
|
9
|
-
NO_COMP_FILE = 'test/data/generated/compressiontest_no_compression.bin'
|
10
|
-
|
11
|
-
def test_output_operator
|
12
|
-
txt = load_file('test/data/file2.txt')
|
13
|
-
deflate(txt, DEFLATER_TEST_FILE)
|
14
|
-
inflatedTxt = inflate(DEFLATER_TEST_FILE)
|
15
|
-
assert_equal(txt, inflatedTxt)
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_default_compression
|
19
|
-
txt = load_file('test/data/file2.txt')
|
20
|
-
|
21
|
-
Zip.default_compression = ::Zlib::BEST_COMPRESSION
|
22
|
-
deflate(txt, BEST_COMP_FILE)
|
23
|
-
Zip.default_compression = ::Zlib::DEFAULT_COMPRESSION
|
24
|
-
deflate(txt, DEFAULT_COMP_FILE)
|
25
|
-
Zip.default_compression = ::Zlib::NO_COMPRESSION
|
26
|
-
deflate(txt, NO_COMP_FILE)
|
27
|
-
|
28
|
-
best = File.size(BEST_COMP_FILE)
|
29
|
-
default = File.size(DEFAULT_COMP_FILE)
|
30
|
-
no = File.size(NO_COMP_FILE)
|
31
|
-
|
32
|
-
assert(best < default)
|
33
|
-
assert(best < no)
|
34
|
-
assert(default < no)
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def load_file(fileName)
|
40
|
-
txt = nil
|
41
|
-
File.open(fileName, 'rb') { |f| txt = f.read }
|
42
|
-
end
|
43
|
-
|
44
|
-
def deflate(data, fileName)
|
45
|
-
File.open(fileName, 'wb') do |file|
|
46
|
-
deflater = ::Zip::Deflater.new(file)
|
47
|
-
deflater << data
|
48
|
-
deflater.finish
|
49
|
-
assert_equal(deflater.size, data.size)
|
50
|
-
file << 'trailing data for zlib with -MAX_WBITS'
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def inflate(fileName)
|
55
|
-
txt = nil
|
56
|
-
File.open(fileName, 'rb') do |file|
|
57
|
-
inflater = ::Zip::Inflater.new(file)
|
58
|
-
txt = inflater.sysread
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_crc
|
63
|
-
run_crc_test(::Zip::Deflater)
|
64
|
-
end
|
65
|
-
end
|
data/test/encryption_test.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class EncryptionTest < MiniTest::Test
|
4
|
-
ENCRYPT_ZIP_TEST_FILE = 'test/data/zipWithEncryption.zip'
|
5
|
-
INPUT_FILE1 = 'test/data/file1.txt'
|
6
|
-
|
7
|
-
def setup
|
8
|
-
@default_compression = Zip.default_compression
|
9
|
-
Zip.default_compression = ::Zlib::DEFAULT_COMPRESSION
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
Zip.default_compression = @default_compression
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_encrypt
|
17
|
-
test_file = open(ENCRYPT_ZIP_TEST_FILE, 'rb').read
|
18
|
-
|
19
|
-
@rand = [250, 143, 107, 13, 143, 22, 155, 75, 228, 150, 12]
|
20
|
-
@output = ::Zip::DOSTime.stub(:now, ::Zip::DOSTime.new(2014, 12, 17, 15, 56, 24)) do
|
21
|
-
Random.stub(:rand, ->(_range) { @rand.shift }) do
|
22
|
-
Zip::OutputStream.write_buffer(::StringIO.new(''), Zip::TraditionalEncrypter.new('password')) do |zos|
|
23
|
-
zos.put_next_entry('file1.txt')
|
24
|
-
zos.write open(INPUT_FILE1).read
|
25
|
-
end.string
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
@output.unpack('C*').each_with_index do |c, i|
|
30
|
-
assert_equal test_file[i].ord, c
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_decrypt
|
35
|
-
Zip::InputStream.open(ENCRYPT_ZIP_TEST_FILE, 0, Zip::TraditionalDecrypter.new('password')) do |zis|
|
36
|
-
entry = zis.get_next_entry
|
37
|
-
assert_equal 'file1.txt', entry.name
|
38
|
-
assert_equal 1327, entry.size
|
39
|
-
assert_equal open(INPUT_FILE1, 'r').read, zis.read
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
data/test/entry_set_test.rb
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ZipEntrySetTest < MiniTest::Test
|
4
|
-
ZIP_ENTRIES = [
|
5
|
-
::Zip::Entry.new('zipfile.zip', 'name1', 'comment1'),
|
6
|
-
::Zip::Entry.new('zipfile.zip', 'name3', 'comment1'),
|
7
|
-
::Zip::Entry.new('zipfile.zip', 'name2', 'comment1'),
|
8
|
-
::Zip::Entry.new('zipfile.zip', 'name4', 'comment1'),
|
9
|
-
::Zip::Entry.new('zipfile.zip', 'name5', 'comment1'),
|
10
|
-
::Zip::Entry.new('zipfile.zip', 'name6', 'comment1')
|
11
|
-
]
|
12
|
-
|
13
|
-
def setup
|
14
|
-
@zipEntrySet = ::Zip::EntrySet.new(ZIP_ENTRIES)
|
15
|
-
end
|
16
|
-
|
17
|
-
def teardown
|
18
|
-
::Zip.reset!
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_include
|
22
|
-
assert(@zipEntrySet.include?(ZIP_ENTRIES.first))
|
23
|
-
assert(!@zipEntrySet.include?(::Zip::Entry.new('different.zip', 'different', 'aComment')))
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_size
|
27
|
-
assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
|
28
|
-
assert_equal(ZIP_ENTRIES.size, @zipEntrySet.length)
|
29
|
-
@zipEntrySet << ::Zip::Entry.new('a', 'b', 'c')
|
30
|
-
assert_equal(ZIP_ENTRIES.size + 1, @zipEntrySet.length)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_add
|
34
|
-
zes = ::Zip::EntrySet.new
|
35
|
-
entry1 = ::Zip::Entry.new('zf.zip', 'name1')
|
36
|
-
entry2 = ::Zip::Entry.new('zf.zip', 'name2')
|
37
|
-
zes << entry1
|
38
|
-
assert(zes.include?(entry1))
|
39
|
-
zes.push(entry2)
|
40
|
-
assert(zes.include?(entry2))
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_delete
|
44
|
-
assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
|
45
|
-
entry = @zipEntrySet.delete(ZIP_ENTRIES.first)
|
46
|
-
assert_equal(ZIP_ENTRIES.size - 1, @zipEntrySet.size)
|
47
|
-
assert_equal(ZIP_ENTRIES.first, entry)
|
48
|
-
|
49
|
-
entry = @zipEntrySet.delete(ZIP_ENTRIES.first)
|
50
|
-
assert_equal(ZIP_ENTRIES.size - 1, @zipEntrySet.size)
|
51
|
-
assert_nil(entry)
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_each
|
55
|
-
# Used each instead each_with_index due the bug in jRuby
|
56
|
-
count = 0
|
57
|
-
@zipEntrySet.each do |entry|
|
58
|
-
assert(ZIP_ENTRIES.include?(entry))
|
59
|
-
count += 1
|
60
|
-
end
|
61
|
-
assert_equal(ZIP_ENTRIES.size, count)
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_entries
|
65
|
-
assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_find_entry
|
69
|
-
entries = [::Zip::Entry.new('zipfile.zip', 'MiXeDcAsEnAmE', 'comment1')]
|
70
|
-
|
71
|
-
::Zip.case_insensitive_match = true
|
72
|
-
zipEntrySet = ::Zip::EntrySet.new(entries)
|
73
|
-
assert_equal(entries[0], zipEntrySet.find_entry('MiXeDcAsEnAmE'))
|
74
|
-
assert_equal(entries[0], zipEntrySet.find_entry('mixedcasename'))
|
75
|
-
|
76
|
-
::Zip.case_insensitive_match = false
|
77
|
-
zipEntrySet = ::Zip::EntrySet.new(entries)
|
78
|
-
assert_equal(entries[0], zipEntrySet.find_entry('MiXeDcAsEnAmE'))
|
79
|
-
assert_nil(zipEntrySet.find_entry('mixedcasename'))
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_entries_with_sort
|
83
|
-
::Zip.sort_entries = true
|
84
|
-
assert_equal(ZIP_ENTRIES.sort, @zipEntrySet.entries)
|
85
|
-
::Zip.sort_entries = false
|
86
|
-
assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_entries_sorted_in_each
|
90
|
-
::Zip.sort_entries = true
|
91
|
-
arr = []
|
92
|
-
@zipEntrySet.each do |entry|
|
93
|
-
arr << entry
|
94
|
-
end
|
95
|
-
assert_equal(ZIP_ENTRIES.sort, arr)
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_compound
|
99
|
-
newEntry = ::Zip::Entry.new('zf.zip', 'new entry', "new entry's comment")
|
100
|
-
assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
|
101
|
-
@zipEntrySet << newEntry
|
102
|
-
assert_equal(ZIP_ENTRIES.size + 1, @zipEntrySet.size)
|
103
|
-
assert(@zipEntrySet.include?(newEntry))
|
104
|
-
|
105
|
-
@zipEntrySet.delete(newEntry)
|
106
|
-
assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_dup
|
110
|
-
copy = @zipEntrySet.dup
|
111
|
-
assert_equal(@zipEntrySet, copy)
|
112
|
-
|
113
|
-
# demonstrate that this is a deep copy
|
114
|
-
copy.entries[0].name = 'a totally different name'
|
115
|
-
assert(@zipEntrySet != copy)
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_parent
|
119
|
-
entries = [
|
120
|
-
::Zip::Entry.new('zf.zip', 'a/'),
|
121
|
-
::Zip::Entry.new('zf.zip', 'a/b/'),
|
122
|
-
::Zip::Entry.new('zf.zip', 'a/b/c/')
|
123
|
-
]
|
124
|
-
entrySet = ::Zip::EntrySet.new(entries)
|
125
|
-
|
126
|
-
assert_nil(entrySet.parent(entries[0]))
|
127
|
-
assert_equal(entries[0], entrySet.parent(entries[1]))
|
128
|
-
assert_equal(entries[1], entrySet.parent(entries[2]))
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_glob
|
132
|
-
res = @zipEntrySet.glob('name[2-4]')
|
133
|
-
assert_equal(3, res.size)
|
134
|
-
assert_equal(ZIP_ENTRIES[1, 3].sort, res.sort)
|
135
|
-
end
|
136
|
-
|
137
|
-
def test_glob2
|
138
|
-
entries = [
|
139
|
-
::Zip::Entry.new('zf.zip', 'a/'),
|
140
|
-
::Zip::Entry.new('zf.zip', 'a/b/b1'),
|
141
|
-
::Zip::Entry.new('zf.zip', 'a/b/c/'),
|
142
|
-
::Zip::Entry.new('zf.zip', 'a/b/c/c1')
|
143
|
-
]
|
144
|
-
entrySet = ::Zip::EntrySet.new(entries)
|
145
|
-
|
146
|
-
assert_equal(entries[0, 1], entrySet.glob('*'))
|
147
|
-
# assert_equal(entries[FIXME], entrySet.glob("**"))
|
148
|
-
# res = entrySet.glob('a*')
|
149
|
-
# assert_equal(entries.size, res.size)
|
150
|
-
# assert_equal(entrySet.map { |e| e.name }, res.map { |e| e.name })
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_glob3
|
154
|
-
entries = [
|
155
|
-
::Zip::Entry.new('zf.zip', 'a/a'),
|
156
|
-
::Zip::Entry.new('zf.zip', 'a/b'),
|
157
|
-
::Zip::Entry.new('zf.zip', 'a/c')
|
158
|
-
]
|
159
|
-
entrySet = ::Zip::EntrySet.new(entries)
|
160
|
-
|
161
|
-
assert_equal(entries[0, 2].sort, entrySet.glob('a/{a,b}').sort)
|
162
|
-
end
|
163
|
-
end
|
data/test/entry_test.rb
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ZipEntryTest < MiniTest::Test
|
4
|
-
include ZipEntryData
|
5
|
-
|
6
|
-
def test_constructor_and_getters
|
7
|
-
entry = ::Zip::Entry.new(TEST_ZIPFILE,
|
8
|
-
TEST_NAME,
|
9
|
-
TEST_COMMENT,
|
10
|
-
TEST_EXTRA,
|
11
|
-
TEST_COMPRESSED_SIZE,
|
12
|
-
TEST_CRC,
|
13
|
-
TEST_COMPRESSIONMETHOD,
|
14
|
-
TEST_SIZE,
|
15
|
-
TEST_TIME)
|
16
|
-
|
17
|
-
assert_equal(TEST_COMMENT, entry.comment)
|
18
|
-
assert_equal(TEST_COMPRESSED_SIZE, entry.compressed_size)
|
19
|
-
assert_equal(TEST_CRC, entry.crc)
|
20
|
-
assert_instance_of(::Zip::ExtraField, entry.extra)
|
21
|
-
assert_equal(TEST_COMPRESSIONMETHOD, entry.compression_method)
|
22
|
-
assert_equal(TEST_NAME, entry.name)
|
23
|
-
assert_equal(TEST_SIZE, entry.size)
|
24
|
-
assert_equal(TEST_TIME, entry.time)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_is_directory_and_is_file
|
28
|
-
assert(::Zip::Entry.new(TEST_ZIPFILE, 'hello').file?)
|
29
|
-
assert(!::Zip::Entry.new(TEST_ZIPFILE, 'hello').directory?)
|
30
|
-
|
31
|
-
assert(::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello').file?)
|
32
|
-
assert(!::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello').directory?)
|
33
|
-
|
34
|
-
assert(::Zip::Entry.new(TEST_ZIPFILE, 'hello/').directory?)
|
35
|
-
assert(!::Zip::Entry.new(TEST_ZIPFILE, 'hello/').file?)
|
36
|
-
|
37
|
-
assert(::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello/').directory?)
|
38
|
-
assert(!::Zip::Entry.new(TEST_ZIPFILE, 'dir/hello/').file?)
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_equality
|
42
|
-
entry1 = ::Zip::Entry.new('file.zip', 'name', 'isNotCompared',
|
43
|
-
'something extra', 123, 1234,
|
44
|
-
::Zip::Entry::DEFLATED, 10_000)
|
45
|
-
entry2 = ::Zip::Entry.new('file.zip', 'name', 'isNotComparedXXX',
|
46
|
-
'something extra', 123, 1234,
|
47
|
-
::Zip::Entry::DEFLATED, 10_000)
|
48
|
-
entry3 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
|
49
|
-
'something extra', 123, 1234,
|
50
|
-
::Zip::Entry::DEFLATED, 10_000)
|
51
|
-
entry4 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
|
52
|
-
'something extraXX', 123, 1234,
|
53
|
-
::Zip::Entry::DEFLATED, 10_000)
|
54
|
-
entry5 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
|
55
|
-
'something extraXX', 12, 1234,
|
56
|
-
::Zip::Entry::DEFLATED, 10_000)
|
57
|
-
entry6 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
|
58
|
-
'something extraXX', 12, 123,
|
59
|
-
::Zip::Entry::DEFLATED, 10_000)
|
60
|
-
entry7 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
|
61
|
-
'something extraXX', 12, 123,
|
62
|
-
::Zip::Entry::STORED, 10_000)
|
63
|
-
entry8 = ::Zip::Entry.new('file.zip', 'name2', 'isNotComparedXXX',
|
64
|
-
'something extraXX', 12, 123,
|
65
|
-
::Zip::Entry::STORED, 100_000)
|
66
|
-
|
67
|
-
assert_equal(entry1, entry1)
|
68
|
-
assert_equal(entry1, entry2)
|
69
|
-
|
70
|
-
assert(entry2 != entry3)
|
71
|
-
assert(entry3 != entry4)
|
72
|
-
assert(entry4 != entry5)
|
73
|
-
assert(entry5 != entry6)
|
74
|
-
assert(entry6 != entry7)
|
75
|
-
assert(entry7 != entry8)
|
76
|
-
|
77
|
-
assert(entry7 != 'hello')
|
78
|
-
assert(entry7 != 12)
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_compare
|
82
|
-
assert_equal(0, (::Zip::Entry.new('zf.zip', 'a') <=> ::Zip::Entry.new('zf.zip', 'a')))
|
83
|
-
assert_equal(1, (::Zip::Entry.new('zf.zip', 'b') <=> ::Zip::Entry.new('zf.zip', 'a')))
|
84
|
-
assert_equal(-1, (::Zip::Entry.new('zf.zip', 'a') <=> ::Zip::Entry.new('zf.zip', 'b')))
|
85
|
-
|
86
|
-
entries = [
|
87
|
-
::Zip::Entry.new('zf.zip', '5'),
|
88
|
-
::Zip::Entry.new('zf.zip', '1'),
|
89
|
-
::Zip::Entry.new('zf.zip', '3'),
|
90
|
-
::Zip::Entry.new('zf.zip', '4'),
|
91
|
-
::Zip::Entry.new('zf.zip', '0'),
|
92
|
-
::Zip::Entry.new('zf.zip', '2')
|
93
|
-
]
|
94
|
-
|
95
|
-
entries.sort!
|
96
|
-
assert_equal('0', entries[0].to_s)
|
97
|
-
assert_equal('1', entries[1].to_s)
|
98
|
-
assert_equal('2', entries[2].to_s)
|
99
|
-
assert_equal('3', entries[3].to_s)
|
100
|
-
assert_equal('4', entries[4].to_s)
|
101
|
-
assert_equal('5', entries[5].to_s)
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_parent_as_string
|
105
|
-
entry1 = ::Zip::Entry.new('zf.zip', 'aa')
|
106
|
-
entry2 = ::Zip::Entry.new('zf.zip', 'aa/')
|
107
|
-
entry3 = ::Zip::Entry.new('zf.zip', 'aa/bb')
|
108
|
-
entry4 = ::Zip::Entry.new('zf.zip', 'aa/bb/')
|
109
|
-
entry5 = ::Zip::Entry.new('zf.zip', 'aa/bb/cc')
|
110
|
-
entry6 = ::Zip::Entry.new('zf.zip', 'aa/bb/cc/')
|
111
|
-
|
112
|
-
assert_nil(entry1.parent_as_string)
|
113
|
-
assert_nil(entry2.parent_as_string)
|
114
|
-
assert_equal('aa/', entry3.parent_as_string)
|
115
|
-
assert_equal('aa/', entry4.parent_as_string)
|
116
|
-
assert_equal('aa/bb/', entry5.parent_as_string)
|
117
|
-
assert_equal('aa/bb/', entry6.parent_as_string)
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_entry_name_cannot_start_with_slash
|
121
|
-
assert_raises(::Zip::EntryNameError) { ::Zip::Entry.new('zf.zip', '/hej/der') }
|
122
|
-
end
|
123
|
-
|
124
|
-
def test_store_file_without_compression
|
125
|
-
File.delete('/tmp/no_compress.zip') if File.exist?('/tmp/no_compress.zip')
|
126
|
-
files = Dir[File.join('test/data/globTest', '**', '**')]
|
127
|
-
|
128
|
-
Zip.setup do |z|
|
129
|
-
z.write_zip64_support = false
|
130
|
-
end
|
131
|
-
|
132
|
-
zipfile = Zip::File.open('/tmp/no_compress.zip', Zip::File::CREATE)
|
133
|
-
mimetype_entry = Zip::Entry.new(zipfile, # @zipfile
|
134
|
-
'mimetype', # @name
|
135
|
-
'', # @comment
|
136
|
-
'', # @extra
|
137
|
-
0, # @compressed_size
|
138
|
-
0, # @crc
|
139
|
-
Zip::Entry::STORED) # @comppressed_method
|
140
|
-
|
141
|
-
zipfile.add(mimetype_entry, 'test/data/mimetype')
|
142
|
-
|
143
|
-
files.each do |file|
|
144
|
-
zipfile.add(file.sub('test/data/globTest/', ''), file)
|
145
|
-
end
|
146
|
-
zipfile.close
|
147
|
-
|
148
|
-
f = File.open('/tmp/no_compress.zip', 'rb')
|
149
|
-
first_100_bytes = f.read(100)
|
150
|
-
f.close
|
151
|
-
|
152
|
-
assert_match(/mimetypeapplication\/epub\+zip/, first_100_bytes)
|
153
|
-
end
|
154
|
-
end
|