rubyzip 1.1.7 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubyzip might be problematic. Click here for more details.

Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +75 -40
  3. data/Rakefile +3 -4
  4. data/lib/zip.rb +3 -5
  5. data/lib/zip/central_directory.rb +7 -7
  6. data/lib/zip/compressor.rb +0 -0
  7. data/lib/zip/constants.rb +2 -2
  8. data/lib/zip/crypto/null_encryption.rb +3 -3
  9. data/lib/zip/crypto/traditional_encryption.rb +5 -5
  10. data/lib/zip/decompressor.rb +2 -2
  11. data/lib/zip/deflater.rb +8 -6
  12. data/lib/zip/dos_time.rb +4 -5
  13. data/lib/zip/entry.rb +75 -81
  14. data/lib/zip/entry_set.rb +11 -11
  15. data/lib/zip/errors.rb +1 -0
  16. data/lib/zip/extra_field.rb +6 -6
  17. data/lib/zip/extra_field/generic.rb +7 -7
  18. data/lib/zip/extra_field/ntfs.rb +14 -16
  19. data/lib/zip/extra_field/old_unix.rb +9 -10
  20. data/lib/zip/extra_field/universal_time.rb +14 -14
  21. data/lib/zip/extra_field/unix.rb +8 -9
  22. data/lib/zip/extra_field/zip64.rb +12 -11
  23. data/lib/zip/extra_field/zip64_placeholder.rb +1 -1
  24. data/lib/zip/file.rb +47 -60
  25. data/lib/zip/filesystem.rb +132 -135
  26. data/lib/zip/inflater.rb +3 -3
  27. data/lib/zip/input_stream.rb +13 -7
  28. data/lib/zip/ioextras.rb +1 -3
  29. data/lib/zip/ioextras/abstract_input_stream.rb +5 -9
  30. data/lib/zip/ioextras/abstract_output_stream.rb +2 -4
  31. data/lib/zip/null_compressor.rb +2 -2
  32. data/lib/zip/null_decompressor.rb +3 -3
  33. data/lib/zip/null_input_stream.rb +0 -0
  34. data/lib/zip/output_stream.rb +8 -9
  35. data/lib/zip/pass_thru_compressor.rb +4 -4
  36. data/lib/zip/pass_thru_decompressor.rb +2 -3
  37. data/lib/zip/streamable_directory.rb +2 -2
  38. data/lib/zip/streamable_stream.rb +2 -2
  39. data/lib/zip/version.rb +1 -1
  40. data/samples/example.rb +29 -39
  41. data/samples/example_filesystem.rb +16 -18
  42. data/samples/example_recursive.rb +32 -25
  43. data/samples/{gtkRubyzip.rb → gtk_ruby_zip.rb} +23 -25
  44. data/samples/qtzip.rb +17 -26
  45. data/samples/write_simple.rb +12 -13
  46. data/samples/zipfind.rb +24 -32
  47. data/test/basic_zip_file_test.rb +11 -15
  48. data/test/case_sensitivity_test.rb +69 -0
  49. data/test/central_directory_entry_test.rb +32 -36
  50. data/test/central_directory_test.rb +46 -50
  51. data/test/crypto/null_encryption_test.rb +8 -4
  52. data/test/crypto/traditional_encryption_test.rb +5 -5
  53. data/test/data/notzippedruby.rb +1 -1
  54. data/test/data/oddExtraField.zip +0 -0
  55. data/test/data/test.xls +0 -0
  56. data/test/deflater_test.rb +10 -12
  57. data/test/encryption_test.rb +2 -2
  58. data/test/entry_set_test.rb +50 -25
  59. data/test/entry_test.rb +76 -87
  60. data/test/errors_test.rb +0 -2
  61. data/test/extra_field_test.rb +19 -21
  62. data/test/file_extract_directory_test.rb +12 -14
  63. data/test/file_extract_test.rb +33 -40
  64. data/test/file_permissions_test.rb +69 -0
  65. data/test/file_split_test.rb +24 -27
  66. data/test/file_test.rb +196 -172
  67. data/test/filesystem/dir_iterator_test.rb +13 -17
  68. data/test/filesystem/directory_test.rb +80 -90
  69. data/test/filesystem/file_mutating_test.rb +51 -63
  70. data/test/filesystem/file_nonmutating_test.rb +222 -228
  71. data/test/filesystem/file_stat_test.rb +17 -19
  72. data/test/gentestfiles.rb +47 -55
  73. data/test/inflater_test.rb +1 -1
  74. data/test/input_stream_test.rb +46 -34
  75. data/test/ioextras/abstract_input_stream_test.rb +22 -23
  76. data/test/ioextras/abstract_output_stream_test.rb +32 -32
  77. data/test/ioextras/fake_io_test.rb +1 -1
  78. data/test/local_entry_test.rb +36 -38
  79. data/test/output_stream_test.rb +20 -21
  80. data/test/pass_thru_compressor_test.rb +5 -6
  81. data/test/pass_thru_decompressor_test.rb +0 -1
  82. data/test/samples/example_recursive_test.rb +37 -0
  83. data/test/settings_test.rb +18 -15
  84. data/test/test_helper.rb +50 -44
  85. data/test/unicode_file_names_and_comments_test.rb +5 -7
  86. data/test/zip64_full_test.rb +9 -11
  87. data/test/zip64_support_test.rb +0 -1
  88. metadata +14 -32
@@ -1,10 +1,10 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class ZipSettingsTest < MiniTest::Test
4
- # TODO Refactor out into common test module
4
+ # TODO: Refactor out into common test module
5
5
  include CommonZipFileFixture
6
6
 
7
- TEST_OUT_NAME = "test/data/generated/emptyOutDir"
7
+ TEST_OUT_NAME = 'test/data/generated/emptyOutDir'
8
8
 
9
9
  def setup
10
10
  super
@@ -18,27 +18,26 @@ class ZipSettingsTest < MiniTest::Test
18
18
  end
19
19
 
20
20
  def open_zip(&aProc)
21
- assert(aProc != nil)
21
+ assert(!aProc.nil?)
22
22
  ::Zip::File.open(TestZipFile::TEST_ZIP4.zip_name, &aProc)
23
23
  end
24
24
 
25
25
  def extract_test_dir(&aProc)
26
- open_zip {
27
- |zf|
26
+ open_zip do |zf|
28
27
  zf.extract(TestFiles::EMPTY_TEST_DIR, TEST_OUT_NAME, &aProc)
29
- }
28
+ end
30
29
  end
31
30
 
32
31
  def test_true_on_exists_proc
33
32
  Zip.on_exists_proc = true
34
- File.open(TEST_OUT_NAME, "w") { |f| f.puts "something" }
33
+ File.open(TEST_OUT_NAME, 'w') { |f| f.puts 'something' }
35
34
  extract_test_dir
36
35
  assert(File.directory?(TEST_OUT_NAME))
37
36
  end
38
37
 
39
38
  def test_false_on_exists_proc
40
39
  Zip.on_exists_proc = false
41
- File.open(TEST_OUT_NAME, "w") { |f| f.puts "something" }
40
+ File.open(TEST_OUT_NAME, 'w') { |f| f.puts 'something' }
42
41
  assert_raises(Zip::DestinationFileExistsError) { extract_test_dir }
43
42
  end
44
43
 
@@ -47,7 +46,7 @@ class ZipSettingsTest < MiniTest::Test
47
46
 
48
47
  assert_raises(::Zip::EntryExistsError) do
49
48
  ::Zip::File.open(TEST_ZIP.zip_name) do |zf|
50
- zf.add(zf.entries.first.name, "test/data/file2.txt")
49
+ zf.add(zf.entries.first.name, 'test/data/file2.txt')
51
50
  end
52
51
  end
53
52
  end
@@ -59,11 +58,11 @@ class ZipSettingsTest < MiniTest::Test
59
58
 
60
59
  ::Zip::File.open(TEST_ZIP.zip_name) do |zf|
61
60
  replacedEntry = zf.entries.first.name
62
- zf.add(replacedEntry, "test/data/file2.txt")
61
+ zf.add(replacedEntry, 'test/data/file2.txt')
63
62
  end
64
63
 
65
64
  ::Zip::File.open(TEST_ZIP.zip_name) do |zf|
66
- assert_contains(zf, replacedEntry, "test/data/file2.txt")
65
+ assert_contains(zf, replacedEntry, 'test/data/file2.txt')
67
66
  end
68
67
  end
69
68
 
@@ -71,7 +70,9 @@ class ZipSettingsTest < MiniTest::Test
71
70
  test_file = File.join(File.dirname(__FILE__), 'data', 'WarnInvalidDate.zip')
72
71
  Zip.warn_invalid_date = false
73
72
 
74
- ::Zip::File.open(test_file) do |zf|
73
+ assert_output('', '') do
74
+ ::Zip::File.open(test_file) do |_zf|
75
+ end
75
76
  end
76
77
  end
77
78
 
@@ -79,14 +80,16 @@ class ZipSettingsTest < MiniTest::Test
79
80
  test_file = File.join(File.dirname(__FILE__), 'data', 'WarnInvalidDate.zip')
80
81
  Zip.warn_invalid_date = true
81
82
 
82
- ::Zip::File.open(test_file) do |zf|
83
+ assert_output('', /Invalid date\/time in zip entry/) do
84
+ ::Zip::File.open(test_file) do |_zf|
85
+ end
83
86
  end
84
87
  end
85
88
 
86
-
87
89
  private
90
+
88
91
  def assert_contains(zf, entryName, filename = entryName)
89
92
  assert(zf.entries.detect { |e| e.name == entryName } != nil, "entry #{entryName} not in #{zf.entries.join(', ')} in zip file #{zf}")
90
- assert_entryContents(zf, entryName, filename) if File.exist?(filename)
93
+ assert_entry_contents(zf, entryName, filename) if File.exist?(filename)
91
94
  end
92
95
  end
@@ -9,6 +9,11 @@ require 'gentestfiles'
9
9
  TestFiles.create_test_files
10
10
  TestZipFile.create_test_zips
11
11
 
12
+ if defined? JRUBY_VERSION
13
+ require 'jruby'
14
+ JRuby.objectspace = true
15
+ end
16
+
12
17
  ::MiniTest.after_run do
13
18
  FileUtils.rm_rf('test/data/generated')
14
19
  end
@@ -21,7 +26,7 @@ module IOizeString
21
26
  count = size unless count
22
27
  retVal = slice(@tell, count)
23
28
  @tell += count
24
- return retVal
29
+ retVal
25
30
  end
26
31
 
27
32
  def seek(index, offset)
@@ -34,12 +39,12 @@ module IOizeString
34
39
  when IO::SEEK_CUR
35
40
  newPos = @tell + index
36
41
  else
37
- raise "Error in test method IOizeString::seek"
42
+ raise 'Error in test method IOizeString::seek'
38
43
  end
39
- if (newPos < 0 || newPos >= size)
44
+ if newPos < 0 || newPos >= size
40
45
  raise Errno::EINVAL
41
46
  else
42
- @tell=newPos
47
+ @tell = newPos
43
48
  end
44
49
  end
45
50
 
@@ -51,7 +56,7 @@ end
51
56
  module DecompressorTests
52
57
  # expects @refText, @refLines and @decompressor
53
58
 
54
- TEST_FILE = "test/data/file1.txt"
59
+ TEST_FILE = 'test/data/file1.txt'
55
60
 
56
61
  def setup
57
62
  @refText = ''
@@ -59,11 +64,11 @@ module DecompressorTests
59
64
  @refLines = @refText.split($/)
60
65
  end
61
66
 
62
- def test_readEverything
67
+ def test_read_everything
63
68
  assert_equal(@refText, @decompressor.sysread)
64
69
  end
65
70
 
66
- def test_readInChunks
71
+ def test_read_in_chunks
67
72
  chunkSize = 5
68
73
  while (decompressedChunk = @decompressor.sysread(chunkSize))
69
74
  assert_equal(@refText.slice!(0, chunkSize), decompressedChunk)
@@ -71,22 +76,19 @@ module DecompressorTests
71
76
  assert_equal(0, @refText.size)
72
77
  end
73
78
 
74
- def test_mixingReadsAndProduceInput
79
+ def test_mixing_reads_and_produce_input
75
80
  # Just some preconditions to make sure we have enough data for this test
76
81
  assert(@refText.length > 1000)
77
82
  assert(@refLines.length > 40)
78
83
 
79
-
80
84
  assert_equal(@refText[0...100], @decompressor.sysread(100))
81
85
 
82
86
  assert(!@decompressor.input_finished?)
83
87
  buf = @decompressor.produce_input
84
- assert_equal(@refText[100...(100+buf.length)], buf)
88
+ assert_equal(@refText[100...(100 + buf.length)], buf)
85
89
  end
86
90
  end
87
91
 
88
-
89
-
90
92
  module AssertEntry
91
93
  def assert_next_entry(filename, zis)
92
94
  assert_entry(filename, zis, zis.get_next_entry.name)
@@ -94,33 +96,32 @@ module AssertEntry
94
96
 
95
97
  def assert_entry(filename, zis, entryName)
96
98
  assert_equal(filename, entryName)
97
- assert_entryContentsForStream(filename, zis, entryName)
99
+ assert_entry_contents_for_stream(filename, zis, entryName)
98
100
  end
99
101
 
100
- def assert_entryContentsForStream(filename, zis, entryName)
101
- File.open(filename, "rb") {
102
- |file|
102
+ def assert_entry_contents_for_stream(filename, zis, entryName)
103
+ File.open(filename, 'rb') do |file|
103
104
  expected = file.read
104
105
  actual = zis.read
105
106
  if (expected != actual)
106
- if ((expected && actual) && (expected.length > 400 || actual.length > 400))
107
- zipEntryFilename=entryName+".zipEntry"
108
- File.open(zipEntryFilename, "wb") { |entryfile| entryfile << actual }
107
+ if (expected && actual) && (expected.length > 400 || actual.length > 400)
108
+ zipEntryFilename = entryName + '.zipEntry'
109
+ File.open(zipEntryFilename, 'wb') { |entryfile| entryfile << actual }
109
110
  fail("File '#{filename}' is different from '#{zipEntryFilename}'")
110
111
  else
111
112
  assert_equal(expected, actual)
112
113
  end
113
114
  end
114
- }
115
+ end
115
116
  end
116
117
 
117
- def AssertEntry.assert_contents(filename, aString)
118
- fileContents = ""
119
- File.open(filename, "rb") { |f| fileContents = f.read }
118
+ def self.assert_contents(filename, aString)
119
+ fileContents = ''
120
+ File.open(filename, 'rb') { |f| fileContents = f.read }
120
121
  if (fileContents != aString)
121
- if (fileContents.length > 400 || aString.length > 400)
122
- stringFile = filename + ".other"
123
- File.open(stringFile, "wb") { |f| f << aString }
122
+ if fileContents.length > 400 || aString.length > 400
123
+ stringFile = filename + '.other'
124
+ File.open(stringFile, 'wb') { |f| f << aString }
124
125
  fail("File '#{filename}' is different from contents of string stored in '#{stringFile}'")
125
126
  else
126
127
  assert_equal(fileContents, aString)
@@ -129,11 +130,11 @@ module AssertEntry
129
130
  end
130
131
 
131
132
  def assert_stream_contents(zis, testZipFile)
132
- assert(zis != nil)
133
+ assert(!zis.nil?)
133
134
  testZipFile.entry_names.each do |entryName|
134
135
  assert_next_entry(entryName, zis)
135
136
  end
136
- assert_equal(nil, zis.get_next_entry)
137
+ assert_nil(zis.get_next_entry)
137
138
  end
138
139
 
139
140
  def assert_test_zip_contents(testZipFile)
@@ -142,27 +143,25 @@ module AssertEntry
142
143
  end
143
144
  end
144
145
 
145
- def assert_entryContents(zipFile, entryName, filename = entryName.to_s)
146
+ def assert_entry_contents(zipFile, entryName, filename = entryName.to_s)
146
147
  zis = zipFile.get_input_stream(entryName)
147
- assert_entryContentsForStream(filename, zis, entryName)
148
+ assert_entry_contents_for_stream(filename, zis, entryName)
148
149
  ensure
149
150
  zis.close if zis
150
151
  end
151
152
  end
152
153
 
153
-
154
154
  module CrcTest
155
-
156
155
  class TestOutputStream
157
156
  include ::Zip::IOExtras::AbstractOutputStream
158
157
 
159
158
  attr_accessor :buffer
160
159
 
161
160
  def initialize
162
- @buffer = ""
161
+ @buffer = ''
163
162
  end
164
163
 
165
- def << (data)
164
+ def <<(data)
166
165
  @buffer << data
167
166
  self
168
167
  end
@@ -178,26 +177,23 @@ module CrcTest
178
177
  end
179
178
  end
180
179
 
181
-
182
180
  module Enumerable
183
181
  def compare_enumerables(otherEnumerable)
184
182
  otherAsArray = otherEnumerable.to_a
185
- each_with_index {
186
- |element, index|
183
+ each_with_index do |element, index|
187
184
  return false unless yield(element, otherAsArray[index])
188
- }
189
- return self.size == otherAsArray.size
185
+ end
186
+ size == otherAsArray.size
190
187
  end
191
188
  end
192
189
 
193
-
194
190
  module CommonZipFileFixture
195
191
  include AssertEntry
196
192
 
197
- EMPTY_FILENAME = "emptyZipFile.zip"
193
+ EMPTY_FILENAME = 'emptyZipFile.zip'
198
194
 
199
195
  TEST_ZIP = TestZipFile::TEST_ZIP2.clone
200
- TEST_ZIP.zip_name = "test/data/generated/5entry_copy.zip"
196
+ TEST_ZIP.zip_name = 'test/data/generated/5entry_copy.zip'
201
197
 
202
198
  def setup
203
199
  File.delete(EMPTY_FILENAME) if File.exist?(EMPTY_FILENAME)
@@ -205,9 +201,7 @@ module CommonZipFileFixture
205
201
  end
206
202
  end
207
203
 
208
-
209
204
  module ExtraAssertions
210
-
211
205
  def assert_forwarded(anObject, method, retVal, *expectedArgs)
212
206
  callArgs = nil
213
207
  setCallArgsProc = proc { |args| callArgs = args }
@@ -224,5 +218,17 @@ module ExtraAssertions
224
218
  ensure
225
219
  anObject.instance_eval "undef #{method}; alias #{method} #{method}_org"
226
220
  end
221
+ end
227
222
 
223
+ module ZipEntryData
224
+ TEST_ZIPFILE = 'someZipFile.zip'
225
+ TEST_COMMENT = 'a comment'
226
+ TEST_COMPRESSED_SIZE = 1234
227
+ TEST_CRC = 325_324
228
+ TEST_EXTRA = 'Some data here'
229
+ TEST_COMPRESSIONMETHOD = ::Zip::Entry::DEFLATED
230
+ TEST_NAME = 'entry name'
231
+ TEST_SIZE = 8432
232
+ TEST_ISDIRECTORY = false
233
+ TEST_TIME = Time.now
228
234
  end
@@ -3,12 +3,11 @@
3
3
  require 'test_helper'
4
4
 
5
5
  class ZipUnicodeFileNamesAndComments < MiniTest::Test
6
-
7
- FILENAME = File.join(File.dirname(__FILE__), "test1.zip")
6
+ FILENAME = File.join(File.dirname(__FILE__), 'test1.zip')
8
7
 
9
8
  def test_unicode_file_name
10
- file_entrys = ["текстовыйфайл.txt", "Résumé.txt", "슬레이어스휘.txt"]
11
- directory_entrys = ["папка/текстовыйфайл.txt", "Résumé/Résumé.txt", "슬레이어스휘/슬레이어스휘.txt"]
9
+ file_entrys = ['текстовыйфайл.txt', 'Résumé.txt', '슬레이어스휘.txt']
10
+ directory_entrys = ['папка/текстовыйфайл.txt', 'Résumé/Résumé.txt', '슬레이어스휘/슬레이어스휘.txt']
12
11
  stream = ::Zip::OutputStream.open(FILENAME) do |io|
13
12
  file_entrys.each do |filename|
14
13
  io.put_next_entry(filename)
@@ -24,13 +23,13 @@ class ZipUnicodeFileNamesAndComments < MiniTest::Test
24
23
  file_entrys.each do |filename|
25
24
  entry = io.get_next_entry
26
25
  entry_name = entry.name
27
- entry_name = entry_name.force_encoding("UTF-8")
26
+ entry_name = entry_name.force_encoding('UTF-8')
28
27
  assert(filename == entry_name)
29
28
  end
30
29
  directory_entrys.each do |filepath|
31
30
  entry = io.get_next_entry
32
31
  entry_name = entry.name
33
- entry_name = entry_name.force_encoding("UTF-8")
32
+ entry_name = entry_name.force_encoding('UTF-8')
34
33
  assert(filepath == entry_name)
35
34
  end
36
35
  end
@@ -48,5 +47,4 @@ class ZipUnicodeFileNamesAndComments < MiniTest::Test
48
47
  end
49
48
  ::File.unlink(FILENAME)
50
49
  end
51
-
52
50
  end
@@ -4,32 +4,32 @@ if ENV['FULL_ZIP64_TEST']
4
4
  require 'fileutils'
5
5
  require 'zip'
6
6
 
7
- # test zip64 support for real, by actually exceeding the 32-bit size/offset limits
8
- # this test does not, of course, run with the normal unit tests! ;)
7
+ # test zip64 support for real, by actually exceeding the 32-bit size/offset limits
8
+ # this test does not, of course, run with the normal unit tests! ;)
9
9
 
10
10
  class Zip64FullTest < MiniTest::Test
11
11
  def teardown
12
12
  ::Zip.reset!
13
13
  end
14
14
 
15
- def prepareTestFile(test_filename)
15
+ def prepare_test_file(test_filename)
16
16
  ::File.delete(test_filename) if ::File.exist?(test_filename)
17
- return test_filename
17
+ test_filename
18
18
  end
19
19
 
20
- def test_largeZipFile
20
+ def test_large_zip_file
21
21
  ::Zip.write_zip64_support = true
22
22
  first_text = 'starting out small'
23
23
  last_text = 'this tests files starting after 4GB in the archive'
24
- test_filename = prepareTestFile('huge.zip')
24
+ test_filename = prepare_test_file('huge.zip')
25
25
  ::Zip::OutputStream.open(test_filename) do |io|
26
26
  io.put_next_entry('first_file.txt')
27
27
  io.write(first_text)
28
28
 
29
29
  # write just over 4GB (stored, so the zip file exceeds 4GB)
30
- buf = 'blah' * 16384
30
+ buf = 'blah' * 16_384
31
31
  io.put_next_entry('huge_file', nil, nil, ::Zip::Entry::STORED)
32
- 65537.times { io.write(buf) }
32
+ 65_537.times { io.write(buf) }
33
33
 
34
34
  io.put_next_entry('last_file.txt')
35
35
  io.write(last_text)
@@ -44,10 +44,8 @@ if ENV['FULL_ZIP64_TEST']
44
44
  # note: if this fails, be sure you have UnZip version 6.0 or newer
45
45
  # as this is the first version to support zip64 extensions
46
46
  # but some OSes (*cough* OSX) still bundle a 5.xx release
47
- assert system("unzip -t #{test_filename}"), "third-party zip validation failed"
47
+ assert system("unzip -t #{test_filename}"), 'third-party zip validation failed'
48
48
  end
49
-
50
49
  end
51
50
 
52
51
  end
53
-
@@ -11,5 +11,4 @@ class Zip64SupportTest < MiniTest::Test
11
11
  assert(test_rb.size == 482)
12
12
  assert(test_rb.compressed_size == 229)
13
13
  end
14
-
15
14
  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.1.7
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Simonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-02 00:00:00.000000000 Z
11
+ date: 2017-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -66,34 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.7'
69
- - !ruby/object:Gem::Dependency
70
- name: guard
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: guard-minitest
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
69
  description:
98
70
  email:
99
71
  - alex@simonov.me
@@ -144,11 +116,12 @@ files:
144
116
  - samples/example.rb
145
117
  - samples/example_filesystem.rb
146
118
  - samples/example_recursive.rb
147
- - samples/gtkRubyzip.rb
119
+ - samples/gtk_ruby_zip.rb
148
120
  - samples/qtzip.rb
149
121
  - samples/write_simple.rb
150
122
  - samples/zipfind.rb
151
123
  - test/basic_zip_file_test.rb
124
+ - test/case_sensitivity_test.rb
152
125
  - test/central_directory_entry_test.rb
153
126
  - test/central_directory_test.rb
154
127
  - test/crypto/null_encryption_test.rb
@@ -164,8 +137,10 @@ files:
164
137
  - test/data/mimetype
165
138
  - test/data/notzippedruby.rb
166
139
  - test/data/ntfs.zip
140
+ - test/data/oddExtraField.zip
167
141
  - test/data/rubycode.zip
168
142
  - test/data/rubycode2.zip
143
+ - test/data/test.xls
169
144
  - test/data/testDirectory.bin
170
145
  - test/data/zip64-sample.zip
171
146
  - test/data/zipWithDirs.zip
@@ -178,6 +153,7 @@ files:
178
153
  - test/extra_field_test.rb
179
154
  - test/file_extract_directory_test.rb
180
155
  - test/file_extract_test.rb
156
+ - test/file_permissions_test.rb
181
157
  - test/file_split_test.rb
182
158
  - test/file_test.rb
183
159
  - test/filesystem/dir_iterator_test.rb
@@ -195,6 +171,7 @@ files:
195
171
  - test/output_stream_test.rb
196
172
  - test/pass_thru_compressor_test.rb
197
173
  - test/pass_thru_decompressor_test.rb
174
+ - test/samples/example_recursive_test.rb
198
175
  - test/settings_test.rb
199
176
  - test/test_helper.rb
200
177
  - test/unicode_file_names_and_comments_test.rb
@@ -220,12 +197,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
197
  version: '0'
221
198
  requirements: []
222
199
  rubyforge_project:
223
- rubygems_version: 2.4.5
200
+ rubygems_version: 2.5.1
224
201
  signing_key:
225
202
  specification_version: 4
226
203
  summary: rubyzip is a ruby module for reading and writing zip files
227
204
  test_files:
228
205
  - test/basic_zip_file_test.rb
206
+ - test/case_sensitivity_test.rb
229
207
  - test/central_directory_entry_test.rb
230
208
  - test/central_directory_test.rb
231
209
  - test/crypto/null_encryption_test.rb
@@ -240,8 +218,10 @@ test_files:
240
218
  - test/data/mimetype
241
219
  - test/data/notzippedruby.rb
242
220
  - test/data/ntfs.zip
221
+ - test/data/oddExtraField.zip
243
222
  - test/data/rubycode.zip
244
223
  - test/data/rubycode2.zip
224
+ - test/data/test.xls
245
225
  - test/data/testDirectory.bin
246
226
  - test/data/WarnInvalidDate.zip
247
227
  - test/data/zip64-sample.zip
@@ -255,6 +235,7 @@ test_files:
255
235
  - test/extra_field_test.rb
256
236
  - test/file_extract_directory_test.rb
257
237
  - test/file_extract_test.rb
238
+ - test/file_permissions_test.rb
258
239
  - test/file_split_test.rb
259
240
  - test/file_test.rb
260
241
  - test/filesystem/dir_iterator_test.rb
@@ -272,6 +253,7 @@ test_files:
272
253
  - test/output_stream_test.rb
273
254
  - test/pass_thru_compressor_test.rb
274
255
  - test/pass_thru_decompressor_test.rb
256
+ - test/samples/example_recursive_test.rb
275
257
  - test/settings_test.rb
276
258
  - test/test_helper.rb
277
259
  - test/unicode_file_names_and_comments_test.rb