google-protobuf 3.11.3 → 3.19.3
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.
- checksums.yaml +4 -4
- data/ext/google/protobuf_c/convert.c +348 -0
- data/ext/google/protobuf_c/convert.h +72 -0
- data/ext/google/protobuf_c/defs.c +468 -1462
- data/ext/google/protobuf_c/defs.h +107 -0
- data/ext/google/protobuf_c/extconf.rb +4 -5
- data/ext/google/protobuf_c/map.c +314 -482
- data/ext/google/protobuf_c/map.h +67 -0
- data/ext/google/protobuf_c/message.c +916 -437
- data/ext/google/protobuf_c/message.h +101 -0
- data/ext/google/protobuf_c/protobuf.c +398 -64
- data/ext/google/protobuf_c/protobuf.h +43 -592
- data/ext/google/protobuf_c/repeated_field.c +294 -321
- data/ext/google/protobuf_c/repeated_field.h +63 -0
- data/ext/google/protobuf_c/ruby-upb.c +9171 -0
- data/ext/google/protobuf_c/ruby-upb.h +4704 -0
- data/lib/google/protobuf/api_pb.rb +1 -0
- data/lib/google/protobuf/descriptor_dsl.rb +458 -0
- data/lib/google/protobuf/descriptor_pb.rb +268 -0
- data/lib/google/protobuf/type_pb.rb +1 -0
- data/lib/google/protobuf/well_known_types.rb +5 -0
- data/lib/google/protobuf.rb +1 -69
- data/tests/basic.rb +248 -53
- data/tests/generated_code_test.rb +0 -0
- data/tests/stress.rb +1 -1
- metadata +20 -28
- data/ext/google/protobuf_c/encode_decode.c +0 -1758
- data/ext/google/protobuf_c/storage.c +0 -1149
- data/ext/google/protobuf_c/upb.c +0 -13289
- data/ext/google/protobuf_c/upb.h +0 -7085
data/tests/basic.rb
CHANGED
@@ -31,12 +31,52 @@ 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
|
+
|
34
74
|
def test_has_field
|
35
|
-
m =
|
36
|
-
assert !m.
|
37
|
-
m.
|
38
|
-
assert m.
|
39
|
-
assert
|
75
|
+
m = TestSingularFields.new
|
76
|
+
assert !m.has_singular_msg?
|
77
|
+
m.singular_msg = TestMessage2.new
|
78
|
+
assert m.has_singular_msg?
|
79
|
+
assert TestSingularFields.descriptor.lookup('singular_msg').has?(m)
|
40
80
|
|
41
81
|
m = OneofMessage.new
|
42
82
|
assert !m.has_my_oneof?
|
@@ -45,32 +85,31 @@ module BasicTest
|
|
45
85
|
assert_raise NoMethodError do
|
46
86
|
m.has_a?
|
47
87
|
end
|
48
|
-
|
49
|
-
OneofMessage.descriptor.lookup('a').has?(m)
|
50
|
-
end
|
88
|
+
assert_true OneofMessage.descriptor.lookup('a').has?(m)
|
51
89
|
|
52
|
-
m =
|
90
|
+
m = TestSingularFields.new
|
53
91
|
assert_raise NoMethodError do
|
54
|
-
m.
|
92
|
+
m.has_singular_int32?
|
55
93
|
end
|
56
94
|
assert_raise ArgumentError do
|
57
|
-
|
95
|
+
TestSingularFields.descriptor.lookup('singular_int32').has?(m)
|
58
96
|
end
|
59
97
|
|
60
98
|
assert_raise NoMethodError do
|
61
|
-
m.
|
99
|
+
m.has_singular_string?
|
62
100
|
end
|
63
101
|
assert_raise ArgumentError do
|
64
|
-
|
102
|
+
TestSingularFields.descriptor.lookup('singular_string').has?(m)
|
65
103
|
end
|
66
104
|
|
67
105
|
assert_raise NoMethodError do
|
68
|
-
m.
|
106
|
+
m.has_singular_bool?
|
69
107
|
end
|
70
108
|
assert_raise ArgumentError do
|
71
|
-
|
109
|
+
TestSingularFields.descriptor.lookup('singular_bool').has?(m)
|
72
110
|
end
|
73
111
|
|
112
|
+
m = TestMessage.new
|
74
113
|
assert_raise NoMethodError do
|
75
114
|
m.has_repeated_msg?
|
76
115
|
end
|
@@ -79,40 +118,70 @@ module BasicTest
|
|
79
118
|
end
|
80
119
|
end
|
81
120
|
|
121
|
+
def test_no_presence
|
122
|
+
m = TestSingularFields.new
|
123
|
+
|
124
|
+
# Explicitly setting to zero does not cause anything to be serialized.
|
125
|
+
m.singular_int32 = 0
|
126
|
+
assert_equal "", TestSingularFields.encode(m)
|
127
|
+
|
128
|
+
# Explicitly setting to a non-zero value *does* cause serialization.
|
129
|
+
m.singular_int32 = 1
|
130
|
+
assert_not_equal "", TestSingularFields.encode(m)
|
131
|
+
|
132
|
+
m.singular_int32 = 0
|
133
|
+
assert_equal "", TestSingularFields.encode(m)
|
134
|
+
end
|
135
|
+
|
82
136
|
def test_set_clear_defaults
|
137
|
+
m = TestSingularFields.new
|
138
|
+
|
139
|
+
m.singular_int32 = -42
|
140
|
+
assert_equal -42, m.singular_int32
|
141
|
+
m.clear_singular_int32
|
142
|
+
assert_equal 0, m.singular_int32
|
143
|
+
|
144
|
+
m.singular_int32 = 50
|
145
|
+
assert_equal 50, m.singular_int32
|
146
|
+
TestSingularFields.descriptor.lookup('singular_int32').clear(m)
|
147
|
+
assert_equal 0, m.singular_int32
|
148
|
+
|
149
|
+
m.singular_string = "foo bar"
|
150
|
+
assert_equal "foo bar", m.singular_string
|
151
|
+
m.clear_singular_string
|
152
|
+
assert_equal "", m.singular_string
|
153
|
+
|
154
|
+
m.singular_string = "foo"
|
155
|
+
assert_equal "foo", m.singular_string
|
156
|
+
TestSingularFields.descriptor.lookup('singular_string').clear(m)
|
157
|
+
assert_equal "", m.singular_string
|
158
|
+
|
159
|
+
m.singular_msg = TestMessage2.new(:foo => 42)
|
160
|
+
assert_equal TestMessage2.new(:foo => 42), m.singular_msg
|
161
|
+
assert m.has_singular_msg?
|
162
|
+
m.clear_singular_msg
|
163
|
+
assert_equal nil, m.singular_msg
|
164
|
+
assert !m.has_singular_msg?
|
165
|
+
|
166
|
+
m.singular_msg = TestMessage2.new(:foo => 42)
|
167
|
+
assert_equal TestMessage2.new(:foo => 42), m.singular_msg
|
168
|
+
TestSingularFields.descriptor.lookup('singular_msg').clear(m)
|
169
|
+
assert_equal nil, m.singular_msg
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_import_proto2
|
83
173
|
m = TestMessage.new
|
174
|
+
assert !m.has_optional_proto2_submessage?
|
175
|
+
m.optional_proto2_submessage = ::FooBar::Proto2::TestImportedMessage.new
|
176
|
+
assert m.has_optional_proto2_submessage?
|
177
|
+
assert TestMessage.descriptor.lookup('optional_proto2_submessage').has?(m)
|
84
178
|
|
85
|
-
m.
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
m
|
91
|
-
assert_equal 50, m.optional_int32
|
92
|
-
TestMessage.descriptor.lookup('optional_int32').clear(m)
|
93
|
-
assert_equal 0, m.optional_int32
|
94
|
-
|
95
|
-
m.optional_string = "foo bar"
|
96
|
-
assert_equal "foo bar", m.optional_string
|
97
|
-
m.clear_optional_string
|
98
|
-
assert_equal "", m.optional_string
|
99
|
-
|
100
|
-
m.optional_string = "foo"
|
101
|
-
assert_equal "foo", m.optional_string
|
102
|
-
TestMessage.descriptor.lookup('optional_string').clear(m)
|
103
|
-
assert_equal "", m.optional_string
|
104
|
-
|
105
|
-
m.optional_msg = TestMessage2.new(:foo => 42)
|
106
|
-
assert_equal TestMessage2.new(:foo => 42), m.optional_msg
|
107
|
-
assert m.has_optional_msg?
|
108
|
-
m.clear_optional_msg
|
109
|
-
assert_equal nil, m.optional_msg
|
110
|
-
assert !m.has_optional_msg?
|
111
|
-
|
112
|
-
m.optional_msg = TestMessage2.new(:foo => 42)
|
113
|
-
assert_equal TestMessage2.new(:foo => 42), m.optional_msg
|
114
|
-
TestMessage.descriptor.lookup('optional_msg').clear(m)
|
115
|
-
assert_equal nil, m.optional_msg
|
179
|
+
m.clear_optional_proto2_submessage
|
180
|
+
assert !m.has_optional_proto2_submessage?
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_clear_repeated_fields
|
184
|
+
m = TestMessage.new
|
116
185
|
|
117
186
|
m.repeated_int32.push(1)
|
118
187
|
assert_equal [1], m.repeated_int32
|
@@ -128,6 +197,7 @@ module BasicTest
|
|
128
197
|
m.a = "foo"
|
129
198
|
assert_equal "foo", m.a
|
130
199
|
assert m.has_my_oneof?
|
200
|
+
assert_equal :a, m.my_oneof
|
131
201
|
m.clear_a
|
132
202
|
assert !m.has_my_oneof?
|
133
203
|
|
@@ -143,7 +213,6 @@ module BasicTest
|
|
143
213
|
assert !m.has_my_oneof?
|
144
214
|
end
|
145
215
|
|
146
|
-
|
147
216
|
def test_initialization_map_errors
|
148
217
|
e = assert_raise ArgumentError do
|
149
218
|
TestMessage.new(:hello => "world")
|
@@ -198,7 +267,7 @@ module BasicTest
|
|
198
267
|
m.map_string_int32 = {}
|
199
268
|
end
|
200
269
|
|
201
|
-
assert_raise TypeError do
|
270
|
+
assert_raise Google::Protobuf::TypeError do
|
202
271
|
m = MapMessage.new(:map_string_int32 => { 1 => "I am not a number" })
|
203
272
|
end
|
204
273
|
end
|
@@ -223,8 +292,12 @@ module BasicTest
|
|
223
292
|
:map_string_msg => {"a" => TestMessage2.new(:foo => 1),
|
224
293
|
"b" => TestMessage2.new(:foo => 2)},
|
225
294
|
:map_string_enum => {"a" => :A, "b" => :B})
|
226
|
-
|
227
|
-
|
295
|
+
|
296
|
+
# JRuby doesn't keep consistent ordering so check for either version
|
297
|
+
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}>"
|
298
|
+
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}>"
|
299
|
+
inspect_result = m.inspect
|
300
|
+
assert expected_a == inspect_result || expected_b == inspect_result, "Incorrect inspect result: #{inspect_result}"
|
228
301
|
end
|
229
302
|
|
230
303
|
def test_map_corruption
|
@@ -276,6 +349,86 @@ module BasicTest
|
|
276
349
|
assert_equal m5, m
|
277
350
|
end
|
278
351
|
|
352
|
+
def test_map_wrappers_with_default_values
|
353
|
+
run_asserts = ->(m) {
|
354
|
+
assert_equal 0.0, m.map_double[0].value
|
355
|
+
assert_equal 0.0, m.map_float[0].value
|
356
|
+
assert_equal 0, m.map_int32[0].value
|
357
|
+
assert_equal 0, m.map_int64[0].value
|
358
|
+
assert_equal 0, m.map_uint32[0].value
|
359
|
+
assert_equal 0, m.map_uint64[0].value
|
360
|
+
assert_equal false, m.map_bool[0].value
|
361
|
+
assert_equal '', m.map_string[0].value
|
362
|
+
assert_equal '', m.map_bytes[0].value
|
363
|
+
}
|
364
|
+
|
365
|
+
m = proto_module::Wrapper.new(
|
366
|
+
map_double: {0 => Google::Protobuf::DoubleValue.new(value: 0.0)},
|
367
|
+
map_float: {0 => Google::Protobuf::FloatValue.new(value: 0.0)},
|
368
|
+
map_int32: {0 => Google::Protobuf::Int32Value.new(value: 0)},
|
369
|
+
map_int64: {0 => Google::Protobuf::Int64Value.new(value: 0)},
|
370
|
+
map_uint32: {0 => Google::Protobuf::UInt32Value.new(value: 0)},
|
371
|
+
map_uint64: {0 => Google::Protobuf::UInt64Value.new(value: 0)},
|
372
|
+
map_bool: {0 => Google::Protobuf::BoolValue.new(value: false)},
|
373
|
+
map_string: {0 => Google::Protobuf::StringValue.new(value: '')},
|
374
|
+
map_bytes: {0 => Google::Protobuf::BytesValue.new(value: '')},
|
375
|
+
)
|
376
|
+
|
377
|
+
run_asserts.call(m)
|
378
|
+
serialized = proto_module::Wrapper::encode(m)
|
379
|
+
m2 = proto_module::Wrapper::decode(serialized)
|
380
|
+
run_asserts.call(m2)
|
381
|
+
|
382
|
+
# Test the case where we are serializing directly from the parsed form
|
383
|
+
# (before anything lazy is materialized).
|
384
|
+
m3 = proto_module::Wrapper::decode(serialized)
|
385
|
+
serialized2 = proto_module::Wrapper::encode(m3)
|
386
|
+
m4 = proto_module::Wrapper::decode(serialized2)
|
387
|
+
run_asserts.call(m4)
|
388
|
+
|
389
|
+
# Test that the lazy form compares equal to the expanded form.
|
390
|
+
m5 = proto_module::Wrapper::decode(serialized2)
|
391
|
+
assert_equal m5, m
|
392
|
+
end
|
393
|
+
|
394
|
+
def test_map_wrappers_with_no_value
|
395
|
+
run_asserts = ->(m) {
|
396
|
+
assert_equal 0.0, m.map_double[0].value
|
397
|
+
assert_equal 0.0, m.map_float[0].value
|
398
|
+
assert_equal 0, m.map_int32[0].value
|
399
|
+
assert_equal 0, m.map_int64[0].value
|
400
|
+
assert_equal 0, m.map_uint32[0].value
|
401
|
+
assert_equal 0, m.map_uint64[0].value
|
402
|
+
assert_equal false, m.map_bool[0].value
|
403
|
+
assert_equal '', m.map_string[0].value
|
404
|
+
assert_equal '', m.map_bytes[0].value
|
405
|
+
}
|
406
|
+
|
407
|
+
m = proto_module::Wrapper.new(
|
408
|
+
map_double: {0 => Google::Protobuf::DoubleValue.new()},
|
409
|
+
map_float: {0 => Google::Protobuf::FloatValue.new()},
|
410
|
+
map_int32: {0 => Google::Protobuf::Int32Value.new()},
|
411
|
+
map_int64: {0 => Google::Protobuf::Int64Value.new()},
|
412
|
+
map_uint32: {0 => Google::Protobuf::UInt32Value.new()},
|
413
|
+
map_uint64: {0 => Google::Protobuf::UInt64Value.new()},
|
414
|
+
map_bool: {0 => Google::Protobuf::BoolValue.new()},
|
415
|
+
map_string: {0 => Google::Protobuf::StringValue.new()},
|
416
|
+
map_bytes: {0 => Google::Protobuf::BytesValue.new()},
|
417
|
+
)
|
418
|
+
run_asserts.call(m)
|
419
|
+
|
420
|
+
serialized = proto_module::Wrapper::encode(m)
|
421
|
+
m2 = proto_module::Wrapper::decode(serialized)
|
422
|
+
run_asserts.call(m2)
|
423
|
+
|
424
|
+
# Test the case where we are serializing directly from the parsed form
|
425
|
+
# (before anything lazy is materialized).
|
426
|
+
m3 = proto_module::Wrapper::decode(serialized)
|
427
|
+
serialized2 = proto_module::Wrapper::encode(m3)
|
428
|
+
m4 = proto_module::Wrapper::decode(serialized2)
|
429
|
+
run_asserts.call(m4)
|
430
|
+
end
|
431
|
+
|
279
432
|
def test_concurrent_decoding
|
280
433
|
o = Outer.new
|
281
434
|
o.items[0] = Inner.new
|
@@ -345,6 +498,8 @@ module BasicTest
|
|
345
498
|
:optional_int32=>0,
|
346
499
|
:optional_int64=>0,
|
347
500
|
:optional_msg=>nil,
|
501
|
+
:optional_msg2=>nil,
|
502
|
+
:optional_proto2_submessage=>nil,
|
348
503
|
:optional_string=>"foo",
|
349
504
|
:optional_uint32=>0,
|
350
505
|
:optional_uint64=>0,
|
@@ -382,9 +537,9 @@ module BasicTest
|
|
382
537
|
m = MapMessage.new(:map_string_int32 => {"a" => 1})
|
383
538
|
expected = {mapStringInt32: {a: 1}, mapStringMsg: {}, mapStringEnum: {}}
|
384
539
|
expected_preserve = {map_string_int32: {a: 1}, map_string_msg: {}, map_string_enum: {}}
|
385
|
-
assert_equal JSON.parse(MapMessage.encode_json(m), :symbolize_names => true), expected
|
540
|
+
assert_equal JSON.parse(MapMessage.encode_json(m, :emit_defaults=>true), :symbolize_names => true), expected
|
386
541
|
|
387
|
-
json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true)
|
542
|
+
json = MapMessage.encode_json(m, :preserve_proto_fieldnames => true, :emit_defaults=>true)
|
388
543
|
assert_equal JSON.parse(json, :symbolize_names => true), expected_preserve
|
389
544
|
|
390
545
|
m2 = MapMessage.decode_json(MapMessage.encode_json(m))
|
@@ -394,7 +549,7 @@ module BasicTest
|
|
394
549
|
def test_json_maps_emit_defaults_submsg
|
395
550
|
# TODO: Fix JSON in JRuby version.
|
396
551
|
return if RUBY_PLATFORM == "java"
|
397
|
-
m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new})
|
552
|
+
m = MapMessage.new(:map_string_msg => {"a" => TestMessage2.new(foo: 0)})
|
398
553
|
expected = {mapStringInt32: {}, mapStringMsg: {a: {foo: 0}}, mapStringEnum: {}}
|
399
554
|
|
400
555
|
actual = MapMessage.encode_json(m, :emit_defaults => true)
|
@@ -402,6 +557,30 @@ module BasicTest
|
|
402
557
|
assert_equal JSON.parse(actual, :symbolize_names => true), expected
|
403
558
|
end
|
404
559
|
|
560
|
+
def test_json_emit_defaults_submsg
|
561
|
+
# TODO: Fix JSON in JRuby version.
|
562
|
+
return if RUBY_PLATFORM == "java"
|
563
|
+
m = TestSingularFields.new(singular_msg: proto_module::TestMessage2.new)
|
564
|
+
|
565
|
+
expected = {
|
566
|
+
singularInt32: 0,
|
567
|
+
singularInt64: "0",
|
568
|
+
singularUint32: 0,
|
569
|
+
singularUint64: "0",
|
570
|
+
singularBool: false,
|
571
|
+
singularFloat: 0,
|
572
|
+
singularDouble: 0,
|
573
|
+
singularString: "",
|
574
|
+
singularBytes: "",
|
575
|
+
singularMsg: {},
|
576
|
+
singularEnum: "Default",
|
577
|
+
}
|
578
|
+
|
579
|
+
actual = proto_module::TestMessage.encode_json(m, :emit_defaults => true)
|
580
|
+
|
581
|
+
assert_equal expected, JSON.parse(actual, :symbolize_names => true)
|
582
|
+
end
|
583
|
+
|
405
584
|
def test_respond_to
|
406
585
|
# This test fails with JRuby 1.7.23, likely because of an old JRuby bug.
|
407
586
|
return if RUBY_PLATFORM == "java"
|
@@ -441,5 +620,21 @@ module BasicTest
|
|
441
620
|
assert_raise(FrozenErrorType) { m.map_string_int32.delete('a') }
|
442
621
|
assert_raise(FrozenErrorType) { m.map_string_int32.clear }
|
443
622
|
end
|
623
|
+
|
624
|
+
def test_map_length
|
625
|
+
m = proto_module::MapMessage.new
|
626
|
+
assert_equal 0, m.map_string_int32.length
|
627
|
+
assert_equal 0, m.map_string_msg.length
|
628
|
+
assert_equal 0, m.map_string_int32.size
|
629
|
+
assert_equal 0, m.map_string_msg.size
|
630
|
+
|
631
|
+
m.map_string_int32['a'] = 1
|
632
|
+
m.map_string_int32['b'] = 2
|
633
|
+
m.map_string_msg['a'] = proto_module::TestMessage2.new
|
634
|
+
assert_equal 2, m.map_string_int32.length
|
635
|
+
assert_equal 1, m.map_string_msg.length
|
636
|
+
assert_equal 2, m.map_string_int32.size
|
637
|
+
assert_equal 1, m.map_string_msg.size
|
638
|
+
end
|
444
639
|
end
|
445
640
|
end
|
File without changes
|
data/tests/stress.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.19.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Protobuf Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-11 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
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.1.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake-compiler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.1.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: test-unit
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,20 +58,6 @@ dependencies:
|
|
58
58
|
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 3.0.9
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rubygems-tasks
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 0.2.4
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 0.2.4
|
75
61
|
description: Protocol Buffers are Google's data interchange format.
|
76
62
|
email: protobuf@googlegroups.com
|
77
63
|
executables: []
|
@@ -79,21 +65,27 @@ extensions:
|
|
79
65
|
- ext/google/protobuf_c/extconf.rb
|
80
66
|
extra_rdoc_files: []
|
81
67
|
files:
|
68
|
+
- ext/google/protobuf_c/convert.c
|
69
|
+
- ext/google/protobuf_c/convert.h
|
82
70
|
- ext/google/protobuf_c/defs.c
|
83
|
-
- ext/google/protobuf_c/
|
71
|
+
- ext/google/protobuf_c/defs.h
|
84
72
|
- ext/google/protobuf_c/extconf.rb
|
85
73
|
- ext/google/protobuf_c/map.c
|
74
|
+
- ext/google/protobuf_c/map.h
|
86
75
|
- ext/google/protobuf_c/message.c
|
76
|
+
- ext/google/protobuf_c/message.h
|
87
77
|
- ext/google/protobuf_c/protobuf.c
|
88
78
|
- ext/google/protobuf_c/protobuf.h
|
89
79
|
- ext/google/protobuf_c/repeated_field.c
|
90
|
-
- ext/google/protobuf_c/
|
91
|
-
- ext/google/protobuf_c/upb.c
|
92
|
-
- 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
|
93
83
|
- ext/google/protobuf_c/wrap_memcpy.c
|
94
84
|
- lib/google/protobuf.rb
|
95
85
|
- lib/google/protobuf/any_pb.rb
|
96
86
|
- lib/google/protobuf/api_pb.rb
|
87
|
+
- lib/google/protobuf/descriptor_dsl.rb
|
88
|
+
- lib/google/protobuf/descriptor_pb.rb
|
97
89
|
- lib/google/protobuf/duration_pb.rb
|
98
90
|
- lib/google/protobuf/empty_pb.rb
|
99
91
|
- lib/google/protobuf/field_mask_pb.rb
|
@@ -112,7 +104,7 @@ homepage: https://developers.google.com/protocol-buffers
|
|
112
104
|
licenses:
|
113
105
|
- BSD-3-Clause
|
114
106
|
metadata:
|
115
|
-
source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.
|
107
|
+
source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.19.3/ruby
|
116
108
|
post_install_message:
|
117
109
|
rdoc_options: []
|
118
110
|
require_paths:
|
@@ -128,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
120
|
- !ruby/object:Gem::Version
|
129
121
|
version: '0'
|
130
122
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
123
|
+
rubygems_version: 3.3.4
|
132
124
|
signing_key:
|
133
125
|
specification_version: 4
|
134
126
|
summary: Protocol Buffers
|