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

Sign up to get free protection for your applications and to get access to all the features.
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