minitar 0.6 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 110bdb26f19a848935a086caa42ea6eb583601bb
4
- data.tar.gz: 99b2ba5ae2238ed1aa3902287a8fd9520576323e
3
+ metadata.gz: 6f701b9b323414ca305fd29f288088f7b6656342
4
+ data.tar.gz: f0875b48ec987190fdd2a8c6e6d5785b87958af7
5
5
  SHA512:
6
- metadata.gz: daadd21c3c02bfd11bb9a6d7294d0e7bac36410d1c391cc4e97a53b89d6c6cdbf5ee763dc777736460177dc88d9332d82370048bfc8470ca8f2edfd5872e73ee
7
- data.tar.gz: 0541e16a13d4516494f4365c0c7e607996c837e192eb5d16754d4f36a21fd8fad847df9f233f59b358be7d164d2794c54fb7312b6e85866450f7147bf9eb9180
6
+ metadata.gz: b51ac6a3c8c9494f6d17392e6e7969836d2fae501e47f6083cbf0b3646dea93eb4838a25986b3723c071c791ac0ac770e8229276a77a5c06021398d82cbc4a0c
7
+ data.tar.gz: 9423c08b9f8426d415b3f77647c53cf744180dbdc328f4f40e15a9632171696810902a341fa654133f3e4c8ca6b84277dd93892426bb553ed309785f47114228
data/History.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.6.1 / 2017-02-07
2
+
3
+ * Fixed issue [#24][] where streams were being improperly closed immediately
4
+ on open unless there was a block provided.
5
+
6
+ * Hopefully fixes issue [#23][] by releasing archive-tar-minitar after
7
+ minitar-cli is available.
8
+
1
9
  ## 0.6 / 2017-02-07
2
10
 
3
11
  * Breaking Changes:
@@ -105,3 +113,5 @@
105
113
  [#13]: https://github.com/halostatue/minitar/issues/13
106
114
  [#14]: https://github.com/halostatue/minitar/issues/14
107
115
  [#16]: https://github.com/halostatue/minitar/issues/16
116
+ [#23]: https://github.com/halostatue/minitar/issues/23
117
+ [#24]: https://github.com/halostatue/minitar/issues/24
@@ -5,9 +5,9 @@ code :: https://github.com/halostatue/minitar/
5
5
  bugs :: https://github.com/halostatue/minitar/issues
6
6
  rdoc :: http://rdoc.info/gems/minitar/
7
7
  cli :: https://github.com/halostatue/minitar-cli
8
- continuous integration :: {<img src="https://travis-ci.org/halostatue/minitar.svg" />}[https://travis-ci.org/halostatue/minitar]
9
- {<img src="https://ci.appveyor.com/api/projects/status/bj4gqn3gp3gu45sa?svg=true" />}[https://ci.appveyor.com/project/halostatue/minitar]
10
- test coverage :: {<img src="https://coveralls.io/repos/halostatue/minitar/badge.svg" alt="Coverage Status" />}[https://coveralls.io/r/halostatue/minitar]
8
+ travis :: {<img src="https://travis-ci.org/halostatue/minitar.svg" />}[https://travis-ci.org/halostatue/minitar]
9
+ appveyor :: {<img src="https://ci.appveyor.com/api/projects/status/bj4gqn3gp3gu45sa?svg=true" />}[https://ci.appveyor.com/project/halostatue/minitar]
10
+ coveralls :: {<img src="https://coveralls.io/repos/halostatue/minitar/badge.svg" alt="Coverage Status" />}[https://coveralls.io/r/halostatue/minitar]
11
11
 
12
12
  == Description
13
13
 
@@ -73,7 +73,7 @@ end
73
73
  # tar.close
74
74
  # end
75
75
  module Archive::Tar::Minitar
76
- VERSION = '0.6'.freeze # :nodoc:
76
+ VERSION = '0.6.1'.freeze # :nodoc:
77
77
 
78
78
  # The base class for any minitar error.
79
79
  Error = Class.new(::StandardError)
@@ -20,9 +20,14 @@ module Archive::Tar::Minitar
20
20
  def self.open(input)
21
21
  stream = new(input)
22
22
  return stream unless block_given?
23
- yield stream
24
- ensure
25
- stream.close
23
+
24
+ # This exception context must remain, otherwise the stream closes on open
25
+ # even if a block is not given.
26
+ begin
27
+ yield stream
28
+ ensure
29
+ stream.close
30
+ end
26
31
  end
27
32
 
28
33
  # Iterates over each entry in the provided input. This wraps the common
@@ -188,6 +193,11 @@ module Archive::Tar::Minitar
188
193
  end
189
194
  end
190
195
 
196
+ # Returns false if the wrapped data stream is open.
197
+ def closed?
198
+ @io.closed?
199
+ end
200
+
191
201
  # Returns the Reader object for direct access.
192
202
  attr_reader :tar
193
203
 
@@ -20,9 +20,14 @@ module Archive::Tar::Minitar
20
20
  def self.open(output)
21
21
  stream = new(output)
22
22
  return stream unless block_given?
23
- yield stream
24
- ensure
25
- stream.close
23
+
24
+ # This exception context must remain, otherwise the stream closes on open
25
+ # even if a block is not given.
26
+ begin
27
+ yield stream
28
+ ensure
29
+ stream.close
30
+ end
26
31
  end
27
32
 
28
33
  # Output.tar is a wrapper for Output.open that yields the owned tar object
@@ -60,6 +65,11 @@ module Archive::Tar::Minitar
60
65
  # Returns the Writer object for direct access.
61
66
  attr_reader :tar
62
67
 
68
+ # Returns false if the wrapped data stream is open.
69
+ def closed?
70
+ @io.closed?
71
+ end
72
+
63
73
  # Closes the Writer object and the wrapped data stream.
64
74
  def close
65
75
  @tar.close
@@ -13,6 +13,7 @@ module Archive::Tar::Minitar
13
13
  def read(*); raise ClosedStream; end
14
14
  def getc; raise ClosedStream; end
15
15
  def rewind; raise ClosedStream; end
16
+ def closed?; true; end
16
17
  # rubocop:enable Style/EmptyLineBetweenDefs
17
18
  # rubocop:enable Style/SingleLineMethods Style/EmptyLineBetweenDefs
18
19
  end
@@ -115,6 +116,11 @@ module Archive::Tar::Minitar
115
116
  end
116
117
  end
117
118
 
119
+ # Returns false if the entry stream is valid.
120
+ def closed?
121
+ false
122
+ end
123
+
118
124
  # Closes the entry.
119
125
  def close
120
126
  invalidate
@@ -135,9 +141,14 @@ module Archive::Tar::Minitar
135
141
  def self.open(io)
136
142
  reader = new(io)
137
143
  return reader unless block_given?
138
- yield reader
139
- ensure
140
- reader.close
144
+
145
+ # This exception context must remain, otherwise the stream closes on open
146
+ # even if a block is not given.
147
+ begin
148
+ yield reader
149
+ ensure
150
+ reader.close
151
+ end
141
152
  end
142
153
 
143
154
  # Iterates over each entry in the provided input. This wraps the common
@@ -231,6 +242,11 @@ module Archive::Tar::Minitar
231
242
  end
232
243
  alias each each_entry
233
244
 
245
+ # Returns false if the reader is open (it never closes).
246
+ def closed?
247
+ false
248
+ end
249
+
234
250
  def close
235
251
  end
236
252
  end
@@ -84,9 +84,14 @@ module Archive::Tar::Minitar
84
84
  def self.open(io) # :yields Writer:
85
85
  writer = new(io)
86
86
  return writer unless block_given?
87
- yield writer
88
- ensure
89
- writer.close
87
+
88
+ # This exception context must remain, otherwise the stream closes on open
89
+ # even if a block is not given.
90
+ begin
91
+ yield writer
92
+ ensure
93
+ writer.close
94
+ end
90
95
  end
91
96
 
92
97
  # Creates and returns a new Writer object.
@@ -255,6 +260,11 @@ module Archive::Tar::Minitar
255
260
  @io.flush if @io.respond_to?(:flush)
256
261
  end
257
262
 
263
+ # Returns false if the writer is open.
264
+ def closed?
265
+ @closed
266
+ end
267
+
258
268
  # Closes the Writer. This does not close the underlying wrapped output
259
269
  # stream.
260
270
  def close
@@ -38,6 +38,15 @@ UTAKRsEoGAWjYBSMglEwCkbBKBgFo2AUjIJRMApGwSgYBaNgFIwCUgAAGnyo6wAoAAA=
38
38
  FileUtils.rm_rf('data__')
39
39
  end
40
40
 
41
+ def test_open_no_block
42
+ reader = Zlib::GzipReader.new(StringIO.new(TEST_TGZ))
43
+ input = Minitar::Input.open(reader)
44
+ refute input.closed?
45
+ ensure
46
+ input.close
47
+ assert input.closed?
48
+ end
49
+
41
50
  def test_each_works
42
51
  reader = Zlib::GzipReader.new(StringIO.new(TEST_TGZ))
43
52
  Minitar::Input.open(reader) do |stream|
@@ -19,6 +19,14 @@ class TestTarOutput < Minitest::Test
19
19
  FileUtils.rm_rf('data__')
20
20
  end
21
21
 
22
+ def test_open_no_block
23
+ output = Minitar::Output.open(@tarfile)
24
+ refute output.closed?
25
+ ensure
26
+ output.close
27
+ assert output.closed?
28
+ end
29
+
22
30
  def test_file_looks_good
23
31
  Minitar::Output.open(@tarfile) do |os|
24
32
  Dir.chdir('data__') do
@@ -4,6 +4,19 @@ require 'minitar'
4
4
  require 'minitest_helper'
5
5
 
6
6
  class TestTarReader < Minitest::Test
7
+ def test_open_no_block
8
+ str = tar_file_header('lib/foo', '', 0o10644, 10) + "\0" * 512
9
+ str += tar_file_header('bar', 'baz', 0o644, 0)
10
+ str += tar_dir_header('foo', 'bar', 0o12345)
11
+ str += "\0" * 1024
12
+
13
+ reader = Minitar::Reader.open(StringIO.new(str))
14
+ refute reader.closed?
15
+ ensure
16
+ reader.close
17
+ refute reader.closed? # Reader doesn't actually close anything
18
+ end
19
+
7
20
  def test_multiple_entries
8
21
  str = tar_file_header('lib/foo', '', 0o10644, 10) + "\0" * 512
9
22
  str += tar_file_header('bar', 'baz', 0o644, 0)
@@ -31,6 +31,15 @@ class TestTarWriter < Minitest::Test
31
31
  @os.close
32
32
  end
33
33
 
34
+ def test_open_no_block
35
+ writer = Minitar::Writer.open(@dummyos)
36
+ refute writer.closed?
37
+ ensure
38
+ writer.close
39
+ assert writer.closed?
40
+ end
41
+
42
+
34
43
  def test_add_file_simple
35
44
  @dummyos.reset
36
45
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitar
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Ziegler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-07 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: minitest
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.9'
19
+ version: '5.10'
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: '5.9'
26
+ version: '5.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hoe-doofus
29
29
  requirement: !ruby/object:Gem::Requirement