rubyzip 1.3.0 → 3.0.0.alpha

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +368 -0
  3. data/README.md +123 -46
  4. data/Rakefile +13 -6
  5. data/lib/zip/central_directory.rb +166 -116
  6. data/lib/zip/compressor.rb +3 -1
  7. data/lib/zip/constants.rb +77 -21
  8. data/lib/zip/crypto/decrypted_io.rb +42 -0
  9. data/lib/zip/crypto/encryption.rb +4 -2
  10. data/lib/zip/crypto/null_encryption.rb +5 -3
  11. data/lib/zip/crypto/traditional_encryption.rb +14 -12
  12. data/lib/zip/decompressor.rb +21 -2
  13. data/lib/zip/deflater.rb +10 -8
  14. data/lib/zip/dirtyable.rb +32 -0
  15. data/lib/zip/dos_time.rb +53 -12
  16. data/lib/zip/entry.rb +306 -184
  17. data/lib/zip/entry_set.rb +11 -7
  18. data/lib/zip/errors.rb +115 -15
  19. data/lib/zip/extra_field/generic.rb +11 -17
  20. data/lib/zip/extra_field/ntfs.rb +8 -2
  21. data/lib/zip/extra_field/old_unix.rb +6 -2
  22. data/lib/zip/extra_field/universal_time.rb +45 -13
  23. data/lib/zip/extra_field/unix.rb +7 -3
  24. data/lib/zip/extra_field/unknown.rb +33 -0
  25. data/lib/zip/extra_field/zip64.rb +16 -7
  26. data/lib/zip/extra_field.rb +22 -26
  27. data/lib/zip/file.rb +196 -240
  28. data/lib/zip/file_split.rb +97 -0
  29. data/lib/zip/filesystem/dir.rb +86 -0
  30. data/lib/zip/filesystem/directory_iterator.rb +48 -0
  31. data/lib/zip/filesystem/file.rb +262 -0
  32. data/lib/zip/filesystem/file_stat.rb +110 -0
  33. data/lib/zip/filesystem/zip_file_name_mapper.rb +81 -0
  34. data/lib/zip/filesystem.rb +31 -584
  35. data/lib/zip/inflater.rb +27 -37
  36. data/lib/zip/input_stream.rb +67 -42
  37. data/lib/zip/ioextras/abstract_input_stream.rb +32 -16
  38. data/lib/zip/ioextras/abstract_output_stream.rb +5 -3
  39. data/lib/zip/ioextras.rb +7 -7
  40. data/lib/zip/null_compressor.rb +3 -1
  41. data/lib/zip/null_decompressor.rb +4 -10
  42. data/lib/zip/null_input_stream.rb +3 -1
  43. data/lib/zip/output_stream.rb +58 -43
  44. data/lib/zip/pass_thru_compressor.rb +5 -3
  45. data/lib/zip/pass_thru_decompressor.rb +16 -23
  46. data/lib/zip/streamable_directory.rb +6 -4
  47. data/lib/zip/streamable_stream.rb +9 -10
  48. data/lib/zip/version.rb +3 -1
  49. data/lib/zip.rb +19 -4
  50. data/rubyzip.gemspec +38 -0
  51. data/samples/example.rb +9 -4
  52. data/samples/example_filesystem.rb +3 -2
  53. data/samples/example_recursive.rb +3 -1
  54. data/samples/gtk_ruby_zip.rb +22 -20
  55. data/samples/qtzip.rb +12 -11
  56. data/samples/write_simple.rb +3 -4
  57. data/samples/zipfind.rb +24 -22
  58. metadata +86 -179
  59. data/TODO +0 -15
  60. data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
  61. data/test/basic_zip_file_test.rb +0 -60
  62. data/test/case_sensitivity_test.rb +0 -69
  63. data/test/central_directory_entry_test.rb +0 -69
  64. data/test/central_directory_test.rb +0 -100
  65. data/test/crypto/null_encryption_test.rb +0 -57
  66. data/test/crypto/traditional_encryption_test.rb +0 -80
  67. data/test/data/WarnInvalidDate.zip +0 -0
  68. data/test/data/file1.txt +0 -46
  69. data/test/data/file1.txt.deflatedData +0 -0
  70. data/test/data/file2.txt +0 -1504
  71. data/test/data/globTest/foo/bar/baz/foo.txt +0 -0
  72. data/test/data/globTest/foo.txt +0 -0
  73. data/test/data/globTest/food.txt +0 -0
  74. data/test/data/globTest.zip +0 -0
  75. data/test/data/gpbit3stored.zip +0 -0
  76. data/test/data/mimetype +0 -1
  77. data/test/data/notzippedruby.rb +0 -7
  78. data/test/data/ntfs.zip +0 -0
  79. data/test/data/oddExtraField.zip +0 -0
  80. data/test/data/path_traversal/Makefile +0 -10
  81. data/test/data/path_traversal/jwilk/README.md +0 -5
  82. data/test/data/path_traversal/jwilk/absolute1.zip +0 -0
  83. data/test/data/path_traversal/jwilk/absolute2.zip +0 -0
  84. data/test/data/path_traversal/jwilk/dirsymlink.zip +0 -0
  85. data/test/data/path_traversal/jwilk/dirsymlink2a.zip +0 -0
  86. data/test/data/path_traversal/jwilk/dirsymlink2b.zip +0 -0
  87. data/test/data/path_traversal/jwilk/relative0.zip +0 -0
  88. data/test/data/path_traversal/jwilk/relative2.zip +0 -0
  89. data/test/data/path_traversal/jwilk/symlink.zip +0 -0
  90. data/test/data/path_traversal/relative1.zip +0 -0
  91. data/test/data/path_traversal/tilde.zip +0 -0
  92. data/test/data/path_traversal/tuzovakaoff/README.md +0 -3
  93. data/test/data/path_traversal/tuzovakaoff/absolutepath.zip +0 -0
  94. data/test/data/path_traversal/tuzovakaoff/symlink.zip +0 -0
  95. data/test/data/rubycode.zip +0 -0
  96. data/test/data/rubycode2.zip +0 -0
  97. data/test/data/test.xls +0 -0
  98. data/test/data/testDirectory.bin +0 -0
  99. data/test/data/zip64-sample.zip +0 -0
  100. data/test/data/zipWithDirs.zip +0 -0
  101. data/test/data/zipWithEncryption.zip +0 -0
  102. data/test/deflater_test.rb +0 -65
  103. data/test/encryption_test.rb +0 -42
  104. data/test/entry_set_test.rb +0 -163
  105. data/test/entry_test.rb +0 -154
  106. data/test/errors_test.rb +0 -35
  107. data/test/extra_field_test.rb +0 -76
  108. data/test/file_extract_directory_test.rb +0 -54
  109. data/test/file_extract_test.rb +0 -145
  110. data/test/file_permissions_test.rb +0 -65
  111. data/test/file_split_test.rb +0 -57
  112. data/test/file_test.rb +0 -666
  113. data/test/filesystem/dir_iterator_test.rb +0 -58
  114. data/test/filesystem/directory_test.rb +0 -139
  115. data/test/filesystem/file_mutating_test.rb +0 -87
  116. data/test/filesystem/file_nonmutating_test.rb +0 -508
  117. data/test/filesystem/file_stat_test.rb +0 -64
  118. data/test/gentestfiles.rb +0 -126
  119. data/test/inflater_test.rb +0 -14
  120. data/test/input_stream_test.rb +0 -182
  121. data/test/ioextras/abstract_input_stream_test.rb +0 -102
  122. data/test/ioextras/abstract_output_stream_test.rb +0 -106
  123. data/test/ioextras/fake_io_test.rb +0 -18
  124. data/test/local_entry_test.rb +0 -154
  125. data/test/output_stream_test.rb +0 -128
  126. data/test/pass_thru_compressor_test.rb +0 -30
  127. data/test/pass_thru_decompressor_test.rb +0 -14
  128. data/test/path_traversal_test.rb +0 -141
  129. data/test/samples/example_recursive_test.rb +0 -37
  130. data/test/settings_test.rb +0 -95
  131. data/test/test_helper.rb +0 -234
  132. data/test/unicode_file_names_and_comments_test.rb +0 -62
  133. data/test/zip64_full_test.rb +0 -51
  134. data/test/zip64_support_test.rb +0 -14
@@ -1,12 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- $: << '../lib'
4
+ $LOAD_PATH << '../lib'
4
5
 
5
6
  require 'zip'
6
7
 
7
- include Zip
8
-
9
- OutputStream.open('simple.zip') do |zos|
8
+ ::Zip::OutputStream.open('simple.zip') do |zos|
10
9
  zos.put_next_entry 'entry.txt'
11
10
  zos.puts 'Hello world'
12
11
  end
data/samples/zipfind.rb CHANGED
@@ -1,37 +1,39 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  $VERBOSE = true
4
5
 
5
- $: << '../lib'
6
+ $LOAD_PATH << '../lib'
6
7
 
7
8
  require 'zip'
8
9
  require 'find'
9
10
 
10
11
  module Zip
11
12
  module ZipFind
12
- def self.find(path, zipFilePattern = /\.zip$/i)
13
- Find.find(path) do |fileName|
14
- yield(fileName)
15
- next unless zipFilePattern.match(fileName) && File.file?(fileName)
13
+ def self.find(path, zip_file_pattern = /\.zip$/i)
14
+ Find.find(path) do |filename|
15
+ yield(filename)
16
+ next unless zip_file_pattern.match(filename) && File.file?(filename)
17
+
16
18
  begin
17
- Zip::File.foreach(fileName) do |zipEntry|
18
- yield(fileName + File::SEPARATOR + zipEntry.to_s)
19
+ Zip::File.foreach(filename) do |entry|
20
+ yield(filename + File::SEPARATOR + entry.to_s)
19
21
  end
20
- rescue Errno::EACCES => ex
21
- puts ex
22
+ rescue Errno::EACCES => e
23
+ puts e
22
24
  end
23
25
  end
24
26
  end
25
27
 
26
- def self.find_file(path, fileNamePattern, zipFilePattern = /\.zip$/i)
27
- find(path, zipFilePattern) do |fileName|
28
- yield(fileName) if fileNamePattern.match(fileName)
28
+ def self.find_file(path, filename_pattern, zip_file_pattern = /\.zip$/i)
29
+ find(path, zip_file_pattern) do |filename|
30
+ yield(filename) if filename_pattern.match(filename)
29
31
  end
30
32
  end
31
33
  end
32
34
  end
33
35
 
34
- if $0 == __FILE__
36
+ if $PROGRAM_NAME == __FILE__
35
37
  module ZipFindConsoleRunner
36
38
  PATH_ARG_INDEX = 0
37
39
  FILENAME_PATTERN_ARG_INDEX = 1
@@ -41,24 +43,24 @@ if $0 == __FILE__
41
43
  check_args(args)
42
44
  Zip::ZipFind.find_file(args[PATH_ARG_INDEX],
43
45
  args[FILENAME_PATTERN_ARG_INDEX],
44
- args[ZIPFILE_PATTERN_ARG_INDEX]) do |fileName|
45
- report_entry_found fileName
46
+ args[ZIPFILE_PATTERN_ARG_INDEX]) do |filename|
47
+ report_entry_found filename
46
48
  end
47
49
  end
48
50
 
49
51
  def self.check_args(args)
50
- if args.size != 3
51
- usage
52
- exit
53
- end
52
+ return if args.size == 3
53
+
54
+ usage
55
+ exit
54
56
  end
55
57
 
56
58
  def self.usage
57
- puts "Usage: #{$0} PATH ZIPFILENAME_PATTERN FILNAME_PATTERN"
59
+ puts "Usage: #{$PROGRAM_NAME} PATH ZIPFILENAME_PATTERN FILNAME_PATTERN"
58
60
  end
59
61
 
60
- def self.report_entry_found(fileName)
61
- puts fileName
62
+ def self.report_entry_found(filename)
63
+ puts filename
62
64
  end
63
65
  end
64
66
 
metadata CHANGED
@@ -1,104 +1,152 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzip
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 3.0.0.alpha
5
5
  platform: ruby
6
6
  authors:
7
+ - Robert Haines
8
+ - John Lees-Miller
7
9
  - Alexander Simonov
8
- autorequire:
10
+ autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2019-09-25 00:00:00.000000000 Z
13
+ date: 2023-04-16 00:00:00.000000000 Z
12
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: minitest
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '5.4'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '5.4'
13
29
  - !ruby/object:Gem::Dependency
14
30
  name: rake
15
31
  requirement: !ruby/object:Gem::Requirement
16
32
  requirements:
17
33
  - - "~>"
18
34
  - !ruby/object:Gem::Version
19
- version: '10.3'
35
+ version: 12.3.3
20
36
  type: :development
21
37
  prerelease: false
22
38
  version_requirements: !ruby/object:Gem::Requirement
23
39
  requirements:
24
40
  - - "~>"
25
41
  - !ruby/object:Gem::Version
26
- version: '10.3'
42
+ version: 12.3.3
27
43
  - !ruby/object:Gem::Dependency
28
- name: pry
44
+ name: rdoc
29
45
  requirement: !ruby/object:Gem::Requirement
30
46
  requirements:
31
47
  - - "~>"
32
48
  - !ruby/object:Gem::Version
33
- version: '0.10'
49
+ version: 6.4.0
34
50
  type: :development
35
51
  prerelease: false
36
52
  version_requirements: !ruby/object:Gem::Requirement
37
53
  requirements:
38
54
  - - "~>"
39
55
  - !ruby/object:Gem::Version
40
- version: '0.10'
56
+ version: 6.4.0
41
57
  - !ruby/object:Gem::Dependency
42
- name: minitest
58
+ name: rubocop
43
59
  requirement: !ruby/object:Gem::Requirement
44
60
  requirements:
45
61
  - - "~>"
46
62
  - !ruby/object:Gem::Version
47
- version: '5.4'
63
+ version: 1.12.0
48
64
  type: :development
49
65
  prerelease: false
50
66
  version_requirements: !ruby/object:Gem::Requirement
51
67
  requirements:
52
68
  - - "~>"
53
69
  - !ruby/object:Gem::Version
54
- version: '5.4'
70
+ version: 1.12.0
55
71
  - !ruby/object:Gem::Dependency
56
- name: coveralls
72
+ name: rubocop-performance
57
73
  requirement: !ruby/object:Gem::Requirement
58
74
  requirements:
59
75
  - - "~>"
60
76
  - !ruby/object:Gem::Version
61
- version: '0.7'
77
+ version: 1.10.0
62
78
  type: :development
63
79
  prerelease: false
64
80
  version_requirements: !ruby/object:Gem::Requirement
65
81
  requirements:
66
82
  - - "~>"
67
83
  - !ruby/object:Gem::Version
68
- version: '0.7'
84
+ version: 1.10.0
69
85
  - !ruby/object:Gem::Dependency
70
- name: rubocop
86
+ name: rubocop-rake
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: 0.5.0
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: 0.5.0
99
+ - !ruby/object:Gem::Dependency
100
+ name: simplecov
71
101
  requirement: !ruby/object:Gem::Requirement
72
102
  requirements:
73
103
  - - "~>"
74
104
  - !ruby/object:Gem::Version
75
- version: 0.49.1
105
+ version: 0.18.0
76
106
  type: :development
77
107
  prerelease: false
78
108
  version_requirements: !ruby/object:Gem::Requirement
79
109
  requirements:
80
110
  - - "~>"
81
111
  - !ruby/object:Gem::Version
82
- version: 0.49.1
83
- description:
112
+ version: 0.18.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: simplecov-lcov
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.8'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '0.8'
127
+ description:
84
128
  email:
129
+ - hainesr@gmail.com
130
+ - jdleesmiller@gmail.com
85
131
  - alex@simonov.me
86
132
  executables: []
87
133
  extensions: []
88
134
  extra_rdoc_files: []
89
135
  files:
136
+ - Changelog.md
90
137
  - README.md
91
138
  - Rakefile
92
- - TODO
93
139
  - lib/zip.rb
94
140
  - lib/zip/central_directory.rb
95
141
  - lib/zip/compressor.rb
96
142
  - lib/zip/constants.rb
143
+ - lib/zip/crypto/decrypted_io.rb
97
144
  - lib/zip/crypto/encryption.rb
98
145
  - lib/zip/crypto/null_encryption.rb
99
146
  - lib/zip/crypto/traditional_encryption.rb
100
147
  - lib/zip/decompressor.rb
101
148
  - lib/zip/deflater.rb
149
+ - lib/zip/dirtyable.rb
102
150
  - lib/zip/dos_time.rb
103
151
  - lib/zip/entry.rb
104
152
  - lib/zip/entry_set.rb
@@ -109,10 +157,16 @@ files:
109
157
  - lib/zip/extra_field/old_unix.rb
110
158
  - lib/zip/extra_field/universal_time.rb
111
159
  - lib/zip/extra_field/unix.rb
160
+ - lib/zip/extra_field/unknown.rb
112
161
  - lib/zip/extra_field/zip64.rb
113
- - lib/zip/extra_field/zip64_placeholder.rb
114
162
  - lib/zip/file.rb
163
+ - lib/zip/file_split.rb
115
164
  - lib/zip/filesystem.rb
165
+ - lib/zip/filesystem/dir.rb
166
+ - lib/zip/filesystem/directory_iterator.rb
167
+ - lib/zip/filesystem/file.rb
168
+ - lib/zip/filesystem/file_stat.rb
169
+ - lib/zip/filesystem/zip_file_name_mapper.rb
116
170
  - lib/zip/inflater.rb
117
171
  - lib/zip/input_stream.rb
118
172
  - lib/zip/ioextras.rb
@@ -127,6 +181,7 @@ files:
127
181
  - lib/zip/streamable_directory.rb
128
182
  - lib/zip/streamable_stream.rb
129
183
  - lib/zip/version.rb
184
+ - rubyzip.gemspec
130
185
  - samples/example.rb
131
186
  - samples/example_filesystem.rb
132
187
  - samples/example_recursive.rb
@@ -134,90 +189,16 @@ files:
134
189
  - samples/qtzip.rb
135
190
  - samples/write_simple.rb
136
191
  - 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/tilde.zip
168
- - test/data/path_traversal/tuzovakaoff/README.md
169
- - test/data/path_traversal/tuzovakaoff/absolutepath.zip
170
- - test/data/path_traversal/tuzovakaoff/symlink.zip
171
- - test/data/rubycode.zip
172
- - test/data/rubycode2.zip
173
- - test/data/test.xls
174
- - test/data/testDirectory.bin
175
- - test/data/zip64-sample.zip
176
- - test/data/zipWithDirs.zip
177
- - test/data/zipWithEncryption.zip
178
- - test/deflater_test.rb
179
- - test/encryption_test.rb
180
- - test/entry_set_test.rb
181
- - test/entry_test.rb
182
- - test/errors_test.rb
183
- - test/extra_field_test.rb
184
- - test/file_extract_directory_test.rb
185
- - test/file_extract_test.rb
186
- - test/file_permissions_test.rb
187
- - test/file_split_test.rb
188
- - test/file_test.rb
189
- - test/filesystem/dir_iterator_test.rb
190
- - test/filesystem/directory_test.rb
191
- - test/filesystem/file_mutating_test.rb
192
- - test/filesystem/file_nonmutating_test.rb
193
- - test/filesystem/file_stat_test.rb
194
- - test/gentestfiles.rb
195
- - test/inflater_test.rb
196
- - test/input_stream_test.rb
197
- - test/ioextras/abstract_input_stream_test.rb
198
- - test/ioextras/abstract_output_stream_test.rb
199
- - test/ioextras/fake_io_test.rb
200
- - test/local_entry_test.rb
201
- - test/output_stream_test.rb
202
- - test/pass_thru_compressor_test.rb
203
- - test/pass_thru_decompressor_test.rb
204
- - test/path_traversal_test.rb
205
- - test/samples/example_recursive_test.rb
206
- - test/settings_test.rb
207
- - test/test_helper.rb
208
- - test/unicode_file_names_and_comments_test.rb
209
- - test/zip64_full_test.rb
210
- - test/zip64_support_test.rb
211
192
  homepage: http://github.com/rubyzip/rubyzip
212
193
  licenses:
213
- - BSD 2-Clause
194
+ - BSD-2-Clause
214
195
  metadata:
215
196
  bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
216
- changelog_uri: https://github.com/rubyzip/rubyzip/blob/v1.3.0/Changelog.md
217
- documentation_uri: https://www.rubydoc.info/gems/rubyzip/1.3.0
218
- source_code_uri: https://github.com/rubyzip/rubyzip/tree/v1.3.0
197
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.0.0.alpha/Changelog.md
198
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0.alpha
199
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0.alpha
219
200
  wiki_uri: https://github.com/rubyzip/rubyzip/wiki
220
- post_install_message:
201
+ post_install_message:
221
202
  rdoc_options: []
222
203
  require_paths:
223
204
  - lib
@@ -225,89 +206,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
206
  requirements:
226
207
  - - ">="
227
208
  - !ruby/object:Gem::Version
228
- version: 1.9.2
209
+ version: '2.5'
229
210
  required_rubygems_version: !ruby/object:Gem::Requirement
230
211
  requirements:
231
- - - ">="
212
+ - - ">"
232
213
  - !ruby/object:Gem::Version
233
- version: '0'
214
+ version: 1.3.1
234
215
  requirements: []
235
- rubygems_version: 3.0.3
236
- signing_key:
216
+ rubygems_version: 3.3.23
217
+ signing_key:
237
218
  specification_version: 4
238
219
  summary: rubyzip is a ruby module for reading and writing zip files
239
- test_files:
240
- - test/file_permissions_test.rb
241
- - test/path_traversal_test.rb
242
- - test/ioextras/abstract_input_stream_test.rb
243
- - test/ioextras/fake_io_test.rb
244
- - test/ioextras/abstract_output_stream_test.rb
245
- - test/central_directory_test.rb
246
- - test/central_directory_entry_test.rb
247
- - test/crypto/traditional_encryption_test.rb
248
- - test/crypto/null_encryption_test.rb
249
- - test/input_stream_test.rb
250
- - test/file_extract_directory_test.rb
251
- - test/basic_zip_file_test.rb
252
- - test/inflater_test.rb
253
- - test/file_extract_test.rb
254
- - test/pass_thru_compressor_test.rb
255
- - test/filesystem/file_nonmutating_test.rb
256
- - test/filesystem/file_stat_test.rb
257
- - test/filesystem/file_mutating_test.rb
258
- - test/filesystem/dir_iterator_test.rb
259
- - test/filesystem/directory_test.rb
260
- - test/extra_field_test.rb
261
- - test/zip64_support_test.rb
262
- - test/local_entry_test.rb
263
- - test/samples/example_recursive_test.rb
264
- - test/entry_test.rb
265
- - test/case_sensitivity_test.rb
266
- - test/zip64_full_test.rb
267
- - test/pass_thru_decompressor_test.rb
268
- - test/settings_test.rb
269
- - test/gentestfiles.rb
270
- - test/encryption_test.rb
271
- - test/file_test.rb
272
- - test/deflater_test.rb
273
- - test/test_helper.rb
274
- - test/errors_test.rb
275
- - test/file_split_test.rb
276
- - test/data/file2.txt
277
- - test/data/testDirectory.bin
278
- - test/data/globTest/foo.txt
279
- - test/data/globTest/foo/bar/baz/foo.txt
280
- - test/data/globTest/food.txt
281
- - test/data/file1.txt
282
- - test/data/rubycode.zip
283
- - test/data/WarnInvalidDate.zip
284
- - test/data/zipWithDirs.zip
285
- - test/data/rubycode2.zip
286
- - test/data/mimetype
287
- - test/data/zipWithEncryption.zip
288
- - test/data/path_traversal/tilde.zip
289
- - test/data/path_traversal/Makefile
290
- - test/data/path_traversal/relative1.zip
291
- - test/data/path_traversal/jwilk/dirsymlink.zip
292
- - test/data/path_traversal/jwilk/symlink.zip
293
- - test/data/path_traversal/jwilk/README.md
294
- - test/data/path_traversal/jwilk/relative2.zip
295
- - test/data/path_traversal/jwilk/relative0.zip
296
- - test/data/path_traversal/jwilk/absolute2.zip
297
- - test/data/path_traversal/jwilk/dirsymlink2b.zip
298
- - test/data/path_traversal/jwilk/absolute1.zip
299
- - test/data/path_traversal/jwilk/dirsymlink2a.zip
300
- - test/data/path_traversal/tuzovakaoff/symlink.zip
301
- - test/data/path_traversal/tuzovakaoff/README.md
302
- - test/data/path_traversal/tuzovakaoff/absolutepath.zip
303
- - test/data/oddExtraField.zip
304
- - test/data/gpbit3stored.zip
305
- - test/data/ntfs.zip
306
- - test/data/notzippedruby.rb
307
- - test/data/globTest.zip
308
- - test/data/file1.txt.deflatedData
309
- - test/data/test.xls
310
- - test/data/zip64-sample.zip
311
- - test/unicode_file_names_and_comments_test.rb
312
- - test/entry_set_test.rb
313
- - test/output_stream_test.rb
220
+ test_files: []
data/TODO DELETED
@@ -1,15 +0,0 @@
1
-
2
- * ZipInputStream: Support zip-files with trailing data descriptors
3
- * Adjust rdoc stylesheet to advertise inherited methods if possible
4
- * Suggestion: Add ZipFile/ZipInputStream example that demonstrates extracting all entries.
5
- * Suggestion: ZipFile#extract destination should default to "."
6
- * Suggestion: ZipEntry should have extract(), get_input_stream() methods etc
7
- * (is buffering used anywhere with write?)
8
- * Inflater.sysread should pass the buffer to produce_input.
9
- * Implement ZipFsDir.glob
10
- * ZipFile.checkIntegrity method
11
- * non-MSDOS permission attributes
12
- ** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
13
- * Packager version, required unpacker version in zip headers
14
- ** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
15
- * implement storing attributes and ownership information
@@ -1,15 +0,0 @@
1
- module Zip
2
- # placeholder to reserve space for a Zip64 extra information record, for the
3
- # local file header only, that we won't know if we'll need until after
4
- # we write the file data
5
- class ExtraField::Zip64Placeholder < ExtraField::Generic
6
- HEADER_ID = ['9999'].pack('H*') # this ID is used by other libraries such as .NET's Ionic.zip
7
- register_map
8
-
9
- def initialize(_binstr = nil); end
10
-
11
- def pack_for_local
12
- "\x00" * 16
13
- end
14
- end
15
- end
@@ -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
@@ -1,69 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ZipCaseSensitivityTest < MiniTest::Test
4
- include CommonZipFileFixture
5
-
6
- SRC_FILES = [['test/data/file1.txt', 'testfile.rb'],
7
- ['test/data/file2.txt', 'testFILE.rb']]
8
-
9
- def teardown
10
- ::Zip.case_insensitive_match = false
11
- end
12
-
13
- # Ensure that everything functions normally when +case_insensitive_match = false+
14
- def test_add_case_sensitive
15
- ::Zip.case_insensitive_match = false
16
-
17
- SRC_FILES.each { |fn, _en| assert(::File.exist?(fn)) }
18
- zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE)
19
-
20
- SRC_FILES.each { |fn, en| zf.add(en, fn) }
21
- zf.close
22
-
23
- zfRead = ::Zip::File.new(EMPTY_FILENAME)
24
- assert_equal(SRC_FILES.size, zfRead.entries.length)
25
- SRC_FILES.each_with_index { |a, i|
26
- assert_equal(a.last, zfRead.entries[i].name)
27
- AssertEntry.assert_contents(a.first,
28
- zfRead.get_input_stream(a.last) { |zis| zis.read })
29
- }
30
- end
31
-
32
- # Ensure that names are treated case insensitively when adding files and +case_insensitive_match = false+
33
- def test_add_case_insensitive
34
- ::Zip.case_insensitive_match = true
35
-
36
- SRC_FILES.each { |fn, _en| assert(::File.exist?(fn)) }
37
- zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE)
38
-
39
- assert_raises Zip::EntryExistsError do
40
- SRC_FILES.each { |fn, en| zf.add(en, fn) }
41
- end
42
- end
43
-
44
- # Ensure that names are treated case insensitively when reading files and +case_insensitive_match = true+
45
- def test_add_case_sensitive_read_case_insensitive
46
- ::Zip.case_insensitive_match = false
47
-
48
- SRC_FILES.each { |fn, _en| assert(::File.exist?(fn)) }
49
- zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE)
50
-
51
- SRC_FILES.each { |fn, en| zf.add(en, fn) }
52
- zf.close
53
-
54
- ::Zip.case_insensitive_match = true
55
-
56
- zfRead = ::Zip::File.new(EMPTY_FILENAME)
57
- assert_equal(SRC_FILES.collect { |_fn, en| en.downcase }.uniq.size, zfRead.entries.length)
58
- assert_equal(SRC_FILES.last.last.downcase, zfRead.entries.first.name.downcase)
59
- AssertEntry.assert_contents(SRC_FILES.last.first,
60
- zfRead.get_input_stream(SRC_FILES.last.last) { |zis| zis.read })
61
- end
62
-
63
- private
64
-
65
- def assert_contains(zf, entryName, filename = entryName)
66
- assert(zf.entries.detect { |e| e.name == entryName } != nil, "entry #{entryName} not in #{zf.entries.join(', ')} in zip file #{zf}")
67
- assert_entry_contents(zf, entryName, filename) if File.exist?(filename)
68
- end
69
- end