msgpack 1.3.3-java → 1.4.0-java

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: fd83394ab16cee94026b1022400f09a82074ddd7f9380f647f6f89d8c1613197
4
- data.tar.gz: ddf9c1a2de71f9581edb08433f61022ec5ada2e934e22587f808c419cac759aa
3
+ metadata.gz: df3b24e93761eeee9892ce39650e1d78ef3b10690c17175ff1fdf89fb2430e79
4
+ data.tar.gz: 0aca3d762180d301e52bd89f303ff593487f3ceb468bf792e378ee4b5a56af11
5
5
  SHA512:
6
- metadata.gz: '09552bad837d481738eeadeb80a047310a4568be65e625ff75157a995432ee2b6b40b0d4462eb3392293c1c5855d982169ed218a56c2380a9c9f3290a7233d2b'
7
- data.tar.gz: 1608b50ebc75284b5f698b6ae2c8afc2cb05e33e4a395d895afbe9bc747e57084d46e11f554bbcd61475972e7420e72c68f040aa369a53dfcfdc53f26652f1c2
6
+ metadata.gz: 18a3f11686786575886117fdc5f0886c8c3bdd796a79f92bac63437771c885235f80e05f87abf65ad427ca9343931adb79f2a8ba3ba00c73ae3d078f86c12883
7
+ data.tar.gz: 8462fa5a43f395a56bb01223c0513b06a9761d2608436b1675b036e0d94a393f896f0779e68e416d8d0c2e779cce50debab7dcc03e6ed816b7739d1a667ddf3f
@@ -5,11 +5,7 @@ if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby" # This is same with `/java/ =
5
5
  require "msgpack/msgpack.jar"
6
6
  org.msgpack.jruby.MessagePackLibrary.new.load(JRuby.runtime, false)
7
7
  else
8
- begin
9
- require "msgpack/#{RUBY_VERSION[/\d+.\d+/]}/msgpack"
10
- rescue LoadError
11
- require "msgpack/msgpack"
12
- end
8
+ require "msgpack/msgpack"
13
9
  end
14
10
 
15
11
  require "msgpack/packer"
Binary file
@@ -1,10 +1,6 @@
1
1
  module MessagePack
2
- VERSION = "1.3.3"
3
-
4
- # NOTE for msgpack-ruby maintainer:
5
- # Check these things to release new binaryes for new Ruby versions (especially for Windows):
6
- # * versions/supports of rake-compiler & rake-compiler-dock
7
- # https://github.com/rake-compiler/rake-compiler-dock/blob/master/History.md
8
- # * update RUBY_CC_VERSION in Rakefile
9
- # * check Ruby dependency of released mswin gem details
2
+ VERSION = "1.4.0"
3
+ # Note for maintainers:
4
+ # Don't miss building/releasing the JRuby version (rake buld:java)
5
+ # See "How to build -java rubygems" in README for more details.
10
6
  end
@@ -19,6 +19,23 @@ def java?
19
19
  /java/ =~ RUBY_PLATFORM
20
20
  end
21
21
 
22
+ # checking if Hash#[]= (rb_hash_aset) dedupes string keys
23
+ def automatic_string_keys_deduplication?
24
+ h = {}
25
+ x = {}
26
+ r = rand.to_s
27
+ h[%W(#{r}).join('')] = :foo
28
+ x[%W(#{r}).join('')] = :foo
29
+
30
+ x.keys[0].equal?(h.keys[0])
31
+ end
32
+
33
+ def string_deduplication?
34
+ r1 = rand.to_s
35
+ r2 = r1.dup
36
+ (-r1).equal?(-r2)
37
+ end
38
+
22
39
  if java?
23
40
  RSpec.configure do |c|
24
41
  c.treat_symbols_as_metadata_keys_with_true_values = true
@@ -18,13 +18,26 @@ describe MessagePack::Unpacker do
18
18
  it 'gets options to specify how to unpack values' do
19
19
  u1 = MessagePack::Unpacker.new
20
20
  u1.symbolize_keys?.should == false
21
+ u1.freeze?.should == false
21
22
  u1.allow_unknown_ext?.should == false
22
23
 
23
- u2 = MessagePack::Unpacker.new(symbolize_keys: true, allow_unknown_ext: true)
24
+ u2 = MessagePack::Unpacker.new(symbolize_keys: true, freeze: true, allow_unknown_ext: true)
24
25
  u2.symbolize_keys?.should == true
26
+ u2.freeze?.should == true
25
27
  u2.allow_unknown_ext?.should == true
26
28
  end
27
29
 
30
+ if automatic_string_keys_deduplication?
31
+ it 'ensure string hash keys are deduplicated' do
32
+ sample_data = [{"foo" => 1}, {"foo" => 2}]
33
+ sample_packed = MessagePack.pack(sample_data).force_encoding('ASCII-8BIT')
34
+ unpacker.feed(sample_packed)
35
+ hashes = nil
36
+ unpacker.each { |obj| hashes = obj }
37
+ expect(hashes[0].keys.first).to equal(hashes[1].keys.first)
38
+ end
39
+ end
40
+
28
41
  it 'gets IO or object which has #read to read data from it' do
29
42
  sample_data = {"message" => "morning!", "num" => 1}
30
43
  sample_packed = MessagePack.pack(sample_data).force_encoding('ASCII-8BIT')
@@ -651,6 +664,88 @@ describe MessagePack::Unpacker do
651
664
  end
652
665
  end
653
666
 
667
+ context 'freeze' do
668
+ let :struct do
669
+ {'hello' => 'world', 'nested' => ['object', {'structure' => true}]}
670
+ end
671
+
672
+ let :buffer do
673
+ MessagePack.pack(struct)
674
+ end
675
+
676
+ let :unpacker do
677
+ described_class.new(:freeze => true)
678
+ end
679
+
680
+ it 'can freeze objects when using .unpack' do
681
+ parsed_struct = MessagePack.unpack(buffer, freeze: true)
682
+ parsed_struct.should == struct
683
+
684
+ parsed_struct.should be_frozen
685
+ parsed_struct['hello'].should be_frozen
686
+ parsed_struct['nested'].should be_frozen
687
+ parsed_struct['nested'][0].should be_frozen
688
+ parsed_struct['nested'][1].should be_frozen
689
+
690
+ if string_deduplication?
691
+ parsed_struct.keys[0].should be_equal('hello'.freeze)
692
+ parsed_struct.keys[1].should be_equal('nested'.freeze)
693
+ parsed_struct.values[0].should be_equal('world'.freeze)
694
+ parsed_struct.values[1][0].should be_equal('object'.freeze)
695
+ parsed_struct.values[1][1].keys[0].should be_equal('structure'.freeze)
696
+ end
697
+ end
698
+
699
+ it 'can freeze objects when using #each' do
700
+ objs = []
701
+ unpacker.feed(buffer)
702
+ unpacker.each do |obj|
703
+ objs << obj
704
+ end
705
+
706
+ parsed_struct = objs.first
707
+ parsed_struct.should == struct
708
+
709
+ parsed_struct.should be_frozen
710
+ parsed_struct['hello'].should be_frozen
711
+ parsed_struct['nested'].should be_frozen
712
+ parsed_struct['nested'][0].should be_frozen
713
+ parsed_struct['nested'][1].should be_frozen
714
+
715
+ if string_deduplication?
716
+ parsed_struct.keys[0].should be_equal('hello'.freeze)
717
+ parsed_struct.keys[1].should be_equal('nested'.freeze)
718
+ parsed_struct.values[0].should be_equal('world'.freeze)
719
+ parsed_struct.values[1][0].should be_equal('object'.freeze)
720
+ parsed_struct.values[1][1].keys[0].should be_equal('structure'.freeze)
721
+ end
722
+ end
723
+
724
+ it 'can freeze objects when using #feed_each' do
725
+ objs = []
726
+ unpacker.feed_each(buffer) do |obj|
727
+ objs << obj
728
+ end
729
+
730
+ parsed_struct = objs.first
731
+ parsed_struct.should == struct
732
+
733
+ parsed_struct.should be_frozen
734
+ parsed_struct['hello'].should be_frozen
735
+ parsed_struct['nested'].should be_frozen
736
+ parsed_struct['nested'][0].should be_frozen
737
+ parsed_struct['nested'][1].should be_frozen
738
+
739
+ if string_deduplication?
740
+ parsed_struct.keys[0].should be_equal('hello'.freeze)
741
+ parsed_struct.keys[1].should be_equal('nested'.freeze)
742
+ parsed_struct.values[0].should be_equal('world'.freeze)
743
+ parsed_struct.values[1][0].should be_equal('object'.freeze)
744
+ parsed_struct.values[1][1].keys[0].should be_equal('structure'.freeze)
745
+ end
746
+ end
747
+ end
748
+
654
749
  context 'binary encoding', :encodings do
655
750
  let :buffer do
656
751
  MessagePack.pack({'hello' => 'world', 'nested' => ['object', {'structure' => true}]})
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.3.3
4
+ version: 1.4.0
5
5
  platform: java
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: 2020-02-05 00:00:00.000000000 Z
13
+ date: 2021-01-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  requirement: !ruby/object:Gem::Requirement
@@ -43,17 +43,17 @@ dependencies:
43
43
  - !ruby/object:Gem::Dependency
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '1.0'
48
+ version: '0'
49
49
  name: rake-compiler
50
50
  prerelease: false
51
51
  type: :development
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - "~>"
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: '1.0'
56
+ version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements: