rubyzip 1.2.2 → 2.1.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.
Files changed (88) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +64 -23
  3. data/lib/zip.rb +3 -2
  4. data/lib/zip/dos_time.rb +5 -0
  5. data/lib/zip/entry.rb +36 -19
  6. data/lib/zip/errors.rb +1 -0
  7. data/lib/zip/extra_field.rb +1 -1
  8. data/lib/zip/extra_field/generic.rb +1 -1
  9. data/lib/zip/extra_field/universal_time.rb +39 -12
  10. data/lib/zip/file.rb +67 -33
  11. data/lib/zip/inflater.rb +1 -1
  12. data/lib/zip/input_stream.rb +1 -1
  13. data/lib/zip/streamable_stream.rb +1 -6
  14. data/lib/zip/version.rb +1 -1
  15. metadata +11 -153
  16. data/test/basic_zip_file_test.rb +0 -60
  17. data/test/case_sensitivity_test.rb +0 -69
  18. data/test/central_directory_entry_test.rb +0 -69
  19. data/test/central_directory_test.rb +0 -100
  20. data/test/crypto/null_encryption_test.rb +0 -57
  21. data/test/crypto/traditional_encryption_test.rb +0 -80
  22. data/test/data/WarnInvalidDate.zip +0 -0
  23. data/test/data/file1.txt +0 -46
  24. data/test/data/file1.txt.deflatedData +0 -0
  25. data/test/data/file2.txt +0 -1504
  26. data/test/data/globTest.zip +0 -0
  27. data/test/data/globTest/foo.txt +0 -0
  28. data/test/data/globTest/foo/bar/baz/foo.txt +0 -0
  29. data/test/data/globTest/food.txt +0 -0
  30. data/test/data/gpbit3stored.zip +0 -0
  31. data/test/data/mimetype +0 -1
  32. data/test/data/notzippedruby.rb +0 -7
  33. data/test/data/ntfs.zip +0 -0
  34. data/test/data/oddExtraField.zip +0 -0
  35. data/test/data/path_traversal/Makefile +0 -10
  36. data/test/data/path_traversal/jwilk/README.md +0 -5
  37. data/test/data/path_traversal/jwilk/absolute1.zip +0 -0
  38. data/test/data/path_traversal/jwilk/absolute2.zip +0 -0
  39. data/test/data/path_traversal/jwilk/dirsymlink.zip +0 -0
  40. data/test/data/path_traversal/jwilk/dirsymlink2a.zip +0 -0
  41. data/test/data/path_traversal/jwilk/dirsymlink2b.zip +0 -0
  42. data/test/data/path_traversal/jwilk/relative0.zip +0 -0
  43. data/test/data/path_traversal/jwilk/relative2.zip +0 -0
  44. data/test/data/path_traversal/jwilk/symlink.zip +0 -0
  45. data/test/data/path_traversal/relative1.zip +0 -0
  46. data/test/data/path_traversal/tuzovakaoff/README.md +0 -3
  47. data/test/data/path_traversal/tuzovakaoff/absolutepath.zip +0 -0
  48. data/test/data/path_traversal/tuzovakaoff/symlink.zip +0 -0
  49. data/test/data/rubycode.zip +0 -0
  50. data/test/data/rubycode2.zip +0 -0
  51. data/test/data/test.xls +0 -0
  52. data/test/data/testDirectory.bin +0 -0
  53. data/test/data/zip64-sample.zip +0 -0
  54. data/test/data/zipWithDirs.zip +0 -0
  55. data/test/data/zipWithEncryption.zip +0 -0
  56. data/test/deflater_test.rb +0 -65
  57. data/test/encryption_test.rb +0 -42
  58. data/test/entry_set_test.rb +0 -163
  59. data/test/entry_test.rb +0 -154
  60. data/test/errors_test.rb +0 -35
  61. data/test/extra_field_test.rb +0 -76
  62. data/test/file_extract_directory_test.rb +0 -54
  63. data/test/file_extract_test.rb +0 -83
  64. data/test/file_permissions_test.rb +0 -65
  65. data/test/file_split_test.rb +0 -57
  66. data/test/file_test.rb +0 -601
  67. data/test/filesystem/dir_iterator_test.rb +0 -58
  68. data/test/filesystem/directory_test.rb +0 -139
  69. data/test/filesystem/file_mutating_test.rb +0 -87
  70. data/test/filesystem/file_nonmutating_test.rb +0 -508
  71. data/test/filesystem/file_stat_test.rb +0 -64
  72. data/test/gentestfiles.rb +0 -126
  73. data/test/inflater_test.rb +0 -14
  74. data/test/input_stream_test.rb +0 -182
  75. data/test/ioextras/abstract_input_stream_test.rb +0 -102
  76. data/test/ioextras/abstract_output_stream_test.rb +0 -106
  77. data/test/ioextras/fake_io_test.rb +0 -18
  78. data/test/local_entry_test.rb +0 -154
  79. data/test/output_stream_test.rb +0 -128
  80. data/test/pass_thru_compressor_test.rb +0 -30
  81. data/test/pass_thru_decompressor_test.rb +0 -14
  82. data/test/path_traversal_test.rb +0 -134
  83. data/test/samples/example_recursive_test.rb +0 -37
  84. data/test/settings_test.rb +0 -95
  85. data/test/test_helper.rb +0 -234
  86. data/test/unicode_file_names_and_comments_test.rb +0 -62
  87. data/test/zip64_full_test.rb +0 -51
  88. data/test/zip64_support_test.rb +0 -14
@@ -51,50 +51,74 @@ module Zip
51
51
  DATA_BUFFER_SIZE = 8192
52
52
  IO_METHODS = [:tell, :seek, :read, :close]
53
53
 
54
+ DEFAULT_OPTIONS = {
55
+ restore_ownership: false,
56
+ restore_permissions: false,
57
+ restore_times: false
58
+ }.freeze
59
+
54
60
  attr_reader :name
55
61
 
56
- # default -> false
62
+ # default -> false.
57
63
  attr_accessor :restore_ownership
58
- # default -> false
64
+
65
+ # default -> false, but will be set to true in a future version.
59
66
  attr_accessor :restore_permissions
60
- # default -> true
67
+
68
+ # default -> false, but will be set to true in a future version.
61
69
  attr_accessor :restore_times
70
+
62
71
  # Returns the zip files comment, if it has one
63
72
  attr_accessor :comment
64
73
 
65
74
  # Opens a zip archive. Pass true as the second parameter to create
66
75
  # a new archive if it doesn't exist already.
67
- def initialize(file_name, create = false, buffer = false, options = {})
76
+ def initialize(path_or_io, create = false, buffer = false, options = {})
68
77
  super()
69
- @name = file_name
78
+ options = DEFAULT_OPTIONS.merge(options)
79
+ @name = path_or_io.respond_to?(:path) ? path_or_io.path : path_or_io
70
80
  @comment = ''
71
81
  @create = create ? true : false # allow any truthy value to mean true
72
- if !buffer && ::File.size?(file_name)
82
+
83
+ if ::File.size?(@name.to_s)
84
+ # There is a file, which exists, that is associated with this zip.
73
85
  @create = false
74
- @file_permissions = ::File.stat(file_name).mode
75
- ::File.open(name, 'rb') do |f|
76
- read_from_stream(f)
86
+ @file_permissions = ::File.stat(@name).mode
87
+
88
+ if buffer
89
+ read_from_stream(path_or_io)
90
+ else
91
+ ::File.open(@name, 'rb') do |f|
92
+ read_from_stream(f)
93
+ end
77
94
  end
95
+ elsif buffer && path_or_io.size > 0
96
+ # This zip is probably a non-empty StringIO.
97
+ read_from_stream(path_or_io)
78
98
  elsif @create
99
+ # This zip is completely new/empty and is to be created.
79
100
  @entry_set = EntrySet.new
80
- elsif ::File.zero?(file_name)
81
- raise Error, "File #{file_name} has zero size. Did you mean to pass the create flag?"
101
+ elsif ::File.zero?(@name)
102
+ # A file exists, but it is empty.
103
+ raise Error, "File #{@name} has zero size. Did you mean to pass the create flag?"
82
104
  else
83
- raise Error, "File #{file_name} not found"
105
+ # Everything is wrong.
106
+ raise Error, "File #{@name} not found"
84
107
  end
108
+
85
109
  @stored_entries = @entry_set.dup
86
110
  @stored_comment = @comment
87
- @restore_ownership = options[:restore_ownership] || false
88
- @restore_permissions = options[:restore_permissions] || true
89
- @restore_times = options[:restore_times] || true
111
+ @restore_ownership = options[:restore_ownership]
112
+ @restore_permissions = options[:restore_permissions]
113
+ @restore_times = options[:restore_times]
90
114
  end
91
115
 
92
116
  class << self
93
- # Same as #new. If a block is passed the ZipFile object is passed
94
- # to the block and is automatically closed afterwards just as with
95
- # ruby's builtin File.open method.
96
- def open(file_name, create = false)
97
- zf = ::Zip::File.new(file_name, create)
117
+ # Similar to ::new. If a block is passed the Zip::File object is passed
118
+ # to the block and is automatically closed afterwards, just as with
119
+ # ruby's builtin File::open method.
120
+ def open(file_name, create = false, options = {})
121
+ zf = ::Zip::File.new(file_name, create, false, options)
98
122
  return zf unless block_given?
99
123
  begin
100
124
  yield zf
@@ -119,17 +143,16 @@ module Zip
119
143
  unless IO_METHODS.map { |method| io.respond_to?(method) }.all? || io.is_a?(String)
120
144
  raise "Zip::File.open_buffer expects a String or IO-like argument (responds to #{IO_METHODS.join(', ')}). Found: #{io.class}"
121
145
  end
122
- if io.is_a?(::String)
123
- require 'stringio'
124
- io = ::StringIO.new(io)
125
- elsif io.respond_to?(:binmode)
126
- # https://github.com/rubyzip/rubyzip/issues/119
127
- io.binmode
128
- end
146
+
147
+ io = ::StringIO.new(io) if io.is_a?(::String)
148
+
149
+ # https://github.com/rubyzip/rubyzip/issues/119
150
+ io.binmode if io.respond_to?(:binmode)
151
+
129
152
  zf = ::Zip::File.new(io, true, true, options)
130
- zf.read_from_stream(io)
131
153
  return zf unless block_given?
132
154
  yield zf
155
+
133
156
  begin
134
157
  zf.write_buffer(io)
135
158
  rescue IOError => e
@@ -274,6 +297,13 @@ module Zip
274
297
  @entry_set << new_entry
275
298
  end
276
299
 
300
+ # Convenience method for adding the contents of a file to the archive
301
+ # in Stored format (uncompressed)
302
+ def add_stored(entry, src_path, &continue_on_exists_proc)
303
+ entry = ::Zip::Entry.new(@name, entry.to_s, nil, nil, nil, nil, ::Zip::Entry::STORED)
304
+ add(entry, src_path, &continue_on_exists_proc)
305
+ end
306
+
277
307
  # Removes the specified entry.
278
308
  def remove(entry)
279
309
  @entry_set.delete(get_entry(entry))
@@ -346,7 +376,13 @@ module Zip
346
376
  # Searches for entry with the specified name. Returns nil if
347
377
  # no entry is found. See also get_entry
348
378
  def find_entry(entry_name)
349
- @entry_set.find_entry(entry_name)
379
+ selected_entry = @entry_set.find_entry(entry_name)
380
+ return if selected_entry.nil?
381
+
382
+ selected_entry.restore_ownership = @restore_ownership
383
+ selected_entry.restore_permissions = @restore_permissions
384
+ selected_entry.restore_times = @restore_times
385
+ selected_entry
350
386
  end
351
387
 
352
388
  # Searches for entries given a glob
@@ -358,10 +394,8 @@ module Zip
358
394
  # if no entry is found.
359
395
  def get_entry(entry)
360
396
  selected_entry = find_entry(entry)
361
- raise Errno::ENOENT, entry unless selected_entry
362
- selected_entry.restore_ownership = @restore_ownership
363
- selected_entry.restore_permissions = @restore_permissions
364
- selected_entry.restore_times = @restore_times
397
+ raise Errno::ENOENT, entry if selected_entry.nil?
398
+
365
399
  selected_entry
366
400
  end
367
401
 
@@ -3,7 +3,7 @@ module Zip
3
3
  def initialize(input_stream, decrypter = NullDecrypter.new)
4
4
  super(input_stream)
5
5
  @zlib_inflater = ::Zlib::Inflate.new(-Zlib::MAX_WBITS)
6
- @output_buffer = ''
6
+ @output_buffer = ''.dup
7
7
  @has_returned_empty_string = false
8
8
  @decrypter = decrypter
9
9
  end
@@ -103,7 +103,7 @@ module Zip
103
103
  end
104
104
 
105
105
  def open_buffer(filename_or_io, offset = 0)
106
- puts 'open_buffer is deprecated!!! Use open instead!'
106
+ warn 'open_buffer is deprecated!!! Use open instead!'
107
107
  open(filename_or_io, offset)
108
108
  end
109
109
  end
@@ -2,12 +2,7 @@ module Zip
2
2
  class StreamableStream < DelegateClass(Entry) # nodoc:all
3
3
  def initialize(entry)
4
4
  super(entry)
5
- dirname = if zipfile.is_a?(::String)
6
- ::File.dirname(zipfile)
7
- else
8
- nil
9
- end
10
- @temp_file = Tempfile.new(::File.basename(name), dirname)
5
+ @temp_file = Tempfile.new(::File.basename(name))
11
6
  @temp_file.binmode
12
7
  end
13
8
 
@@ -1,3 +1,3 @@
1
1
  module Zip
2
- VERSION = '1.2.2'
2
+ VERSION = '2.1.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzip
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Simonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-31 00:00:00.000000000 Z
11
+ date: 2020-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -134,83 +134,15 @@ files:
134
134
  - samples/qtzip.rb
135
135
  - samples/write_simple.rb
136
136
  - samples/zipfind.rb
137
- - test/basic_zip_file_test.rb
138
- - test/case_sensitivity_test.rb
139
- - test/central_directory_entry_test.rb
140
- - test/central_directory_test.rb
141
- - test/crypto/null_encryption_test.rb
142
- - test/crypto/traditional_encryption_test.rb
143
- - test/data/WarnInvalidDate.zip
144
- - test/data/file1.txt
145
- - test/data/file1.txt.deflatedData
146
- - test/data/file2.txt
147
- - test/data/globTest.zip
148
- - test/data/globTest/foo.txt
149
- - test/data/globTest/foo/bar/baz/foo.txt
150
- - test/data/globTest/food.txt
151
- - test/data/gpbit3stored.zip
152
- - test/data/mimetype
153
- - test/data/notzippedruby.rb
154
- - test/data/ntfs.zip
155
- - test/data/oddExtraField.zip
156
- - test/data/path_traversal/Makefile
157
- - test/data/path_traversal/jwilk/README.md
158
- - test/data/path_traversal/jwilk/absolute1.zip
159
- - test/data/path_traversal/jwilk/absolute2.zip
160
- - test/data/path_traversal/jwilk/dirsymlink.zip
161
- - test/data/path_traversal/jwilk/dirsymlink2a.zip
162
- - test/data/path_traversal/jwilk/dirsymlink2b.zip
163
- - test/data/path_traversal/jwilk/relative0.zip
164
- - test/data/path_traversal/jwilk/relative2.zip
165
- - test/data/path_traversal/jwilk/symlink.zip
166
- - test/data/path_traversal/relative1.zip
167
- - test/data/path_traversal/tuzovakaoff/README.md
168
- - test/data/path_traversal/tuzovakaoff/absolutepath.zip
169
- - test/data/path_traversal/tuzovakaoff/symlink.zip
170
- - test/data/rubycode.zip
171
- - test/data/rubycode2.zip
172
- - test/data/test.xls
173
- - test/data/testDirectory.bin
174
- - test/data/zip64-sample.zip
175
- - test/data/zipWithDirs.zip
176
- - test/data/zipWithEncryption.zip
177
- - test/deflater_test.rb
178
- - test/encryption_test.rb
179
- - test/entry_set_test.rb
180
- - test/entry_test.rb
181
- - test/errors_test.rb
182
- - test/extra_field_test.rb
183
- - test/file_extract_directory_test.rb
184
- - test/file_extract_test.rb
185
- - test/file_permissions_test.rb
186
- - test/file_split_test.rb
187
- - test/file_test.rb
188
- - test/filesystem/dir_iterator_test.rb
189
- - test/filesystem/directory_test.rb
190
- - test/filesystem/file_mutating_test.rb
191
- - test/filesystem/file_nonmutating_test.rb
192
- - test/filesystem/file_stat_test.rb
193
- - test/gentestfiles.rb
194
- - test/inflater_test.rb
195
- - test/input_stream_test.rb
196
- - test/ioextras/abstract_input_stream_test.rb
197
- - test/ioextras/abstract_output_stream_test.rb
198
- - test/ioextras/fake_io_test.rb
199
- - test/local_entry_test.rb
200
- - test/output_stream_test.rb
201
- - test/pass_thru_compressor_test.rb
202
- - test/pass_thru_decompressor_test.rb
203
- - test/path_traversal_test.rb
204
- - test/samples/example_recursive_test.rb
205
- - test/settings_test.rb
206
- - test/test_helper.rb
207
- - test/unicode_file_names_and_comments_test.rb
208
- - test/zip64_full_test.rb
209
- - test/zip64_support_test.rb
210
137
  homepage: http://github.com/rubyzip/rubyzip
211
138
  licenses:
212
139
  - BSD 2-Clause
213
- metadata: {}
140
+ metadata:
141
+ bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
142
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v2.1.0/Changelog.md
143
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/2.1.0
144
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v2.1.0
145
+ wiki_uri: https://github.com/rubyzip/rubyzip/wiki
214
146
  post_install_message:
215
147
  rdoc_options: []
216
148
  require_paths:
@@ -219,89 +151,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
219
151
  requirements:
220
152
  - - ">="
221
153
  - !ruby/object:Gem::Version
222
- version: 1.9.2
154
+ version: '2.4'
223
155
  required_rubygems_version: !ruby/object:Gem::Requirement
224
156
  requirements:
225
157
  - - ">="
226
158
  - !ruby/object:Gem::Version
227
159
  version: '0'
228
160
  requirements: []
229
- rubyforge_project:
230
- rubygems_version: 2.6.13
161
+ rubygems_version: 3.0.3
231
162
  signing_key:
232
163
  specification_version: 4
233
164
  summary: rubyzip is a ruby module for reading and writing zip files
234
- test_files:
235
- - test/file_permissions_test.rb
236
- - test/path_traversal_test.rb
237
- - test/ioextras/abstract_input_stream_test.rb
238
- - test/ioextras/fake_io_test.rb
239
- - test/ioextras/abstract_output_stream_test.rb
240
- - test/central_directory_test.rb
241
- - test/central_directory_entry_test.rb
242
- - test/crypto/traditional_encryption_test.rb
243
- - test/crypto/null_encryption_test.rb
244
- - test/input_stream_test.rb
245
- - test/file_extract_directory_test.rb
246
- - test/basic_zip_file_test.rb
247
- - test/inflater_test.rb
248
- - test/file_extract_test.rb
249
- - test/pass_thru_compressor_test.rb
250
- - test/filesystem/file_nonmutating_test.rb
251
- - test/filesystem/file_stat_test.rb
252
- - test/filesystem/file_mutating_test.rb
253
- - test/filesystem/dir_iterator_test.rb
254
- - test/filesystem/directory_test.rb
255
- - test/extra_field_test.rb
256
- - test/zip64_support_test.rb
257
- - test/local_entry_test.rb
258
- - test/samples/example_recursive_test.rb
259
- - test/entry_test.rb
260
- - test/case_sensitivity_test.rb
261
- - test/zip64_full_test.rb
262
- - test/pass_thru_decompressor_test.rb
263
- - test/settings_test.rb
264
- - test/gentestfiles.rb
265
- - test/encryption_test.rb
266
- - test/file_test.rb
267
- - test/deflater_test.rb
268
- - test/test_helper.rb
269
- - test/errors_test.rb
270
- - test/file_split_test.rb
271
- - test/data/file2.txt
272
- - test/data/testDirectory.bin
273
- - test/data/globTest/foo.txt
274
- - test/data/globTest/foo/bar/baz/foo.txt
275
- - test/data/globTest/food.txt
276
- - test/data/file1.txt
277
- - test/data/rubycode.zip
278
- - test/data/WarnInvalidDate.zip
279
- - test/data/zipWithDirs.zip
280
- - test/data/rubycode2.zip
281
- - test/data/mimetype
282
- - test/data/zipWithEncryption.zip
283
- - test/data/path_traversal/Makefile
284
- - test/data/path_traversal/relative1.zip
285
- - test/data/path_traversal/jwilk/dirsymlink.zip
286
- - test/data/path_traversal/jwilk/symlink.zip
287
- - test/data/path_traversal/jwilk/README.md
288
- - test/data/path_traversal/jwilk/relative2.zip
289
- - test/data/path_traversal/jwilk/relative0.zip
290
- - test/data/path_traversal/jwilk/absolute2.zip
291
- - test/data/path_traversal/jwilk/dirsymlink2b.zip
292
- - test/data/path_traversal/jwilk/absolute1.zip
293
- - test/data/path_traversal/jwilk/dirsymlink2a.zip
294
- - test/data/path_traversal/tuzovakaoff/symlink.zip
295
- - test/data/path_traversal/tuzovakaoff/README.md
296
- - test/data/path_traversal/tuzovakaoff/absolutepath.zip
297
- - test/data/oddExtraField.zip
298
- - test/data/gpbit3stored.zip
299
- - test/data/ntfs.zip
300
- - test/data/notzippedruby.rb
301
- - test/data/globTest.zip
302
- - test/data/file1.txt.deflatedData
303
- - test/data/test.xls
304
- - test/data/zip64-sample.zip
305
- - test/unicode_file_names_and_comments_test.rb
306
- - test/entry_set_test.rb
307
- - test/output_stream_test.rb
165
+ test_files: []
@@ -1,60 +0,0 @@
1
- require 'test_helper'
2
-
3
- class BasicZipFileTest < MiniTest::Test
4
- include AssertEntry
5
-
6
- def setup
7
- @zip_file = ::Zip::File.new(TestZipFile::TEST_ZIP2.zip_name)
8
- @testEntryNameIndex = 0
9
- end
10
-
11
- def test_entries
12
- assert_equal(TestZipFile::TEST_ZIP2.entry_names.sort,
13
- @zip_file.entries.entries.sort.map { |e| e.name })
14
- end
15
-
16
- def test_each
17
- count = 0
18
- visited = {}
19
- @zip_file.each do |entry|
20
- assert(TestZipFile::TEST_ZIP2.entry_names.include?(entry.name))
21
- assert(!visited.include?(entry.name))
22
- visited[entry.name] = nil
23
- count = count.succ
24
- end
25
- assert_equal(TestZipFile::TEST_ZIP2.entry_names.length, count)
26
- end
27
-
28
- def test_foreach
29
- count = 0
30
- visited = {}
31
- ::Zip::File.foreach(TestZipFile::TEST_ZIP2.zip_name) do |entry|
32
- assert(TestZipFile::TEST_ZIP2.entry_names.include?(entry.name))
33
- assert(!visited.include?(entry.name))
34
- visited[entry.name] = nil
35
- count = count.succ
36
- end
37
- assert_equal(TestZipFile::TEST_ZIP2.entry_names.length, count)
38
- end
39
-
40
- def test_get_input_stream
41
- count = 0
42
- visited = {}
43
- @zip_file.each do |entry|
44
- assert_entry(entry.name, @zip_file.get_input_stream(entry), entry.name)
45
- assert(!visited.include?(entry.name))
46
- visited[entry.name] = nil
47
- count = count.succ
48
- end
49
- assert_equal(TestZipFile::TEST_ZIP2.entry_names.length, count)
50
- end
51
-
52
- def test_get_input_stream_block
53
- fileAndEntryName = @zip_file.entries.first.name
54
- @zip_file.get_input_stream(fileAndEntryName) do |zis|
55
- assert_entry_contents_for_stream(fileAndEntryName,
56
- zis,
57
- fileAndEntryName)
58
- end
59
- end
60
- end