rubyzip 1.1.7 → 2.3.2

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.
Files changed (101) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +137 -54
  3. data/Rakefile +6 -4
  4. data/lib/zip/central_directory.rb +17 -13
  5. data/lib/zip/compressor.rb +1 -2
  6. data/lib/zip/constants.rb +57 -5
  7. data/lib/zip/crypto/decrypted_io.rb +40 -0
  8. data/lib/zip/crypto/null_encryption.rb +4 -6
  9. data/lib/zip/crypto/traditional_encryption.rb +14 -14
  10. data/lib/zip/decompressor.rb +22 -4
  11. data/lib/zip/deflater.rb +8 -6
  12. data/lib/zip/dos_time.rb +17 -13
  13. data/lib/zip/entry.rb +171 -148
  14. data/lib/zip/entry_set.rb +16 -14
  15. data/lib/zip/errors.rb +3 -0
  16. data/lib/zip/extra_field/generic.rb +14 -13
  17. data/lib/zip/extra_field/ntfs.rb +18 -16
  18. data/lib/zip/extra_field/old_unix.rb +12 -11
  19. data/lib/zip/extra_field/universal_time.rb +46 -16
  20. data/lib/zip/extra_field/unix.rb +10 -9
  21. data/lib/zip/extra_field/zip64.rb +15 -12
  22. data/lib/zip/extra_field/zip64_placeholder.rb +1 -2
  23. data/lib/zip/extra_field.rb +18 -16
  24. data/lib/zip/file.rb +147 -115
  25. data/lib/zip/filesystem.rb +289 -272
  26. data/lib/zip/inflater.rb +24 -36
  27. data/lib/zip/input_stream.rb +44 -28
  28. data/lib/zip/ioextras/abstract_input_stream.rb +24 -17
  29. data/lib/zip/ioextras/abstract_output_stream.rb +4 -6
  30. data/lib/zip/ioextras.rb +2 -4
  31. data/lib/zip/null_compressor.rb +2 -2
  32. data/lib/zip/null_decompressor.rb +3 -11
  33. data/lib/zip/null_input_stream.rb +0 -0
  34. data/lib/zip/output_stream.rb +25 -17
  35. data/lib/zip/pass_thru_compressor.rb +6 -6
  36. data/lib/zip/pass_thru_decompressor.rb +14 -24
  37. data/lib/zip/streamable_directory.rb +3 -3
  38. data/lib/zip/streamable_stream.rb +7 -11
  39. data/lib/zip/version.rb +1 -1
  40. data/lib/zip.rb +15 -6
  41. data/samples/example.rb +29 -39
  42. data/samples/example_filesystem.rb +16 -18
  43. data/samples/example_recursive.rb +31 -25
  44. data/samples/gtk_ruby_zip.rb +84 -0
  45. data/samples/qtzip.rb +23 -32
  46. data/samples/write_simple.rb +10 -13
  47. data/samples/zipfind.rb +33 -40
  48. metadata +50 -141
  49. data/samples/gtkRubyzip.rb +0 -86
  50. data/test/basic_zip_file_test.rb +0 -64
  51. data/test/central_directory_entry_test.rb +0 -73
  52. data/test/central_directory_test.rb +0 -104
  53. data/test/crypto/null_encryption_test.rb +0 -53
  54. data/test/crypto/traditional_encryption_test.rb +0 -80
  55. data/test/data/WarnInvalidDate.zip +0 -0
  56. data/test/data/file1.txt +0 -46
  57. data/test/data/file1.txt.deflatedData +0 -0
  58. data/test/data/file2.txt +0 -1504
  59. data/test/data/globTest/foo/bar/baz/foo.txt +0 -0
  60. data/test/data/globTest/foo.txt +0 -0
  61. data/test/data/globTest/food.txt +0 -0
  62. data/test/data/globTest.zip +0 -0
  63. data/test/data/mimetype +0 -1
  64. data/test/data/notzippedruby.rb +0 -7
  65. data/test/data/ntfs.zip +0 -0
  66. data/test/data/rubycode.zip +0 -0
  67. data/test/data/rubycode2.zip +0 -0
  68. data/test/data/testDirectory.bin +0 -0
  69. data/test/data/zip64-sample.zip +0 -0
  70. data/test/data/zipWithDirs.zip +0 -0
  71. data/test/data/zipWithEncryption.zip +0 -0
  72. data/test/deflater_test.rb +0 -67
  73. data/test/encryption_test.rb +0 -42
  74. data/test/entry_set_test.rb +0 -138
  75. data/test/entry_test.rb +0 -165
  76. data/test/errors_test.rb +0 -36
  77. data/test/extra_field_test.rb +0 -78
  78. data/test/file_extract_directory_test.rb +0 -56
  79. data/test/file_extract_test.rb +0 -90
  80. data/test/file_split_test.rb +0 -60
  81. data/test/file_test.rb +0 -559
  82. data/test/filesystem/dir_iterator_test.rb +0 -62
  83. data/test/filesystem/directory_test.rb +0 -131
  84. data/test/filesystem/file_mutating_test.rb +0 -100
  85. data/test/filesystem/file_nonmutating_test.rb +0 -514
  86. data/test/filesystem/file_stat_test.rb +0 -66
  87. data/test/gentestfiles.rb +0 -134
  88. data/test/inflater_test.rb +0 -14
  89. data/test/input_stream_test.rb +0 -170
  90. data/test/ioextras/abstract_input_stream_test.rb +0 -103
  91. data/test/ioextras/abstract_output_stream_test.rb +0 -106
  92. data/test/ioextras/fake_io_test.rb +0 -18
  93. data/test/local_entry_test.rb +0 -156
  94. data/test/output_stream_test.rb +0 -129
  95. data/test/pass_thru_compressor_test.rb +0 -31
  96. data/test/pass_thru_decompressor_test.rb +0 -15
  97. data/test/settings_test.rb +0 -92
  98. data/test/test_helper.rb +0 -228
  99. data/test/unicode_file_names_and_comments_test.rb +0 -52
  100. data/test/zip64_full_test.rb +0 -53
  101. data/test/zip64_support_test.rb +0 -15
File without changes
File without changes
File without changes
Binary file
data/test/data/mimetype DELETED
@@ -1 +0,0 @@
1
- application/epub+zip
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- class NotZippedRuby
4
- def returnTrue
5
- true
6
- end
7
- end
data/test/data/ntfs.zip DELETED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,67 +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_outputOperator
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
-
38
- private
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") {
46
- |file|
47
- deflater = ::Zip::Deflater.new(file)
48
- deflater << data
49
- deflater.finish
50
- assert_equal(deflater.size, data.size)
51
- file << "trailing data for zlib with -MAX_WBITS"
52
- }
53
- end
54
-
55
- def inflate(fileName)
56
- txt = nil
57
- File.open(fileName, "rb") {
58
- |file|
59
- inflater = ::Zip::Inflater.new(file)
60
- txt = inflater.sysread
61
- }
62
- end
63
-
64
- def test_crc
65
- run_crc_test(::Zip::Deflater)
66
- end
67
- end
@@ -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, lambda { |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
@@ -1,138 +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_entries_with_sort
69
- ::Zip.sort_entries = true
70
- assert_equal(ZIP_ENTRIES.sort, @zipEntrySet.entries)
71
- ::Zip.sort_entries = false
72
- assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
73
- end
74
-
75
- def test_entries_sorted_in_each
76
- ::Zip.sort_entries = true
77
- arr = []
78
- @zipEntrySet.each do |entry|
79
- arr << entry
80
- end
81
- assert_equal(ZIP_ENTRIES.sort, arr)
82
- end
83
-
84
- def test_compound
85
- newEntry = ::Zip::Entry.new("zf.zip", "new entry", "new entry's comment")
86
- assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
87
- @zipEntrySet << newEntry
88
- assert_equal(ZIP_ENTRIES.size + 1, @zipEntrySet.size)
89
- assert(@zipEntrySet.include?(newEntry))
90
-
91
- @zipEntrySet.delete(newEntry)
92
- assert_equal(ZIP_ENTRIES.size, @zipEntrySet.size)
93
- end
94
-
95
- def test_dup
96
- copy = @zipEntrySet.dup
97
- assert_equal(@zipEntrySet, copy)
98
-
99
- # demonstrate that this is a deep copy
100
- copy.entries[0].name = "a totally different name"
101
- assert(@zipEntrySet != copy)
102
- end
103
-
104
- def test_parent
105
- entries = [
106
- ::Zip::Entry.new("zf.zip", "a/"),
107
- ::Zip::Entry.new("zf.zip", "a/b/"),
108
- ::Zip::Entry.new("zf.zip", "a/b/c/")
109
- ]
110
- entrySet = ::Zip::EntrySet.new(entries)
111
-
112
- assert_equal(nil, entrySet.parent(entries[0]))
113
- assert_equal(entries[0], entrySet.parent(entries[1]))
114
- assert_equal(entries[1], entrySet.parent(entries[2]))
115
- end
116
-
117
- def test_glob
118
- res = @zipEntrySet.glob('name[2-4]')
119
- assert_equal(3, res.size)
120
- assert_equal(ZIP_ENTRIES[1, 3].sort, res.sort)
121
- end
122
-
123
- def test_glob2
124
- entries = [
125
- ::Zip::Entry.new("zf.zip", "a/"),
126
- ::Zip::Entry.new("zf.zip", "a/b/b1"),
127
- ::Zip::Entry.new("zf.zip", "a/b/c/"),
128
- ::Zip::Entry.new("zf.zip", "a/b/c/c1")
129
- ]
130
- entrySet = ::Zip::EntrySet.new(entries)
131
-
132
- assert_equal(entries[0, 1], entrySet.glob("*"))
133
- # assert_equal(entries[FIXME], entrySet.glob("**"))
134
- # res = entrySet.glob('a*')
135
- # assert_equal(entries.size, res.size)
136
- # assert_equal(entrySet.map { |e| e.name }, res.map { |e| e.name })
137
- end
138
- end
data/test/entry_test.rb DELETED
@@ -1,165 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ZipEntryTest < MiniTest::Test
4
- TEST_ZIPFILE = "someZipFile.zip"
5
- TEST_COMMENT = "a comment"
6
- TEST_COMPRESSED_SIZE = 1234
7
- TEST_CRC = 325324
8
- TEST_EXTRA = "Some data here"
9
- TEST_COMPRESSIONMETHOD = ::Zip::Entry::DEFLATED
10
- TEST_NAME = "entry name"
11
- TEST_SIZE = 8432
12
- TEST_ISDIRECTORY = false
13
- TEST_TIME = Time.now
14
-
15
- def test_constructorAndGetters
16
- entry = ::Zip::Entry.new(TEST_ZIPFILE,
17
- TEST_NAME,
18
- TEST_COMMENT,
19
- TEST_EXTRA,
20
- TEST_COMPRESSED_SIZE,
21
- TEST_CRC,
22
- TEST_COMPRESSIONMETHOD,
23
- TEST_SIZE,
24
- TEST_TIME)
25
-
26
- assert_equal(TEST_COMMENT, entry.comment)
27
- assert_equal(TEST_COMPRESSED_SIZE, entry.compressed_size)
28
- assert_equal(TEST_CRC, entry.crc)
29
- assert_instance_of(::Zip::ExtraField, entry.extra)
30
- assert_equal(TEST_COMPRESSIONMETHOD, entry.compression_method)
31
- assert_equal(TEST_NAME, entry.name)
32
- assert_equal(TEST_SIZE, entry.size)
33
- assert_equal(TEST_TIME, entry.time)
34
- end
35
-
36
- def test_is_directoryAndIsFile
37
- assert(::Zip::Entry.new(TEST_ZIPFILE, "hello").file?)
38
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "hello").directory?)
39
-
40
- assert(::Zip::Entry.new(TEST_ZIPFILE, "dir/hello").file?)
41
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "dir/hello").directory?)
42
-
43
- assert(::Zip::Entry.new(TEST_ZIPFILE, "hello/").directory?)
44
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "hello/").file?)
45
-
46
- assert(::Zip::Entry.new(TEST_ZIPFILE, "dir/hello/").directory?)
47
- assert(!::Zip::Entry.new(TEST_ZIPFILE, "dir/hello/").file?)
48
- end
49
-
50
- def test_equality
51
- entry1 = ::Zip::Entry.new("file.zip", "name", "isNotCompared",
52
- "something extra", 123, 1234,
53
- ::Zip::Entry::DEFLATED, 10000)
54
- entry2 = ::Zip::Entry.new("file.zip", "name", "isNotComparedXXX",
55
- "something extra", 123, 1234,
56
- ::Zip::Entry::DEFLATED, 10000)
57
- entry3 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
58
- "something extra", 123, 1234,
59
- ::Zip::Entry::DEFLATED, 10000)
60
- entry4 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
61
- "something extraXX", 123, 1234,
62
- ::Zip::Entry::DEFLATED, 10000)
63
- entry5 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
64
- "something extraXX", 12, 1234,
65
- ::Zip::Entry::DEFLATED, 10000)
66
- entry6 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
67
- "something extraXX", 12, 123,
68
- ::Zip::Entry::DEFLATED, 10000)
69
- entry7 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
70
- "something extraXX", 12, 123,
71
- ::Zip::Entry::STORED, 10000)
72
- entry8 = ::Zip::Entry.new("file.zip", "name2", "isNotComparedXXX",
73
- "something extraXX", 12, 123,
74
- ::Zip::Entry::STORED, 100000)
75
-
76
- assert_equal(entry1, entry1)
77
- assert_equal(entry1, entry2)
78
-
79
- assert(entry2 != entry3)
80
- assert(entry3 != entry4)
81
- assert(entry4 != entry5)
82
- assert(entry5 != entry6)
83
- assert(entry6 != entry7)
84
- assert(entry7 != entry8)
85
-
86
- assert(entry7 != "hello")
87
- assert(entry7 != 12)
88
- end
89
-
90
- def test_compare
91
- assert_equal(0, (::Zip::Entry.new("zf.zip", "a") <=> ::Zip::Entry.new("zf.zip", "a")))
92
- assert_equal(1, (::Zip::Entry.new("zf.zip", "b") <=> ::Zip::Entry.new("zf.zip", "a")))
93
- assert_equal(-1, (::Zip::Entry.new("zf.zip", "a") <=> ::Zip::Entry.new("zf.zip", "b")))
94
-
95
- entries = [
96
- ::Zip::Entry.new("zf.zip", "5"),
97
- ::Zip::Entry.new("zf.zip", "1"),
98
- ::Zip::Entry.new("zf.zip", "3"),
99
- ::Zip::Entry.new("zf.zip", "4"),
100
- ::Zip::Entry.new("zf.zip", "0"),
101
- ::Zip::Entry.new("zf.zip", "2")
102
- ]
103
-
104
- entries.sort!
105
- assert_equal("0", entries[0].to_s)
106
- assert_equal("1", entries[1].to_s)
107
- assert_equal("2", entries[2].to_s)
108
- assert_equal("3", entries[3].to_s)
109
- assert_equal("4", entries[4].to_s)
110
- assert_equal("5", entries[5].to_s)
111
- end
112
-
113
- def test_parentAsString
114
- entry1 = ::Zip::Entry.new("zf.zip", "aa")
115
- entry2 = ::Zip::Entry.new("zf.zip", "aa/")
116
- entry3 = ::Zip::Entry.new("zf.zip", "aa/bb")
117
- entry4 = ::Zip::Entry.new("zf.zip", "aa/bb/")
118
- entry5 = ::Zip::Entry.new("zf.zip", "aa/bb/cc")
119
- entry6 = ::Zip::Entry.new("zf.zip", "aa/bb/cc/")
120
-
121
- assert_equal(nil, entry1.parent_as_string)
122
- assert_equal(nil, entry2.parent_as_string)
123
- assert_equal("aa/", entry3.parent_as_string)
124
- assert_equal("aa/", entry4.parent_as_string)
125
- assert_equal("aa/bb/", entry5.parent_as_string)
126
- assert_equal("aa/bb/", entry6.parent_as_string)
127
- end
128
-
129
- def test_entry_name_cannot_start_with_slash
130
- assert_raises(::Zip::EntryNameError) { ::Zip::Entry.new("zf.zip", "/hej/der") }
131
- end
132
-
133
- def test_store_file_without_compression
134
- File.delete('/tmp/no_compress.zip') if File.exist?('/tmp/no_compress.zip')
135
- files = Dir[File.join('test/data/globTest', '**', '**')]
136
-
137
- Zip.setup do |z|
138
- z.write_zip64_support = false
139
- end
140
-
141
- zipfile = Zip::File.open('/tmp/no_compress.zip', Zip::File::CREATE)
142
- mimetype_entry = Zip::Entry.new(zipfile, #@zipfile
143
- 'mimetype', #@name
144
- '', #@comment
145
- '', #@extra
146
- 0, #@compressed_size
147
- 0, #@crc
148
- Zip::Entry::STORED) #@comppressed_method
149
-
150
- zipfile.add(mimetype_entry, 'test/data/mimetype')
151
-
152
- files.each do |file|
153
- zipfile.add(file.sub("test/data/globTest/", ''), file)
154
- end
155
- zipfile.close
156
-
157
- f= File.open('/tmp/no_compress.zip', 'rb')
158
- first_100_bytes = f.read(100)
159
- f.close
160
-
161
- assert_match(/mimetypeapplication\/epub\+zip/, first_100_bytes)
162
- end
163
-
164
-
165
- end
data/test/errors_test.rb DELETED
@@ -1,36 +0,0 @@
1
- # encoding: utf-8
2
- require 'test_helper'
3
-
4
- class ErrorsTest < MiniTest::Test
5
-
6
- def test_rescue_legacy_zip_error
7
- raise ::Zip::Error
8
- rescue ::Zip::ZipError
9
- end
10
-
11
- def test_rescue_legacy_zip_entry_exists_error
12
- raise ::Zip::EntryExistsError
13
- rescue ::Zip::ZipEntryExistsError
14
- end
15
-
16
- def test_rescue_legacy_zip_destination_file_exists_error
17
- raise ::Zip::DestinationFileExistsError
18
- rescue ::Zip::ZipDestinationFileExistsError
19
- end
20
-
21
- def test_rescue_legacy_zip_compression_method_error
22
- raise ::Zip::CompressionMethodError
23
- rescue ::Zip::ZipCompressionMethodError
24
- end
25
-
26
- def test_rescue_legacy_zip_entry_name_error
27
- raise ::Zip::EntryNameError
28
- rescue ::Zip::ZipEntryNameError
29
- end
30
-
31
- def test_rescue_legacy_zip_internal_error
32
- raise ::Zip::InternalError
33
- rescue ::Zip::ZipInternalError
34
- end
35
-
36
- end
@@ -1,78 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ZipExtraFieldTest < MiniTest::Test
4
- def test_new
5
- extra_pure = ::Zip::ExtraField.new("")
6
- extra_withstr = ::Zip::ExtraField.new("foo")
7
- assert_instance_of(::Zip::ExtraField, extra_pure)
8
- assert_instance_of(::Zip::ExtraField, extra_withstr)
9
- end
10
-
11
- def test_unknownfield
12
- extra = ::Zip::ExtraField.new("foo")
13
- assert_equal(extra["Unknown"], "foo")
14
- extra.merge("a")
15
- assert_equal(extra["Unknown"], "fooa")
16
- extra.merge("barbaz")
17
- assert_equal(extra.to_s, "fooabarbaz")
18
- end
19
-
20
- def test_ntfs
21
- str = "\x0A\x00 \x00\x00\x00\x00\x00\x01\x00\x18\x00\xC0\x81\x17\xE8B\xCE\xCF\x01\xC0\x81\x17\xE8B\xCE\xCF\x01\xC0\x81\x17\xE8B\xCE\xCF\x01"
22
- extra = ::Zip::ExtraField.new(str)
23
- assert(extra.member?("NTFS"))
24
- t = ::Zip::DOSTime.at(1410496497.405178)
25
- assert_equal(t, extra['NTFS'].mtime)
26
- assert_equal(t, extra['NTFS'].atime)
27
- assert_equal(t, extra['NTFS'].ctime)
28
- end
29
-
30
- def test_merge
31
- str = "UT\x5\0\x3\250$\r@Ux\0\0"
32
- extra1 = ::Zip::ExtraField.new("")
33
- extra2 = ::Zip::ExtraField.new(str)
34
- assert(!extra1.member?("UniversalTime"))
35
- assert(extra2.member?("UniversalTime"))
36
- extra1.merge(str)
37
- assert_equal(extra1["UniversalTime"].mtime, extra2["UniversalTime"].mtime)
38
- end
39
-
40
- def test_length
41
- str = "UT\x5\0\x3\250$\r@Ux\0\0Te\0\0testit"
42
- extra = ::Zip::ExtraField.new(str)
43
- assert_equal(extra.local_size, extra.to_local_bin.size)
44
- assert_equal(extra.c_dir_size, extra.to_c_dir_bin.size)
45
- extra.merge("foo")
46
- assert_equal(extra.local_size, extra.to_local_bin.size)
47
- assert_equal(extra.c_dir_size, extra.to_c_dir_bin.size)
48
- end
49
-
50
-
51
- def test_to_s
52
- str = "UT\x5\0\x3\250$\r@Ux\0\0Te\0\0testit"
53
- extra = ::Zip::ExtraField.new(str)
54
- assert_instance_of(String, extra.to_s)
55
-
56
- s = extra.to_s
57
- extra.merge("foo")
58
- assert_equal(s.length + 3, extra.to_s.length)
59
- end
60
-
61
- def test_equality
62
- str = "UT\x5\0\x3\250$\r@"
63
- extra1 = ::Zip::ExtraField.new(str)
64
- extra2 = ::Zip::ExtraField.new(str)
65
- extra3 = ::Zip::ExtraField.new(str)
66
- assert_equal(extra1, extra2)
67
-
68
- extra2["UniversalTime"].mtime = ::Zip::DOSTime.now
69
- assert(extra1 != extra2)
70
-
71
- extra3.create("IUnix")
72
- assert(extra1 != extra3)
73
-
74
- extra1.create("IUnix")
75
- assert_equal(extra1, extra3)
76
- end
77
-
78
- end
@@ -1,56 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ZipFileExtractDirectoryTest < MiniTest::Test
4
- include CommonZipFileFixture
5
-
6
- TEST_OUT_NAME = "test/data/generated/emptyOutDir"
7
-
8
- def open_zip(&aProc)
9
- assert(aProc != nil)
10
- ::Zip::File.open(TestZipFile::TEST_ZIP4.zip_name, &aProc)
11
- end
12
-
13
- def extract_test_dir(&aProc)
14
- open_zip {
15
- |zf|
16
- zf.extract(TestFiles::EMPTY_TEST_DIR, TEST_OUT_NAME, &aProc)
17
- }
18
- end
19
-
20
- def setup
21
- super
22
-
23
- Dir.rmdir(TEST_OUT_NAME) if File.directory? TEST_OUT_NAME
24
- File.delete(TEST_OUT_NAME) if File.exist? TEST_OUT_NAME
25
- end
26
-
27
- def test_extractDirectory
28
- extract_test_dir
29
- assert(File.directory?(TEST_OUT_NAME))
30
- end
31
-
32
- def test_extractDirectoryExistsAsDir
33
- Dir.mkdir TEST_OUT_NAME
34
- extract_test_dir
35
- assert(File.directory?(TEST_OUT_NAME))
36
- end
37
-
38
- def test_extractDirectoryExistsAsFile
39
- File.open(TEST_OUT_NAME, "w") { |f| f.puts "something" }
40
- assert_raises(::Zip::DestinationFileExistsError) { extract_test_dir }
41
- end
42
-
43
- def test_extractDirectoryExistsAsFileOverwrite
44
- File.open(TEST_OUT_NAME, "w") { |f| f.puts "something" }
45
- gotCalled = false
46
- extract_test_dir {
47
- |entry, destPath|
48
- gotCalled = true
49
- assert_equal(TEST_OUT_NAME, destPath)
50
- assert(entry.directory?)
51
- true
52
- }
53
- assert(gotCalled)
54
- assert(File.directory?(TEST_OUT_NAME))
55
- end
56
- end