zip-container 2.2.0 → 3.0.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NmZhNWQzYmVkZGVjNDczNTNjN2M3M2Q2ZmJjYmI5YTEzMDYwZTE0Nw==
4
+ ZmQ3NGUzNmM1NmRlMDE4ZmRjY2NlODQyYTc4Zjc5NDRjYWI3NGJmOA==
5
5
  data.tar.gz: !binary |-
6
- Mzg5YjU5ZjYyYjMzOGUyZWU1ZTk5NjI4YWRmNTQwNTk1NTU1OGJmZQ==
6
+ MTAwMjhkMjZhOTRhZjAwNThhMDg5OTM0ZjE4MmQyNGNjNjJlYzdmYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- N2NjNjI1ZmJhNTQ5NzdiMGU3MjgxZTEwNjM5Zjk5NDgyMGYxYzRjZmYwMmNm
10
- ODg2M2ZmZTllNjU2YjNmMWU2ZGQzOTlhYTE3ODAzNzI3NjY2YmRiY2JiYjg2
11
- MjZkN2E5NTljMmIzYjIyNTcyZTE4ZDg3OGY4M2Q1NzkxOGJhZjc=
9
+ NThkZjFkYzkyMThkYjg3OGY5YThiYzBjNmU4YTRkYjY0M2MwYzg0NmEwYjdj
10
+ MTEzMDY0NTY1YmYyNmY3Nzk2YmUwNzcyNDAxMWUyMjUzZDZlMDQ0ZmFlNDVm
11
+ MDI0Zjc1ZTAxMWUzZTE5NWI0Y2YwNjc2MDBlYjljNjExZDllZTk=
12
12
  data.tar.gz: !binary |-
13
- NzNhYjc1YmQ5MTg5YWU1ZDNlN2U0MDlkMDYxNDgxNDYxOTA2YWM5MzI2Njgz
14
- MmRjOTkyNWM1NWMzZmE5ZDA1ZTBiNGJhMzRhNWZkMGU5MWEwMDBjNjcxNzUx
15
- NDU2ZGMwNGEyNjBkYjFkM2Q3MzMwMzAzMzcyYjMyZTEwZjcyNjA=
13
+ Yzk0OTM5NDY2NzViYjJjZjlhNDk1NGRjNDE2OGU5MzM5ZjMzMTM0NDY1ZDFj
14
+ M2FmNmQ5ZmI2MWZhODM2ZGYwMTFkOGQzNTdjNzNiYjU3YjY4NDlmYjBiMmUx
15
+ YWZkZDI4ZjYzZmRiNTk0M2M5NTA1N2U4NGQ4NjBhODcxZTQ0NTE=
data/.travis.yml CHANGED
@@ -4,6 +4,7 @@ rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
6
  - 2.1.5
7
+ - 2.2.0
7
8
  - ruby-head
8
9
  - rbx-2
9
10
 
data/Changes.rdoc CHANGED
@@ -1,5 +1,19 @@
1
1
  = Changes log for the ZIP Container Ruby Gem
2
2
 
3
+ == Version 3.0.0
4
+
5
+ * Refactor the malformed container error constructor.
6
+ * Verifying entries only raises errors at the last moment.
7
+ * Redesign the verification system.
8
+ * Update badges to use SVG versions.
9
+ * Fix the documentation for updated verify methods.
10
+ * Fix Container#verify so that it returns consistent types.
11
+ * Rename ContainerError -> Error.
12
+ * Reword the exceptions so they don't specify "file".
13
+ * Add ruby 2.2.0 to the Travis test matrix.
14
+ * Add a compatibility note about ContainerError.
15
+ * Improve the Usage information in the ReadMe.
16
+
3
17
  == Version 2.2.0
4
18
 
5
19
  * Fix pathname bug in ZipContainer::Dir.
data/Licence.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013, 2014 The University of Manchester, UK.
1
+ Copyright (c) 2013-2015 The University of Manchester, UK.
2
2
 
3
3
  All rights reserved.
4
4
 
data/ReadMe.rdoc CHANGED
@@ -5,12 +5,12 @@ Contact:: mailto:support@mygrid.org.uk
5
5
  Homepage:: http://mygrid.github.io/ruby-zip-container
6
6
  Source code:: https://github.com/myGrid/ruby-zip-container
7
7
  Licence:: BSD (See Licence file or http://www.opensource.org/licenses/bsd-license.php)
8
- Copyright:: (c) 2013, 2014 The University of Manchester, UK
8
+ Copyright:: (c) 2013-2015 The University of Manchester, UK
9
9
 
10
- {<img src="https://badge.fury.io/rb/zip-container.png" alt="Gem Version" />}[http://badge.fury.io/rb/zip-container]
11
- {<img src="https://codeclimate.com/github/myGrid/ruby-zip-container.png" />}[https://codeclimate.com/github/myGrid/ruby-zip-container]
10
+ {<img src="https://badge.fury.io/rb/zip-container.svg" alt="Gem Version" />}[http://badge.fury.io/rb/zip-container]
11
+ {<img src="https://codeclimate.com/github/myGrid/ruby-zip-container.svg" />}[https://codeclimate.com/github/myGrid/ruby-zip-container]
12
12
  {<img src="https://travis-ci.org/myGrid/ruby-zip-container.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/myGrid/ruby-zip-container]
13
- {<img src="https://coveralls.io/repos/myGrid/ruby-zip-container/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/myGrid/ruby-zip-container?branch=master]
13
+ {<img src="https://coveralls.io/repos/myGrid/ruby-zip-container/badge.svg?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/myGrid/ruby-zip-container?branch=master]
14
14
 
15
15
  == Synopsis
16
16
 
@@ -36,6 +36,11 @@ underlying rubyzip API (Zip::File) and allows this library to work with
36
36
  ZipContainer::Container should not be used directly from version 2.0.0
37
37
  onwards.
38
38
 
39
+ === ContainerError
40
+
41
+ This class has been renamed in version 3.0.0. It is now simply called Error so
42
+ that it's fully qualified name is the more sensible ZipContainer::Error.
43
+
39
44
  === Rubyzip
40
45
 
41
46
  Version 1.0.0 and up of this gem uses version 1.0.0 and up of the
@@ -46,10 +51,17 @@ in the rubyzip readme for a workaround.
46
51
 
47
52
  == Usage
48
53
 
49
- This library largely mimics the rubyzip Zip::File API so much of what you can
50
- do with that is supported for ZIP Containers. There is also
51
- {API documentation}[http://mygrid.github.io/ruby-zip-container/] with much more
52
- detail and any differences explained.
54
+ This library has two entry points.
55
+
56
+ The main ZipContainer::File class largely mimics the rubyzip
57
+ {Zip::File}[http://www.rubydoc.info/gems/rubyzip/1.1.6/Zip/File] and
58
+ {Zip::FileSystem}[http://www.rubydoc.info/gems/rubyzip/1.1.6/Zip/FileSystem]
59
+ APIs so much of what you can do with them are supported for ZIP Containers.
60
+ There is also {API documentation}[http://mygrid.github.io/ruby-zip-container/]
61
+ with much more detail and any differences explained.
62
+
63
+ The ZipContainer::Dir class mimics, where possible, the core ruby
64
+ {Dir API}[http://ruby-doc.org/core-1.9.3/Dir.html].
53
65
 
54
66
  There are some examples of how to use the library provided in the examples
55
67
  directory. See the contents of the tests directory for even more.
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2014 The University of Manchester, UK.
1
+ # Copyright (c) 2014, 2015 The University of Manchester, UK.
2
2
  #
3
3
  # All rights reserved.
4
4
  #
@@ -52,8 +52,8 @@ module ZipContainer
52
52
  def initialize(location)
53
53
  @container = open_container(location)
54
54
 
55
- check_mimetype!
56
- @mimetype = read_mimetype
55
+ @mimetype_error = verify_mimetype
56
+ @mimetype = read_mimetype if @mimetype_error.nil?
57
57
 
58
58
  # Reserved entry names. Just the mimetype file by default.
59
59
  register_reserved_name(MIMETYPE_FILE)
@@ -84,19 +84,26 @@ module ZipContainer
84
84
  end
85
85
 
86
86
  # :call-seq:
87
- # verify(filename) -> boolean
87
+ # verify(filename) -> Array
88
88
  #
89
89
  # Verify that the specified ZipContainer conforms to the specification.
90
- # This method returns +false+ if there are any problems at all with the
91
- # container (including if it cannot be found).
90
+ # This method returns a list of problems with the container.
91
+ #
92
+ # Exceptions are still raised for fundamental file system errors.
92
93
  def self.verify(filename)
93
- begin
94
- new(filename).verify!
95
- rescue
96
- return false
97
- end
94
+ new(filename).verify
95
+ end
98
96
 
99
- true
97
+ # :call-seq:
98
+ # verify?(filename) -> boolean
99
+ #
100
+ # Verify that the specified ZipContainer conforms to the specification.
101
+ # This method returns +false+ if there are any problems at all with the
102
+ # container.
103
+ #
104
+ # Exceptions are still raised for fundamental file system errors.
105
+ def self.verify?(filename)
106
+ new(filename).verify?
100
107
  end
101
108
 
102
109
  # :call-seq:
@@ -111,19 +118,40 @@ module ZipContainer
111
118
  end
112
119
 
113
120
  # :call-seq:
114
- # verify!
121
+ # verify -> Array
115
122
  #
116
123
  # Verify the contents of this ZipContainer file. All managed files and
117
124
  # directories are checked to make sure that they exist, if required.
118
- def verify!
119
- verify_managed_entries!
125
+ def verify
126
+ @mimetype_error.nil? ? verify_managed_entries : [@mimetype_error]
120
127
  end
121
128
 
122
- private
129
+ # :call-seq:
130
+ # verify? -> true or false
131
+ #
132
+ # Verify the contents of this ZipContainer file. All managed files and
133
+ # directories are checked to make sure that they exist, if required.
134
+ #
135
+ # This method returns +false+ if there are any problems at all with the
136
+ # container.
137
+ def verify?
138
+ verify.empty? ? true : false
139
+ end
140
+
141
+ # :call-seq:
142
+ # verify!
143
+ #
144
+ # Verify the contents of this ZipContainer file. All managed files and
145
+ # directories are checked to make sure that they exist, if required.
146
+ #
147
+ # This method raises a MalformedContainerError if there are any problems
148
+ # with the container.
149
+ def verify!
150
+ unless @mimetype_error.nil?
151
+ raise MalformedContainerError.new(@mimetype_error)
152
+ end
123
153
 
124
- def check_mimetype!
125
- message = verify_mimetype
126
- raise MalformedContainerError.new(message) unless message.nil?
154
+ verify_managed_entries!
127
155
  end
128
156
 
129
157
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2013 The University of Manchester, UK.
1
+ # Copyright (c) 2013-2015 The University of Manchester, UK.
2
2
  #
3
3
  # All rights reserved.
4
4
  #
@@ -66,15 +66,19 @@ module ZipContainer
66
66
  end
67
67
 
68
68
  # :call-seq:
69
- # verify!
69
+ # verify -> Array
70
70
  #
71
71
  # Verify this ManagedDirectory for correctness. ManagedFiles registered
72
72
  # within it are verified recursively.
73
73
  #
74
- # A MalformedContainerError is raised if it does not pass verification.
75
- def verify!
76
- super
77
- @files.values.each { |f| f.verify! }
74
+ # If it does not pass verification a list of reasons why it fails is
75
+ # returned. The empty list is returned if verification passes.
76
+ def verify
77
+ messages = super
78
+
79
+ @files.values.each { |f| messages + f.verify }
80
+
81
+ messages
78
82
  end
79
83
 
80
84
  end
@@ -103,38 +103,43 @@ module ZipContainer
103
103
  # :startdoc:
104
104
 
105
105
  # :call-seq:
106
- # verify -> true or false
106
+ # verify -> Array
107
107
  #
108
- # Verify this ManagedEntry by checking that it exists if it is required
109
- # according to its Container specification and validating its contents if
110
- # necessary.
108
+ # Verify this ManagedEntry returning a list of reasons why it fails if it
109
+ # does so. The empty list is returned if verification passes.
110
+ #
111
+ # Subclasses should override this method if they require more complex
112
+ # verification to be done.
111
113
  def verify
112
- begin
113
- verify!
114
- rescue
115
- return false
114
+ unless !@required || exists?
115
+ ["Entry '#{full_name}' is required but missing."]
116
+ else
117
+ []
116
118
  end
117
-
118
- true
119
119
  end
120
120
 
121
- protected
121
+ # :call-seq:
122
+ # verify? -> true or false
123
+ #
124
+ # Verify this ManagedEntry by checking that it exists if it is required
125
+ # according to its Container specification and validating its contents if
126
+ # necessary.
127
+ def verify?
128
+ verify.empty?
129
+ end
122
130
 
123
131
  # :call-seq:
124
132
  # verify!
125
133
  #
126
134
  # Verify this ManagedEntry raising a MalformedContainerError if it
127
135
  # fails.
128
- #
129
- # Subclasses should override this method if they require more complex
130
- # verification to be done.
131
136
  def verify!
132
- unless !@required || exists?
133
- raise MalformedContainerError.new("Entry '#{full_name}' is required "\
134
- "but missing.")
135
- end
137
+ messages = verify
138
+ raise MalformedContainerError.new(messages) unless messages.empty?
136
139
  end
137
140
 
141
+ protected
142
+
138
143
  # :call-seq:
139
144
  # container -> Container
140
145
  #
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2013 The University of Manchester, UK.
1
+ # Copyright (c) 2013-2015 The University of Manchester, UK.
2
2
  #
3
3
  # All rights reserved.
4
4
  #
@@ -73,18 +73,21 @@ module ZipContainer
73
73
  end
74
74
 
75
75
  # :call-seq:
76
- # verify!
76
+ # verify -> Array
77
77
  #
78
78
  # Verify this ManagedFile for correctness. The contents are validated if
79
79
  # required.
80
80
  #
81
- # A MalformedContainerError is raised if it does not pass verification.
82
- def verify!
83
- super
81
+ # If it does not pass verification a list of reasons why it fails is
82
+ # returned. The empty list is returned if verification passes.
83
+ def verify
84
+ messages = super
85
+
84
86
  unless (exists? ? validate : true)
85
- raise MalformedContainerError.new("The contents of file "\
86
- "'#{full_name}' do not pass validation.")
87
+ messages << "The contents of file '#{full_name}' do not pass validation."
87
88
  end
89
+
90
+ messages
88
91
  end
89
92
 
90
93
  protected
@@ -146,20 +146,32 @@ module ZipContainer
146
146
  end
147
147
 
148
148
  # :call-seq:
149
- # verify_managed_entries!
149
+ # verify_managed_entries -> Array
150
150
  #
151
151
  # All managed files and directories are checked to make sure that they
152
- # exist, if required.
153
- def verify_managed_entries!
152
+ # exist and validate, if required.
153
+ def verify_managed_entries
154
+ messages = []
155
+
154
156
  @directories.each_value do |dir|
155
- dir.verify!
157
+ messages += dir.verify
156
158
  end
157
159
 
158
160
  @files.each_value do |file|
159
- file.verify!
161
+ messages += file.verify
160
162
  end
161
163
 
162
- true
164
+ messages
165
+ end
166
+
167
+ # :call-seq:
168
+ # verify_managed_entries!
169
+ #
170
+ # All managed files and directories are checked to make sure that they
171
+ # exist and validate, if required.
172
+ def verify_managed_entries!
173
+ messages = verify_managed_entries
174
+ raise MalformedContainerError.new(messages) unless messages.empty?
163
175
  end
164
176
 
165
177
  protected
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2013, 2014 The University of Manchester, UK.
1
+ # Copyright (c) 2013-2015 The University of Manchester, UK.
2
2
  #
3
3
  # All rights reserved.
4
4
  #
@@ -34,27 +34,32 @@
34
34
  module ZipContainer
35
35
 
36
36
  # The base of all exceptions raised by this library.
37
- module ContainerError
37
+ module Error
38
38
  end
39
39
 
40
40
  # Shadow Zip::Error so the rubyzip API doesn't leak out.
41
41
  ZipError = ::Zip::Error
42
- ZipError.send(:include, ContainerError)
42
+ ZipError.send(:include, Error)
43
43
 
44
44
  # This exception is raised when a bad Container is detected.
45
45
  class MalformedContainerError < RuntimeError
46
- include ContainerError
46
+ include Error
47
47
 
48
48
  # :call-seq:
49
- # new(reason = "")
49
+ # new
50
+ # new(reason)
51
+ # new(reason_list)
50
52
  #
51
- # Create a new MalformedContainerError with an optional reason for why
52
- # the Container file is malformed.
53
+ # Create a new MalformedContainerError with an optional reason or list of
54
+ # reasons for why the Container is malformed.
53
55
  def initialize(reason = nil)
54
- if reason.nil?
55
- super("Malformed Container File.")
56
+ if reason.nil? || reason.empty?
57
+ super("Malformed Container.")
58
+ elsif reason.is_a?(Array)
59
+ reasons = reason.map { |r| " * #{r}\n" }
60
+ super("Malformed Container:\n#{reasons}")
56
61
  else
57
- super("Malformed Container File: #{reason}")
62
+ super("Malformed Container: #{reason}")
58
63
  end
59
64
  end
60
65
  end
@@ -62,14 +67,14 @@ module ZipContainer
62
67
  # This exception is raised when a clash occurs with a reserved or managed
63
68
  # name.
64
69
  class ReservedNameClashError < RuntimeError
65
- include ContainerError
70
+ include Error
66
71
 
67
72
  # :call-seq:
68
73
  # new(name)
69
74
  #
70
75
  # Create a new ReservedNameClashError with the name of the clash supplied.
71
76
  def initialize(name)
72
- super("'#{name}' is reserved for internal use in this ZipContainer file.")
77
+ super("'#{name}' is reserved for internal use in this ZipContainer.")
73
78
  end
74
79
  end
75
80
 
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2014 The University of Manchester, UK.
1
+ # Copyright (c) 2014, 2015 The University of Manchester, UK.
2
2
  #
3
3
  # All rights reserved.
4
4
  #
@@ -36,21 +36,70 @@ require 'zip-container'
36
36
  class TestExceptions < Test::Unit::TestCase
37
37
 
38
38
  def test_rescue_container_errors
39
- assert_raise(ZipContainer::ContainerError) do
39
+ assert_raise(ZipContainer::Error) do
40
40
  raise ZipContainer::ZipError.new
41
41
  end
42
42
 
43
- assert_raise(ZipContainer::ContainerError) do
43
+ assert_raise(ZipContainer::Error) do
44
44
  raise ZipContainer::MalformedContainerError.new
45
45
  end
46
46
 
47
- assert_raise(ZipContainer::ContainerError) do
47
+ assert_raise(ZipContainer::Error) do
48
48
  raise ZipContainer::ReservedNameClashError.new("test")
49
49
  end
50
50
 
51
- assert_raise(ZipContainer::ContainerError) do
51
+ assert_raise(ZipContainer::Error) do
52
52
  raise Zip::ZipError.new
53
53
  end
54
54
  end
55
55
 
56
+ def test_malformed_container_error_nil
57
+ mce = nil
58
+
59
+ assert_nothing_raised do
60
+ mce = ZipContainer::MalformedContainerError.new(nil)
61
+ end
62
+
63
+ refute mce.message.empty?
64
+ refute mce.message.include?(':')
65
+ end
66
+
67
+ def test_malformed_container_error_empty_string
68
+ mce = nil
69
+
70
+ assert_nothing_raised do
71
+ mce = ZipContainer::MalformedContainerError.new("")
72
+ end
73
+
74
+ refute mce.message.empty?
75
+ refute mce.message.include?(':')
76
+ end
77
+
78
+ def test_malformed_container_error_string
79
+ mce = nil
80
+ message = "test"
81
+
82
+ assert_nothing_raised do
83
+ mce = ZipContainer::MalformedContainerError.new(message)
84
+ end
85
+
86
+ refute mce.message.empty?
87
+ assert mce.message.include?(':')
88
+ assert mce.message.include?(message)
89
+ end
90
+
91
+ def test_malformed_container_error_list
92
+ mce = nil
93
+ message = %w(test1 test2)
94
+
95
+ assert_nothing_raised do
96
+ mce = ZipContainer::MalformedContainerError.new(message)
97
+ end
98
+
99
+ refute mce.message.empty?
100
+ assert mce.message.include?(':')
101
+ assert mce.message.include?(' * test1')
102
+ assert mce.message.include?(' * test2')
103
+ end
104
+
56
105
  end
@@ -112,7 +112,7 @@ class TestManagedEntries < Test::Unit::TestCase
112
112
  # Check that the example ZipContainer file does not validate as a
113
113
  # ManagedZipContainer.
114
114
  def test_fail_verification
115
- refute(ManagedZipContainer.verify($example))
115
+ refute(ManagedZipContainer.verify?($example))
116
116
 
117
117
  assert_raises(ZipContainer::MalformedContainerError) do
118
118
  ManagedZipContainer.verify!($example)
@@ -122,7 +122,7 @@ class TestManagedEntries < Test::Unit::TestCase
122
122
  # Check that the example ZipContainer file does validate as an
123
123
  # ExampleZipContainer.
124
124
  def test_pass_verification
125
- assert(ExampleZipContainer.verify($example))
125
+ assert(ExampleZipContainer.verify?($example))
126
126
 
127
127
  assert_nothing_raised(ZipContainer::MalformedContainerError) do
128
128
  ExampleZipContainer.verify!($example)
@@ -132,7 +132,7 @@ class TestManagedEntries < Test::Unit::TestCase
132
132
  # Check that the example ZipContainer file does validate as an
133
133
  # ExampleZipContainer2.
134
134
  def test_pass_verification_2
135
- assert(ExampleZipContainer2.verify($example))
135
+ assert(ExampleZipContainer2.verify?($example))
136
136
 
137
137
  assert_nothing_raised(ZipContainer::MalformedContainerError) do
138
138
  ExampleZipContainer2.verify!($example)
@@ -208,7 +208,7 @@ class TestManagedEntries < Test::Unit::TestCase
208
208
  end
209
209
  end
210
210
 
211
- refute(ManagedZipContainer.verify(filename))
211
+ refute(ManagedZipContainer.verify?(filename))
212
212
  assert_raises(ZipContainer::MalformedContainerError) do
213
213
  ManagedZipContainer.verify!(filename)
214
214
  end
@@ -250,7 +250,7 @@ class TestManagedEntries < Test::Unit::TestCase
250
250
  end
251
251
  end
252
252
 
253
- assert(ManagedZipContainer.verify(filename))
253
+ assert(ManagedZipContainer.verify?(filename))
254
254
  assert_nothing_raised(ZipContainer::MalformedContainerError) do
255
255
  ManagedZipContainer.verify!(filename)
256
256
  end
@@ -389,7 +389,7 @@ class TestManagedEntries < Test::Unit::TestCase
389
389
  end
390
390
  end
391
391
 
392
- assert(ExampleZipContainer2.verify(filename))
392
+ assert(ExampleZipContainer2.verify?(filename))
393
393
  assert_nothing_raised(ZipContainer::MalformedContainerError) do
394
394
  ExampleZipContainer2.verify!(filename)
395
395
  end
data/test/tc_read_dir.rb CHANGED
@@ -42,7 +42,8 @@ class TestReadDir < Test::Unit::TestCase
42
42
  ZipContainer::Dir.verify!($dir_null)
43
43
  end
44
44
 
45
- refute(ZipContainer::Dir.verify($dir_null))
45
+ refute(ZipContainer::Dir.verify($dir_null).empty?)
46
+ refute(ZipContainer::Dir.verify?($dir_null))
46
47
  end
47
48
 
48
49
  # Check that the empty container directory does verify.
@@ -51,7 +52,8 @@ class TestReadDir < Test::Unit::TestCase
51
52
  ZipContainer::Dir.verify!($dir_empty)
52
53
  end
53
54
 
54
- assert(ZipContainer::Dir.verify($dir_empty))
55
+ assert(ZipContainer::Dir.verify($dir_empty).empty?)
56
+ assert(ZipContainer::Dir.verify?($dir_empty))
55
57
  end
56
58
 
57
59
  # Check that a mimetype entry that is a directory does not verify.
@@ -60,7 +62,8 @@ class TestReadDir < Test::Unit::TestCase
60
62
  ZipContainer::Dir.verify!($dir_dir_mimetype)
61
63
  end
62
64
 
63
- refute(ZipContainer::Dir.verify($dir_dir_mimetype))
65
+ refute(ZipContainer::Dir.verify($dir_dir_mimetype).empty?)
66
+ refute(ZipContainer::Dir.verify?($dir_dir_mimetype))
64
67
  end
65
68
 
66
69
  # Check that a mimetype which is not readable does not verify. We have to
@@ -79,7 +82,8 @@ class TestReadDir < Test::Unit::TestCase
79
82
  ZipContainer::Dir.verify!(container)
80
83
  end
81
84
 
82
- refute(ZipContainer::Dir.verify(container))
85
+ refute(ZipContainer::Dir.verify(container).empty?)
86
+ refute(ZipContainer::Dir.verify?(container))
83
87
  end
84
88
  end
85
89
 
data/test/tc_read_file.rb CHANGED
@@ -37,11 +37,17 @@ class TestReadFile < Test::Unit::TestCase
37
37
 
38
38
  # Check that the null file does not verify.
39
39
  def test_verify_null_file
40
+ assert_raise(ZipContainer::ZipError) do
41
+ ZipContainer::File.verify($file_null)
42
+ end
43
+
40
44
  assert_raise(ZipContainer::ZipError) do
41
45
  ZipContainer::File.verify!($file_null)
42
46
  end
43
47
 
44
- refute(ZipContainer::File.verify($file_null))
48
+ assert_raise(ZipContainer::ZipError) do
49
+ ZipContainer::File.verify?($file_null)
50
+ end
45
51
  end
46
52
 
47
53
  # Check that the empty container file does verify.
@@ -50,7 +56,8 @@ class TestReadFile < Test::Unit::TestCase
50
56
  ZipContainer::File.verify!($empty)
51
57
  end
52
58
 
53
- assert(ZipContainer::File.verify($empty))
59
+ assert(ZipContainer::File.verify($empty).empty?)
60
+ assert(ZipContainer::File.verify?($empty))
54
61
  end
55
62
 
56
63
  # Check that the empty zip file does not verify.
@@ -59,7 +66,8 @@ class TestReadFile < Test::Unit::TestCase
59
66
  ZipContainer::File.verify!($empty_zip)
60
67
  end
61
68
 
62
- refute(ZipContainer::File.verify($empty_zip))
69
+ refute(ZipContainer::File.verify($empty_zip).empty?)
70
+ refute(ZipContainer::File.verify?($empty_zip))
63
71
  end
64
72
 
65
73
  # Check that a compressed mimetype file is detected.
@@ -68,7 +76,8 @@ class TestReadFile < Test::Unit::TestCase
68
76
  ZipContainer::File.verify!($compressed_mimetype)
69
77
  end
70
78
 
71
- refute(ZipContainer::File.verify($compressed_mimetype))
79
+ refute(ZipContainer::File.verify($compressed_mimetype).empty?)
80
+ refute(ZipContainer::File.verify?($compressed_mimetype))
72
81
  end
73
82
 
74
83
  # Check the raw mimetype bytes
@@ -56,7 +56,7 @@ class TestReservedNames < Test::Unit::TestCase
56
56
 
57
57
  # Check that the reserved names verify correctly.
58
58
  def test_verify_reserved_name
59
- assert(NewZipContainer.verify($example))
59
+ assert(NewZipContainer.verify?($example))
60
60
 
61
61
  assert_nothing_raised(ZipContainer::MalformedContainerError) do
62
62
  NewZipContainer.verify!($example)
data/version.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :major: 2
3
- :minor: 2
2
+ :major: 3
3
+ :minor: 0
4
4
  :patch: 0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zip-container
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Haines
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-17 00:00:00.000000000 Z
11
+ date: 2015-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler