google-protobuf 3.13.0 → 3.19.4

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.

Potentially problematic release.


This version of google-protobuf might be problematic. Click here for more details.

@@ -0,0 +1,268 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: google/protobuf/descriptor.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ descriptor_data = File.binread(__FILE__).split("\n__END__\n", 2)[1]
7
+ Google::Protobuf::DescriptorPool.generated_pool.add_serialized_file(descriptor_data)
8
+
9
+ module Google
10
+ module Protobuf
11
+ FileDescriptorSet = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileDescriptorSet").msgclass
12
+ FileDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileDescriptorProto").msgclass
13
+ DescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.DescriptorProto").msgclass
14
+ DescriptorProto::ExtensionRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.DescriptorProto.ExtensionRange").msgclass
15
+ DescriptorProto::ReservedRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.DescriptorProto.ReservedRange").msgclass
16
+ ExtensionRangeOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.ExtensionRangeOptions").msgclass
17
+ FieldDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldDescriptorProto").msgclass
18
+ FieldDescriptorProto::Type = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldDescriptorProto.Type").enummodule
19
+ FieldDescriptorProto::Label = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldDescriptorProto.Label").enummodule
20
+ OneofDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.OneofDescriptorProto").msgclass
21
+ EnumDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumDescriptorProto").msgclass
22
+ EnumDescriptorProto::EnumReservedRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumDescriptorProto.EnumReservedRange").msgclass
23
+ EnumValueDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumValueDescriptorProto").msgclass
24
+ ServiceDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.ServiceDescriptorProto").msgclass
25
+ MethodDescriptorProto = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MethodDescriptorProto").msgclass
26
+ FileOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileOptions").msgclass
27
+ FileOptions::OptimizeMode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FileOptions.OptimizeMode").enummodule
28
+ MessageOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MessageOptions").msgclass
29
+ FieldOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldOptions").msgclass
30
+ FieldOptions::CType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldOptions.CType").enummodule
31
+ FieldOptions::JSType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.FieldOptions.JSType").enummodule
32
+ OneofOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.OneofOptions").msgclass
33
+ EnumOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumOptions").msgclass
34
+ EnumValueOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.EnumValueOptions").msgclass
35
+ ServiceOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.ServiceOptions").msgclass
36
+ MethodOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MethodOptions").msgclass
37
+ MethodOptions::IdempotencyLevel = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.MethodOptions.IdempotencyLevel").enummodule
38
+ UninterpretedOption = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.UninterpretedOption").msgclass
39
+ UninterpretedOption::NamePart = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.UninterpretedOption.NamePart").msgclass
40
+ SourceCodeInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.SourceCodeInfo").msgclass
41
+ SourceCodeInfo::Location = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.SourceCodeInfo.Location").msgclass
42
+ GeneratedCodeInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.GeneratedCodeInfo").msgclass
43
+ GeneratedCodeInfo::Annotation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.protobuf.GeneratedCodeInfo.Annotation").msgclass
44
+ end
45
+ end
46
+
47
+ __END__
48
+
49
+ google/protobuf/descriptor.protogoogle.protobuf"G
50
+ FileDescriptorSet2
51
+ file ( 2$.google.protobuf.FileDescriptorProto"�
52
+ FileDescriptorProto
53
+ name ( 
54
+ package ( 
55
+
56
+ dependency ( 
57
+ public_dependency
58
+ (
59
+ weak_dependency (6
60
+ message_type ( 2 .google.protobuf.DescriptorProto7
61
+ enum_type ( 2$.google.protobuf.EnumDescriptorProto8
62
+ service ( 2'.google.protobuf.ServiceDescriptorProto8
63
+ extension ( 2%.google.protobuf.FieldDescriptorProto-
64
+ options ( 2.google.protobuf.FileOptions9
65
+ source_code_info ( 2.google.protobuf.SourceCodeInfo
66
+ syntax ( "�
67
+ DescriptorProto
68
+ name ( 4
69
+ field ( 2%.google.protobuf.FieldDescriptorProto8
70
+ extension ( 2%.google.protobuf.FieldDescriptorProto5
71
+ nested_type ( 2 .google.protobuf.DescriptorProto7
72
+ enum_type ( 2$.google.protobuf.EnumDescriptorProtoH
73
+ extension_range ( 2/.google.protobuf.DescriptorProto.ExtensionRange9
74
+
75
+ oneof_decl ( 2%.google.protobuf.OneofDescriptorProto0
76
+ options ( 2.google.protobuf.MessageOptionsF
77
+ reserved_range ( 2..google.protobuf.DescriptorProto.ReservedRange
78
+
79
+ ( e
80
+ ExtensionRange
81
+ start (
82
+ end (7
83
+ options ( 2&.google.protobuf.ExtensionRangeOptions+
84
+
85
+ start (
86
+ end ("g
87
+ ExtensionRangeOptionsC
88
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption* �����"�
89
+ FieldDescriptorProto
90
+ name ( 
91
+ number (:
92
+ label (2+.google.protobuf.FieldDescriptorProto.Label8
93
+ type (2*.google.protobuf.FieldDescriptorProto.Type
94
+ type_name ( 
95
+ extendee ( 
96
+
97
+ oneof_index (
98
+ json_name
99
+ ( .
100
+ options ( 2.google.protobuf.FieldOptions
101
+ proto3_optional ("�
102
+ Type
103
+ TYPE_DOUBLE
104
+
105
+ TYPE_FLOAT
106
+
107
+ TYPE_INT64
108
+ TYPE_UINT64
109
+
110
+ TYPE_INT32
111
+ TYPE_FIXED64
112
+ TYPE_FIXED32
113
+ TYPE_BOOL
114
+ TYPE_STRING 
115
+
116
+ TYPE_GROUP
117
+ 
118
+ TYPE_MESSAGE 
119
+
120
+ TYPE_BYTES 
121
+ TYPE_UINT32
122
+ TYPE_ENUM
123
+
124
+
125
+ TYPE_SINT32
126
+ TYPE_SINT64"C
127
+ Label
128
+ LABEL_OPTIONAL
129
+ LABEL_REQUIRED
130
+ LABEL_REPEATED"T
131
+ OneofDescriptorProto
132
+ name ( .
133
+ options ( 2.google.protobuf.OneofOptions"�
134
+ EnumDescriptorProto
135
+ name ( 8
136
+ value ( 2).google.protobuf.EnumValueDescriptorProto-
137
+ options ( 2.google.protobuf.EnumOptionsN
138
+ reserved_range ( 26.google.protobuf.EnumDescriptorProto.EnumReservedRange
139
+
140
+ EnumReservedRange
141
+ start (
142
+ end ("l
143
+ EnumValueDescriptorProto
144
+ name ( 
145
+ number (2
146
+ options ( 2!.google.protobuf.EnumValueOptions"�
147
+ ServiceDescriptorProto
148
+ name ( 6
149
+ method ( 2&.google.protobuf.MethodDescriptorProto0
150
+ options ( 2.google.protobuf.ServiceOptions"�
151
+ MethodDescriptorProto
152
+ name ( 
153
+
154
+ input_type ( 
155
+ output_type ( /
156
+ options ( 2.google.protobuf.MethodOptions
157
+ client_streaming (:false
158
+ server_streaming (:false"�
159
+ FileOptions
160
+ java_package ( 
161
+ java_outer_classname ( "
162
+ java_multiple_files
163
+ (:false)
164
+ java_generate_equals_and_hash (B%
165
+ java_string_check_utf8 (:falseF
166
+ optimize_for (2).google.protobuf.FileOptions.OptimizeMode:SPEED
167
+
168
+ go_package ( "
169
+ cc_generic_services (:false$
170
+ java_generic_services (:false"
171
+ py_generic_services (:false#
172
+ php_generic_services* (:false
173
+
174
+ deprecated (:false
175
+ cc_enable_arenas (:true
176
+ objc_class_prefix$ ( 
177
+ csharp_namespace% ( 
178
+ swift_prefix' ( 
179
+ php_class_prefix( ( 
180
+
181
+ php_metadata_namespace, ( 
182
+ ruby_package- ( C
183
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption":
184
+ OptimizeMode
185
+ SPEED
186
+ CODE_SIZE
187
+ LITE_RUNTIME* �����J&'"�
188
+ MessageOptions&
189
+ message_set_wire_format (:false.
190
+ no_standard_descriptor_accessor (:false
191
+
192
+ deprecated (:false
193
+ map_entry (C
194
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption* �����JJJJ J 
195
+ "�
196
+ FieldOptions:
197
+ ctype (2#.google.protobuf.FieldOptions.CType:STRING
198
+ packed (?
199
+ jstype (2$.google.protobuf.FieldOptions.JSType: JS_NORMAL
200
+ lazy (:false
201
+
202
+ deprecated (:false
203
+ weak
204
+ (:falseC
205
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption"/
206
+ CType
207
+
208
+ STRING
209
+ CORD
210
+ STRING_PIECE"5
211
+ JSType
212
+ JS_NORMAL
213
+ JS_STRING
214
+ JS_NUMBER* �����J"^
215
+ OneofOptionsC
216
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption* �����"�
217
+ EnumOptions
218
+ allow_alias (
219
+
220
+ deprecated (:falseC
221
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption* �����J"}
222
+ EnumValueOptions
223
+
224
+ deprecated (:falseC
225
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption* �����"{
226
+ ServiceOptions
227
+
228
+ deprecated! (:falseC
229
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption* �����"�
230
+
231
+
232
+ deprecated! (:false_
233
+ idempotency_level" (2/.google.protobuf.MethodOptions.IdempotencyLevel:IDEMPOTENCY_UNKNOWNC
234
+ uninterpreted_option� ( 2$.google.protobuf.UninterpretedOption"P
235
+ IdempotencyLevel
236
+ IDEMPOTENCY_UNKNOWN
237
+ NO_SIDE_EFFECTS
238
+
239
+ IDEMPOTENT* �����"�
240
+ UninterpretedOption;
241
+ name ( 2-.google.protobuf.UninterpretedOption.NamePart
242
+ identifier_value ( 
243
+ positive_int_value (
244
+ negative_int_value (
245
+ double_value (
246
+ string_value ( 
247
+ aggregate_value ( 3
248
+ NamePart
249
+ name_part ( 
250
+ is_extension ("�
251
+ SourceCodeInfo:
252
+ location ( 2(.google.protobuf.SourceCodeInfo.Location�
253
+ Location
254
+ path (B
255
+ span (B
256
+ leading_comments ( 
257
+ trailing_comments ( !
258
+ leading_detached_comments ( "�
259
+ GeneratedCodeInfoA
260
+
261
+ annotation ( 2-.google.protobuf.GeneratedCodeInfo.AnnotationO
262
+
263
+ Annotation
264
+ path (B
265
+ source_file ( 
266
+ begin (
267
+ end (B~
268
+ com.google.protobufBDescriptorProtosHZ-google.golang.org/protobuf/types/descriptorpb��GPB�Google.Protobuf.Reflection
@@ -5,6 +5,7 @@ require 'google/protobuf'
5
5
 
6
6
  require 'google/protobuf/any_pb'
7
7
  require 'google/protobuf/source_context_pb'
8
+
8
9
  Google::Protobuf::DescriptorPool.generated_pool.build do
9
10
  add_file("google/protobuf/type.proto", :syntax => :proto3) do
10
11
  add_message "google.protobuf.Type" do
@@ -85,6 +85,11 @@ module Google
85
85
  def from_time(time)
86
86
  self.seconds = time.to_i
87
87
  self.nanos = time.nsec
88
+ self
89
+ end
90
+
91
+ def self.from_time(time)
92
+ new.from_time(time)
88
93
  end
89
94
 
90
95
  def to_i
@@ -51,77 +51,9 @@ else
51
51
  require 'google/protobuf_c'
52
52
  end
53
53
 
54
- module Google
55
- module Protobuf
56
- module Internal
57
- def self.infer_package(names)
58
- # Package is longest common prefix ending in '.', if any.
59
- if not names.empty?
60
- min, max = names.minmax
61
- last_common_dot = nil
62
- min.size.times { |i|
63
- if min[i] != max[i] then break end
64
- if min[i] == ?. then last_common_dot = i end
65
- }
66
- if last_common_dot
67
- return min.slice(0, last_common_dot)
68
- end
69
- end
70
-
71
- nil
72
- end
73
-
74
- class NestingBuilder
75
- def initialize(msg_names, enum_names)
76
- @to_pos = {nil=>nil}
77
- @msg_children = Hash.new { |hash, key| hash[key] = [] }
78
- @enum_children = Hash.new { |hash, key| hash[key] = [] }
79
-
80
- msg_names.each_with_index { |name, idx| @to_pos[name] = idx }
81
- enum_names.each_with_index { |name, idx| @to_pos[name] = idx }
82
-
83
- msg_names.each { |name| @msg_children[parent(name)] << name }
84
- enum_names.each { |name| @enum_children[parent(name)] << name }
85
- end
86
-
87
- def build(package)
88
- return build_msg(package)
89
- end
90
-
91
- private
92
- def build_msg(msg)
93
- return {
94
- :pos => @to_pos[msg],
95
- :msgs => @msg_children[msg].map { |child| build_msg(child) },
96
- :enums => @enum_children[msg].map { |child| @to_pos[child] },
97
- }
98
- end
99
-
100
- private
101
- def parent(name)
102
- idx = name.rindex(?.)
103
- if idx
104
- return name.slice(0, idx)
105
- else
106
- return nil
107
- end
108
- end
109
- end
110
-
111
- def self.fixup_descriptor(package, msg_names, enum_names)
112
- if package.nil?
113
- package = self.infer_package(msg_names + enum_names)
114
- end
115
-
116
- nesting = NestingBuilder.new(msg_names, enum_names).build(package)
117
-
118
- return package, nesting
119
- end
120
- end
121
- end
122
- end
123
54
  end
124
55
 
56
+ require 'google/protobuf/descriptor_dsl'
125
57
  require 'google/protobuf/repeated_field'
126
58
 
127
59
  module Google
data/tests/basic.rb CHANGED
@@ -31,6 +31,54 @@ module BasicTest
31
31
  end
32
32
  include CommonTests
33
33
 
34
+ def test_issue_8311_crash
35
+ Google::Protobuf::DescriptorPool.generated_pool.build do
36
+ add_file("inner.proto", :syntax => :proto3) do
37
+ add_message "Inner" do
38
+ # Removing either of these fixes the segfault.
39
+ optional :foo, :string, 1
40
+ optional :bar, :string, 2
41
+ end
42
+ end
43
+ end
44
+
45
+ Google::Protobuf::DescriptorPool.generated_pool.build do
46
+ add_file("outer.proto", :syntax => :proto3) do
47
+ add_message "Outer" do
48
+ repeated :inners, :message, 1, "Inner"
49
+ end
50
+ end
51
+ end
52
+
53
+ outer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("Outer").msgclass
54
+
55
+ outer.new(
56
+ inners: []
57
+ )['inners'].to_s
58
+
59
+ assert_raise Google::Protobuf::TypeError do
60
+ outer.new(
61
+ inners: [nil]
62
+ ).to_s
63
+ end
64
+ end
65
+
66
+ def test_issue_8559_crash
67
+ msg = TestMessage.new
68
+ msg.repeated_int32 = ::Google::Protobuf::RepeatedField.new(:int32, [1, 2, 3])
69
+ # TODO: Remove the platform check once https://github.com/jruby/jruby/issues/6818 is released in JRuby 9.3.0.0
70
+ GC.start(full_mark: true, immediate_sweep: true) unless RUBY_PLATFORM == "java"
71
+ TestMessage.encode(msg)
72
+ end
73
+
74
+ def test_issue_9440
75
+ msg = HelloRequest.new
76
+ msg.id = 8
77
+ assert_equal 8, msg.id
78
+ msg.version = '1'
79
+ assert_equal 8, msg.id
80
+ end
81
+
34
82
  def test_has_field
35
83
  m = TestSingularFields.new
36
84
  assert !m.has_singular_msg?
@@ -129,6 +177,17 @@ module BasicTest
129
177
  assert_equal nil, m.singular_msg
130
178
  end
131
179
 
180
+ def test_import_proto2
181
+ m = TestMessage.new
182
+ assert !m.has_optional_proto2_submessage?
183
+ m.optional_proto2_submessage = ::FooBar::Proto2::TestImportedMessage.new
184
+ assert m.has_optional_proto2_submessage?
185
+ assert TestMessage.descriptor.lookup('optional_proto2_submessage').has?(m)
186
+
187
+ m.clear_optional_proto2_submessage
188
+ assert !m.has_optional_proto2_submessage?
189
+ end
190
+
132
191
  def test_clear_repeated_fields
133
192
  m = TestMessage.new
134
193
 
@@ -216,7 +275,7 @@ module BasicTest
216
275
  m.map_string_int32 = {}
217
276
  end
218
277
 
219
- assert_raise TypeError do
278
+ assert_raise Google::Protobuf::TypeError do
220
279
  m = MapMessage.new(:map_string_int32 => { 1 => "I am not a number" })
221
280
  end
222
281
  end
@@ -241,8 +300,12 @@ module BasicTest
241
300
  :map_string_msg => {"a" => TestMessage2.new(:foo => 1),
242
301
  "b" => TestMessage2.new(:foo => 2)},
243
302
  :map_string_enum => {"a" => :A, "b" => :B})
244
- expected = "<BasicTest::MapMessage: map_string_int32: {\"b\"=>2, \"a\"=>1}, map_string_msg: {\"b\"=><BasicTest::TestMessage2: foo: 2>, \"a\"=><BasicTest::TestMessage2: foo: 1>}, map_string_enum: {\"b\"=>:B, \"a\"=>:A}>"
245
- assert_equal expected, m.inspect
303
+
304
+ # JRuby doesn't keep consistent ordering so check for either version
305
+ expected_a = "<BasicTest::MapMessage: map_string_int32: {\"b\"=>2, \"a\"=>1}, map_string_msg: {\"b\"=><BasicTest::TestMessage2: foo: 2>, \"a\"=><BasicTest::TestMessage2: foo: 1>}, map_string_enum: {\"b\"=>:B, \"a\"=>:A}>"
306
+ expected_b = "<BasicTest::MapMessage: map_string_int32: {\"a\"=>1, \"b\"=>2}, map_string_msg: {\"a\"=><BasicTest::TestMessage2: foo: 1>, \"b\"=><BasicTest::TestMessage2: foo: 2>}, map_string_enum: {\"a\"=>:A, \"b\"=>:B}>"
307
+ inspect_result = m.inspect
308
+ assert expected_a == inspect_result || expected_b == inspect_result, "Incorrect inspect result: #{inspect_result}"
246
309
  end
247
310
 
248
311
  def test_map_corruption
@@ -443,6 +506,8 @@ module BasicTest
443
506
  :optional_int32=>0,
444
507
  :optional_int64=>0,
445
508
  :optional_msg=>nil,
509
+ :optional_msg2=>nil,
510
+ :optional_proto2_submessage=>nil,
446
511
  :optional_string=>"foo",
447
512
  :optional_uint32=>0,
448
513
  :optional_uint64=>0,
@@ -480,9 +545,9 @@ module BasicTest
480
545
  m = MapMessage.new(:map_string_int32 => {"a" => 1})
481
546
  expected = {mapStringInt32: {a: 1}, mapStringMsg: {}, mapStringEnum: {}}
482
547
  expected_preserve = {map_string_int32: {a: 1}, map_string_msg: {}, map_string_enum: {}}
483
- assert_equal JSON.parse(MapMessage.encode_json(m), :symbolize_names => true), expected
548
+ assert_equal JSON.parse(MapMessage.encode_json(m, :emit_defaults=>true), :symbolize_names => true), expected
484
549
 
485
- json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true)
550
+ json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true, :emit_defaults=>true)
486
551
  assert_equal JSON.parse(json, :symbolize_names => true), expected_preserve
487
552
 
488
553
  m2 = MapMessage.decode_json(MapMessage.encode_json(m))
@@ -492,7 +557,7 @@ module BasicTest
492
557
  def test_json_maps_emit_defaults_submsg
493
558
  # TODO: Fix JSON in JRuby version.
494
559
  return if RUBY_PLATFORM == "java"
495
- m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new})
560
+ m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new(foo: 0)})
496
561
  expected = {mapStringInt32: {}, mapStringMsg: {a: {foo: 0}}, mapStringEnum: {}}
497
562
 
498
563
  actual = MapMessage.encode_json(m, :emit_defaults => true)
@@ -500,6 +565,30 @@ module BasicTest
500
565
  assert_equal JSON.parse(actual, :symbolize_names => true), expected
501
566
  end
502
567
 
568
+ def test_json_emit_defaults_submsg
569
+ # TODO: Fix JSON in JRuby version.
570
+ return if RUBY_PLATFORM == "java"
571
+ m = TestSingularFields.new(singular_msg: proto_module::TestMessage2.new)
572
+
573
+ expected = {
574
+ singularInt32: 0,
575
+ singularInt64: "0",
576
+ singularUint32: 0,
577
+ singularUint64: "0",
578
+ singularBool: false,
579
+ singularFloat: 0,
580
+ singularDouble: 0,
581
+ singularString: "",
582
+ singularBytes: "",
583
+ singularMsg: {},
584
+ singularEnum: "Default",
585
+ }
586
+
587
+ actual = proto_module::TestMessage.encode_json(m, :emit_defaults => true)
588
+
589
+ assert_equal expected, JSON.parse(actual, :symbolize_names => true)
590
+ end
591
+
503
592
  def test_respond_to
504
593
  # This test fails with JRuby 1.7.23, likely because of an old JRuby bug.
505
594
  return if RUBY_PLATFORM == "java"
@@ -539,5 +628,21 @@ module BasicTest
539
628
  assert_raise(FrozenErrorType) { m.map_string_int32.delete('a') }
540
629
  assert_raise(FrozenErrorType) { m.map_string_int32.clear }
541
630
  end
631
+
632
+ def test_map_length
633
+ m = proto_module::MapMessage.new
634
+ assert_equal 0, m.map_string_int32.length
635
+ assert_equal 0, m.map_string_msg.length
636
+ assert_equal 0, m.map_string_int32.size
637
+ assert_equal 0, m.map_string_msg.size
638
+
639
+ m.map_string_int32['a'] = 1
640
+ m.map_string_int32['b'] = 2
641
+ m.map_string_msg['a'] = proto_module::TestMessage2.new
642
+ assert_equal 2, m.map_string_int32.length
643
+ assert_equal 1, m.map_string_msg.length
644
+ assert_equal 2, m.map_string_int32.size
645
+ assert_equal 1, m.map_string_msg.size
646
+ end
542
647
  end
543
648
  end
data/tests/stress.rb CHANGED
@@ -30,7 +30,7 @@ module StressTest
30
30
  100_000.times do
31
31
  mnew = TestMessage.decode(data)
32
32
  mnew = mnew.dup
33
- assert_equal mnew.inspect, m.inspect
33
+ assert_equal m.inspect, mnew.inspect
34
34
  assert TestMessage.encode(mnew) == data
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,35 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.13.0
4
+ version: 3.19.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Protobuf Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-14 00:00:00.000000000 Z
11
+ date: 2022-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler-dock
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.0.1
20
- - - "<"
17
+ - - '='
21
18
  - !ruby/object:Gem::Version
22
- version: '2.0'
19
+ version: 1.1.0
23
20
  type: :development
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 1.0.1
30
- - - "<"
24
+ - - '='
31
25
  - !ruby/object:Gem::Version
32
- version: '2.0'
26
+ version: 1.1.0
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: rake-compiler
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,20 +58,6 @@ dependencies:
64
58
  - - ">="
65
59
  - !ruby/object:Gem::Version
66
60
  version: 3.0.9
67
- - !ruby/object:Gem::Dependency
68
- name: rubygems-tasks
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: 0.2.4
74
- type: :development
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: 0.2.4
81
61
  description: Protocol Buffers are Google's data interchange format.
82
62
  email: protobuf@googlegroups.com
83
63
  executables: []
@@ -85,21 +65,27 @@ extensions:
85
65
  - ext/google/protobuf_c/extconf.rb
86
66
  extra_rdoc_files: []
87
67
  files:
68
+ - ext/google/protobuf_c/convert.c
69
+ - ext/google/protobuf_c/convert.h
88
70
  - ext/google/protobuf_c/defs.c
89
- - ext/google/protobuf_c/encode_decode.c
71
+ - ext/google/protobuf_c/defs.h
90
72
  - ext/google/protobuf_c/extconf.rb
91
73
  - ext/google/protobuf_c/map.c
74
+ - ext/google/protobuf_c/map.h
92
75
  - ext/google/protobuf_c/message.c
76
+ - ext/google/protobuf_c/message.h
93
77
  - ext/google/protobuf_c/protobuf.c
94
78
  - ext/google/protobuf_c/protobuf.h
95
79
  - ext/google/protobuf_c/repeated_field.c
96
- - ext/google/protobuf_c/storage.c
97
- - ext/google/protobuf_c/upb.c
98
- - ext/google/protobuf_c/upb.h
80
+ - ext/google/protobuf_c/repeated_field.h
81
+ - ext/google/protobuf_c/ruby-upb.c
82
+ - ext/google/protobuf_c/ruby-upb.h
99
83
  - ext/google/protobuf_c/wrap_memcpy.c
100
84
  - lib/google/protobuf.rb
101
85
  - lib/google/protobuf/any_pb.rb
102
86
  - lib/google/protobuf/api_pb.rb
87
+ - lib/google/protobuf/descriptor_dsl.rb
88
+ - lib/google/protobuf/descriptor_pb.rb
103
89
  - lib/google/protobuf/duration_pb.rb
104
90
  - lib/google/protobuf/empty_pb.rb
105
91
  - lib/google/protobuf/field_mask_pb.rb
@@ -118,7 +104,7 @@ homepage: https://developers.google.com/protocol-buffers
118
104
  licenses:
119
105
  - BSD-3-Clause
120
106
  metadata:
121
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.13.0/ruby
107
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.19.4/ruby
122
108
  post_install_message:
123
109
  rdoc_options: []
124
110
  require_paths:
@@ -134,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
120
  - !ruby/object:Gem::Version
135
121
  version: '0'
136
122
  requirements: []
137
- rubygems_version: 3.1.4
123
+ rubygems_version: 3.3.6
138
124
  signing_key:
139
125
  specification_version: 4
140
126
  summary: Protocol Buffers