msgpack 1.2.7-x64-mingw32 → 1.2.8-x64-mingw32

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
  SHA256:
3
- metadata.gz: 6c6d806ca2c5dc1b5e50ad4d88dfb222c3f44b219dfa0c234f3edad76ed01ce4
4
- data.tar.gz: e89e09879e75f38d70ff87952e46a7ff094f269bd537ebce412bdf66ae3cfc3f
3
+ metadata.gz: 3b3f98308a02c1e7f1c488d4fb557139edf0e7a658203f8fd66db63b5a69acef
4
+ data.tar.gz: e170646cbe7bbc7cd7373d1003d426daf35cd00f43cb40fcec7e6280debb104f
5
5
  SHA512:
6
- metadata.gz: 5ec99006c7def54b671548593cac1883b60f0adf5da4fdb78f1e228abfb1a9221f1eee22d247abc0248323647fafff9a42f1b142d84b87c3b35d478efc8af2aa
7
- data.tar.gz: 82fa4e5be6d820097a1ef79d734e4365a69ec530d4afdd55246b4d237307a330e955d67e836ac53ff865d962f242fa2d866df801158e9b4b978cf61f605c04a2
6
+ metadata.gz: d91d996a245573f7ba684ebe12af73a9855a1ce5a881c6c7664d8d6e893bbeba1abfd0379a593654ba7635e8a8763ad28d117da162bbcd8a5df29ac7444ffcf0
7
+ data.tar.gz: d6a07e55ce51aa842f492fa0ec52949fa069e0df587daf20b32a3f856cd67a06c1c818d33f3f6a17795d5cba8cec1a6872ea5cd71ef1871c95e79cfde034c981
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ 2019-03-11 version 1.2.8:
2
+
3
+ * Fix a regression that MessagePack#unpack raises error if IO is assigned as the (only) argument
4
+ * Improve compatibility that MessagePack#pack returns nil if IO is assigned as 2nd argument
5
+
1
6
  2019-03-01 version 1.2.7:
2
7
 
3
8
  * Add Packer#write_bin and Packer#write_bin_header methods
@@ -12,7 +12,7 @@ module MessagePack
12
12
  # @param obj [Object] object to be serialized
13
13
  # @param io [IO]
14
14
  # @param options [Hash]
15
- # @return [IO]
15
+ # @return [nil]
16
16
  #
17
17
  # See Packer#initialize for supported options.
18
18
  #
@@ -31,7 +31,7 @@ module MessagePack
31
31
  # @param obj [Object] object to be serialized
32
32
  # @param io [IO]
33
33
  # @param options [Hash]
34
- # @return [IO]
34
+ # @return [nil]
35
35
  #
36
36
  # See Packer#initialize for supported options.
37
37
  #
@@ -179,6 +179,10 @@ public class Buffer extends RubyObject {
179
179
  return skipCommon(ctx, length, true);
180
180
  }
181
181
 
182
+ public boolean hasIo() {
183
+ return io != null;
184
+ }
185
+
182
186
  @JRubyMethod(name = "to_s", alias = {"to_str"})
183
187
  public IRubyObject toS(ThreadContext ctx) {
184
188
  ensureReadMode();
@@ -54,7 +54,7 @@ public class Factory extends RubyObject {
54
54
  return Packer.newPacker(ctx, extensionRegistry(), hasSymbolExtType, args);
55
55
  }
56
56
 
57
- @JRubyMethod(name = "unpacker", optional = 1)
57
+ @JRubyMethod(name = "unpacker", optional = 2)
58
58
  public Unpacker unpacker(ThreadContext ctx, IRubyObject[] args) {
59
59
  return Unpacker.newUnpacker(ctx, extensionRegistry(), args);
60
60
  }
@@ -229,6 +229,9 @@ public class Packer extends RubyObject {
229
229
 
230
230
  @JRubyMethod(name = "full_pack")
231
231
  public IRubyObject fullPack(ThreadContext ctx) {
232
+ if (buffer.hasIo()) {
233
+ return null;
234
+ }
232
235
  return toS(ctx);
233
236
  }
234
237
 
@@ -20,15 +20,16 @@ require "msgpack/core_ext"
20
20
 
21
21
  module MessagePack
22
22
  DefaultFactory = MessagePack::Factory.new
23
+ DEFAULT_EMPTY_PARAMS = {}.freeze
23
24
 
24
25
  def load(src, param = nil)
25
26
  unpacker = nil
26
27
 
27
28
  if src.is_a? String
28
- unpacker = DefaultFactory.unpacker param
29
+ unpacker = DefaultFactory.unpacker param || DEFAULT_EMPTY_PARAMS
29
30
  unpacker.feed src
30
31
  else
31
- unpacker = DefaultFactory.unpacker src, param
32
+ unpacker = DefaultFactory.unpacker src, param || DEFAULT_EMPTY_PARAMS
32
33
  end
33
34
 
34
35
  unpacker.full_unpack
@@ -1,5 +1,5 @@
1
1
  module MessagePack
2
- VERSION = "1.2.7"
2
+ VERSION = "1.2.8"
3
3
 
4
4
  # NOTE for msgpack-ruby maintainer:
5
5
  # Check these things to release new binaryes for new Ruby versions (especially for Windows):
@@ -168,4 +168,47 @@ describe MessagePack do
168
168
  end
169
169
  end
170
170
  end
171
+
172
+ context 'when the source is na IO-like object' do
173
+ require 'tempfile'
174
+ require 'stringio'
175
+
176
+ it 'work with IO destination object as 2nd argument of MessagePack.pack' do
177
+ Tempfile.create("pack-test") do |io|
178
+ return_value = MessagePack.pack(utf8enc('hello world'), io)
179
+ return_value.should be_nil
180
+
181
+ io.rewind
182
+ io.read.force_encoding(Encoding::ASCII_8BIT).should eq("\xABhello world".force_encoding(Encoding::ASCII_8BIT))
183
+ end
184
+ end
185
+
186
+ it 'work with IO-like StringIO destination object as 2nd argument of MessagePack.pack' do
187
+ io = StringIO.new
188
+ return_value = MessagePack.pack(utf8enc('hello world'), io)
189
+ return_value.should be_nil
190
+
191
+ io.rewind
192
+ io.read.force_encoding(Encoding::ASCII_8BIT).should eq("\xABhello world".force_encoding(Encoding::ASCII_8BIT))
193
+ end
194
+
195
+ it 'work with IO source object as source of MessagePack.unpack' do
196
+ Tempfile.create("unpack-test") do |io|
197
+ MessagePack.pack(utf8enc('hello world'), io)
198
+ io.rewind
199
+
200
+ return_value = MessagePack.unpack(io)
201
+ return_value.should eq(utf8enc('hello world'))
202
+ end
203
+ end
204
+
205
+ it 'work with IO-like StringIO object of MessagePack.unpack' do
206
+ io = StringIO.new
207
+ MessagePack.pack(utf8enc('hello world'), io)
208
+ io.rewind
209
+
210
+ return_value = MessagePack.unpack(io)
211
+ return_value.should eq(utf8enc('hello world'))
212
+ end
213
+ end
171
214
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msgpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.8
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Sadayuki Furuhashi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-03-01 00:00:00.000000000 Z
13
+ date: 2019-03-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler