msgpack 1.2.7 → 1.2.8

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: c7d0ed046cdf407e2d23286375ec7b544cc35044f3bd4ee9835eeaa0b4aa172f
4
- data.tar.gz: 76eeff0a8e1caa4f81628caa825104911e497a6caa472e2c6945b52f816d2f7d
3
+ metadata.gz: f31e84bcc8d6fef7755049b694d836b576e33610959fc0ae03fc10fa3ceb223b
4
+ data.tar.gz: 408fecaf30c2e422ece1efea43ca0fd986d77fce5345c1f6a98678ac2b7efcd1
5
5
  SHA512:
6
- metadata.gz: 6b1f71db6217e6285c90f5329af40d89ddf8a305e5ea71ea479cb0b930fd88f886be28a1109aea2c48e4a2dd52930e4a28dcfc299d64f6d574d7a5f451f385af
7
- data.tar.gz: 96f4af2162e098d1c7469359e4c1034f47762f88a02c904c2d04ce32fa80e2a74004d2e343ae142deb955566891844648be420b46dcb02e86f5e94fd4abd72cc
6
+ metadata.gz: e09bc22eef0cc0878d9a057cc0b168ad3b4bd9f7c315460f37dc0dfc05bc76fa47c418adc82a4f3477228652501682748969ccd530bbf4a9c24293cfa508aef2
7
+ data.tar.gz: aa4b29c967d98cfb1216c7ed7669c5459ae245abc225b6bf726badd44edde1156002f8aed958f39ee41e388c2b3a3b4f70e85fc0aaf27e2971d0b87b91da8e33
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: ruby
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