zippo 0.2.0 → 0.2.1

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 (46) hide show
  1. checksums.yaml +6 -14
  2. data/.rubocop.yml +35 -0
  3. data/.travis.yml +3 -0
  4. data/README.md +4 -0
  5. data/Rakefile +8 -2
  6. data/lib/zippo.rb +1 -1
  7. data/lib/zippo/binary_structure/base.rb +10 -8
  8. data/lib/zippo/binary_structure/binary_packer.rb +2 -2
  9. data/lib/zippo/binary_structure/meta.rb +9 -11
  10. data/lib/zippo/binary_structure/structure.rb +6 -4
  11. data/lib/zippo/binary_structure/structure_member.rb +1 -1
  12. data/lib/zippo/cd_file_header.rb +14 -14
  13. data/lib/zippo/central_directory_entries_unpacker.rb +3 -2
  14. data/lib/zippo/central_directory_reader.rb +4 -3
  15. data/lib/zippo/end_cd_record.rb +6 -6
  16. data/lib/zippo/filter/base.rb +3 -2
  17. data/lib/zippo/filter/compressor.rb +4 -4
  18. data/lib/zippo/filter/compressor/deflate.rb +1 -0
  19. data/lib/zippo/filter/null_filters.rb +1 -0
  20. data/lib/zippo/filter/uncompressor.rb +3 -5
  21. data/lib/zippo/filter/uncompressor/deflate.rb +1 -0
  22. data/lib/zippo/io_zip_member.rb +1 -1
  23. data/lib/zippo/local_file_header.rb +8 -8
  24. data/lib/zippo/version.rb +1 -1
  25. data/lib/zippo/zip_directory.rb +15 -12
  26. data/lib/zippo/zip_file.rb +8 -6
  27. data/lib/zippo/zip_file_writer.rb +4 -4
  28. data/lib/zippo/zip_member.rb +4 -3
  29. data/spec/binary_structure_spec.rb +26 -28
  30. data/spec/central_directory_entries_unpacker_spec.rb +2 -3
  31. data/spec/central_directory_parser_spec.rb +4 -4
  32. data/spec/central_directory_unpacker_spec.rb +0 -1
  33. data/spec/deflate_compressor_spec.rb +4 -4
  34. data/spec/deflate_uncompressor_spec.rb +5 -6
  35. data/spec/integration/compressors_spec.rb +1 -1
  36. data/spec/integration/zippo_spec.rb +4 -3
  37. data/spec/spec_helper.rb +9 -0
  38. data/spec/store_compressor_spec.rb +3 -3
  39. data/spec/store_uncompressor_spec.rb +1 -1
  40. data/spec/zip_directory_spec.rb +15 -15
  41. data/spec/zip_file_spec.rb +1 -1
  42. data/spec/zip_file_writer_spec.rb +0 -1
  43. data/spec/zip_member_spec.rb +4 -6
  44. data/yard_extensions.rb +1 -1
  45. data/zippo.gemspec +7 -6
  46. metadata +59 -19
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,15 @@
1
+ require "pathname"
2
+
3
+ RSpec.configure do |config|
4
+ config.expect_with :rspec do |c|
5
+ c.syntax = [:should, :expect]
6
+ end
7
+ end
8
+
1
9
  def io_for(filename)
2
10
  File.open test_file(filename), "rb:ASCII-8BIT"
3
11
  end
12
+
4
13
  def test_file(filename)
5
14
  File.join(File.join(File.dirname(__FILE__), 'data'), filename)
6
15
  end
@@ -4,9 +4,9 @@ require "zippo/filter/compressor/store"
4
4
 
5
5
  module Zippo::Filter
6
6
  describe StoreCompressor do
7
- let (:data) { "a" * 20 }
8
- let (:io) { StringIO.new data }
9
- let (:out) { StringIO.new }
7
+ let(:data) { "a" * 20 }
8
+ let(:io) { StringIO.new data }
9
+ let(:out) { StringIO.new }
10
10
  it "should write the data" do
11
11
  compressor = StoreCompressor.new(io)
12
12
  size, csize, crc32 = compressor.compress_to out
@@ -5,7 +5,7 @@ require "zippo/filter/uncompressor/store"
5
5
  module Zippo::Filter
6
6
  describe StoreUncompressor do
7
7
  let(:io) { StringIO.new "foobarbazquux" }
8
- let (:out) { StringIO.new }
8
+ let(:out) { StringIO.new }
9
9
  it "should read only the specified amount" do
10
10
  io.seek 3
11
11
  StoreUncompressor.new(io, 3).uncompress.should eq "bar"
@@ -5,21 +5,21 @@ require 'zippo/zip_file'
5
5
  module Zippo
6
6
  describe ZipDirectory do
7
7
  context "when opening a file" do
8
- let(:io) { File.open(file, "rb:ASCII-8BIT") }
9
- after(:each) { io.close }
10
- subject { ZipDirectory.new io }
11
- context "when reading a simple file" do
12
- let(:file) { test_file "test.zip" }
13
- it { should have(1).entries }
14
- specify { subject["test.file"].should_not be_nil }
15
- it { should_not be_empty }
16
- end
17
- context "when reading a larger zip" do
18
- let(:file) { test_file "multi.zip" }
19
- it { should have(2).entries }
20
- specify { subject["test.file"].should_not be_nil }
21
- specify { subject["other.test"].should_not be_nil }
22
- end
8
+ let(:io) { File.open(file, "rb:ASCII-8BIT") }
9
+ after(:each) { io.close }
10
+ subject { ZipDirectory.new io }
11
+ context "when reading a simple file" do
12
+ let(:file) { test_file "test.zip" }
13
+ specify { subject.entries.size.should eq 1 }
14
+ specify { subject["test.file"].should_not be_nil }
15
+ it { should_not be_empty }
16
+ end
17
+ context "when reading a larger zip" do
18
+ let(:file) { test_file "multi.zip" }
19
+ specify { subject.entries.size.should eq 2 }
20
+ specify { subject["test.file"].should_not be_nil }
21
+ specify { subject["other.test"].should_not be_nil }
22
+ end
23
23
  end
24
24
  context "when inserting" do
25
25
  let(:io) { StringIO.new "" }
@@ -35,7 +35,7 @@ module Zippo
35
35
  it "should write the file when closed" do
36
36
  zip.close
37
37
  Pathname.new(file).should exist
38
- Zippo::ZipFile.open(file) {|f| f["new.file"].read }.should eq "foo"
38
+ Zippo::ZipFile.open(file) { |f| f["new.file"].read }.should eq "foo"
39
39
  end
40
40
  end
41
41
  end
@@ -13,7 +13,6 @@ module Zippo
13
13
  directory["file.ext"] = "foo"
14
14
  writer = ZipFileWriter.new directory, "out.zip"
15
15
  writer.write
16
- File.open("/home/jma/yay.zip","w") {|f| f.write File.read("out.zip") }
17
16
  Zippo.open("out.zip") do |f|
18
17
  f['file.ext'].crc32.should eq 0x8c736521
19
18
  f['file.ext'].compressed_size.should eq 5
@@ -9,9 +9,9 @@ module Zippo
9
9
  let(:io) { io_for "test.zip" }
10
10
  let(:cio) { io_for "deflate.zip" }
11
11
  let(:str) { "The quick brown fox jumps over the lazy dog.\n" }
12
- let(:header) { stub(:header, name: "foo", compression_method: 0, compressed_size: 45, uncompressed_size: 45, crc32: 3947940970, local_file_header_offset: 0) }
13
- let(:dheader) { stub(:header, name: "foo/") }
14
- let(:cheader) { stub(:header, compression_method: 8, compressed_size: 37, local_file_header_offset: 0) }
12
+ let(:header) { double(:header, name: "foo", compression_method: 0, compressed_size: 45, uncompressed_size: 45, crc32: 3947940970, local_file_header_offset: 0) }
13
+ let(:dheader) { double(:header, name: "foo/") }
14
+ let(:cheader) { double(:header, compression_method: 8, compressed_size: 37, local_file_header_offset: 0) }
15
15
  it "should work" do
16
16
  member = ZipMember.new io, header
17
17
  member.read.should eq str
@@ -34,9 +34,7 @@ module Zippo
34
34
  member = ZipMember.new cio, cheader
35
35
  member.read.should eq "Methinks it is like a weasel.\n" * 10
36
36
  end
37
- it "should be able to write to an IO using a streaming approach" do
38
- pending
39
- end
37
+ pending "should be able to write to an IO using a streaming approach"
40
38
  pending "should be able to choose between recompressing or re-using the compressed data"
41
39
  end
42
40
  end
data/yard_extensions.rb CHANGED
@@ -5,6 +5,6 @@ class BinaryStructureHandler < YARD::Handlers::Ruby::Base
5
5
  namespace_only
6
6
 
7
7
  def process
8
- parse_block(statement.last.last, :owner => namespace)
8
+ parse_block(statement.last.last, owner: namespace)
9
9
  end
10
10
  end
data/zippo.gemspec CHANGED
@@ -4,20 +4,21 @@ require File.expand_path('../lib/zippo/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Jonathon M. Abbott"]
6
6
  gem.email = ["jma@dandaraga.net"]
7
- gem.summary = %q{An (almost) pure-ruby Zip library}
7
+ gem.summary = 'An (almost) pure-ruby Zip library'
8
8
  gem.description = gem.summary
9
9
  gem.homepage = "https://github.com/JonathonMA/zippo"
10
10
  gem.license = "MIT"
11
11
 
12
- gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
+ gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
13
13
  gem.files = `git ls-files`.split("\n")
14
14
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
15
  gem.name = "zippo"
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = Zippo::VERSION
18
18
 
19
- gem.add_development_dependency "rspec"
20
- gem.add_development_dependency "rake"
21
- gem.add_development_dependency "yard", '>= 0.8'
22
- gem.add_development_dependency "redcarpet"
19
+ gem.add_development_dependency "rspec", "~> 3.0"
20
+ gem.add_development_dependency "rake"
21
+ gem.add_development_dependency "yard", '>= 0.8'
22
+ gem.add_development_dependency "redcarpet"
23
+ gem.add_development_dependency "rubocop", '~> 0.27.0'
23
24
  end
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zippo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathon M. Abbott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-04 00:00:00.000000000 Z
11
+ date: 2015-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '3.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: yard
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.8'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.8'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: redcarpet
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.27.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.27.0
69
83
  description: An (almost) pure-ruby Zip library
70
84
  email:
71
85
  - jma@dandaraga.net
@@ -73,9 +87,11 @@ executables: []
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
76
- - .gitignore
77
- - .rspec
78
- - .yardopts
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".rubocop.yml"
93
+ - ".travis.yml"
94
+ - ".yardopts"
79
95
  - Gemfile
80
96
  - LICENSE
81
97
  - README.md
@@ -145,19 +161,43 @@ require_paths:
145
161
  - lib
146
162
  required_ruby_version: !ruby/object:Gem::Requirement
147
163
  requirements:
148
- - - ! '>='
164
+ - - ">="
149
165
  - !ruby/object:Gem::Version
150
166
  version: '0'
151
167
  required_rubygems_version: !ruby/object:Gem::Requirement
152
168
  requirements:
153
- - - ! '>='
169
+ - - ">="
154
170
  - !ruby/object:Gem::Version
155
171
  version: '0'
156
172
  requirements: []
157
173
  rubyforge_project:
158
- rubygems_version: 2.0.3
174
+ rubygems_version: 2.4.5
159
175
  signing_key:
160
176
  specification_version: 4
161
177
  summary: An (almost) pure-ruby Zip library
162
- test_files: []
178
+ test_files:
179
+ - spec/binary_structure_spec.rb
180
+ - spec/central_directory_entries_unpacker_spec.rb
181
+ - spec/central_directory_parser_spec.rb
182
+ - spec/central_directory_unpacker_spec.rb
183
+ - spec/compressor_spec.rb
184
+ - spec/data/comment.zip
185
+ - spec/data/deflate.zip
186
+ - spec/data/multi.zip
187
+ - spec/data/not_a.zip
188
+ - spec/data/test.zip
189
+ - spec/deflate_compressor_spec.rb
190
+ - spec/deflate_uncompressor_spec.rb
191
+ - spec/integration/compressors_spec.rb
192
+ - spec/integration/zippo_spec.rb
193
+ - spec/io_zip_member_spec.rb
194
+ - spec/local_file_header_spec.rb
195
+ - spec/spec_helper.rb
196
+ - spec/store_compressor_spec.rb
197
+ - spec/store_uncompressor_spec.rb
198
+ - spec/uncompressor_spec.rb
199
+ - spec/zip_directory_spec.rb
200
+ - spec/zip_file_spec.rb
201
+ - spec/zip_file_writer_spec.rb
202
+ - spec/zip_member_spec.rb
163
203
  has_rdoc: