rspec-protobuf 0.3.1 → 0.4.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 067f4cadf677ad482da31b4d3dbcb66cd53e79f434807d67e0e9522144109b32
4
- data.tar.gz: fdc42f1600c8cbc1f97388a413ae81bded5cc8451e84128907854a453953d709
3
+ metadata.gz: e8d21cd1780e94292bac712a3d3245599858e31eb5c75bd3dfa653798c0c1469
4
+ data.tar.gz: 6d01c76cd09476bddb44966292e9a13407e60fb17b8d707d225eff344bc00c5a
5
5
  SHA512:
6
- metadata.gz: 548a3253d3e1c1f36e1bc00472822c61eaf6f96a02865ac71533aec137958a34bbd2d24dc5f4a170eb4949b4fcbf31f1966b62d546caf3bd3d3086b2a520a163
7
- data.tar.gz: 514ea10c3836b87c2f82bc7b6e9cefa8c94514238791b76c462cad5fdbed82fe21af8ba1ade18dc7a616846e8c863aad4d118621e50dd2f1d792179930216ccf
6
+ metadata.gz: 1c0cf6543957003dffde24c5887fec8ac59f3dd50bc537434af7ee3cd0abe6f8fa9df8e7c931391a89cc9965447a92478bc7b5a210b19235da7176bd4504de7d
7
+ data.tar.gz: 732cd107abf1fd848641b16f654b55db60b28621fcf8c163065b6590ac33ec5c7afb9ca45e834e08227d6a468e656d91d6c4116f58141aa5d3d741cc3c4e990d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ### 0.4.1 (2026-11-08)
2
+ - Fix map fields: naming one in `be_a_protobuf` raised `TypeError`, and a hash never matched one.
3
+ - RSpec matchers on repeated and map fields see plain Ruby values with defaults kept, e.g. `be_a_protobuf(messages: include(a_hash_including(msg: "")))`, the same on google-protobuf 3 and 4.
4
+ - Clearer failure output: given a type, the diff shows only the attributes (it showed `[Type, {...}]`); a type mismatch no longer diffs; the negation message names the message rather than a hash; `expect(nil).to be_a_protobuf` says `nil is not a Protobuf`.
5
+ - Fix `NoMethodError` when an expectation names something that isn't a field, such as a oneof or a method like `to_h`; it now fails to match.
6
+
7
+ ### 0.4.0 (2026-04-19)
8
+ - ruby version / gem upgrades
9
+
1
10
  ### v0.3.1 (2023-03-27)
2
11
  - bugfix
3
12
 
data/Gemfile.lock CHANGED
@@ -1,48 +1,95 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-protobuf (0.3.1)
4
+ rspec-protobuf (0.4.1)
5
5
  google-protobuf (>= 3)
6
6
  rspec-expectations (>= 3)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- byebug (11.1.3)
12
- codecov (0.6.0)
13
- simplecov (>= 0.15, < 0.22)
14
- diff-lcs (1.5.0)
15
- docile (1.4.0)
16
- google-protobuf (3.22.2)
17
- rspec (3.12.0)
18
- rspec-core (~> 3.12.0)
19
- rspec-expectations (~> 3.12.0)
20
- rspec-mocks (~> 3.12.0)
21
- rspec-core (3.12.0)
22
- rspec-support (~> 3.12.0)
23
- rspec-expectations (3.12.0)
11
+ bigdecimal (4.1.3)
12
+ date (3.5.1)
13
+ debug (1.11.1)
14
+ irb (~> 1.10)
15
+ reline (>= 0.3.8)
16
+ diff-lcs (1.6.2)
17
+ erb (6.0.4)
18
+ google-protobuf (4.36.2)
19
+ bigdecimal
20
+ rake (~> 13.3)
21
+ io-console (0.8.2)
22
+ irb (1.17.0)
23
+ pp (>= 0.6.0)
24
+ prism (>= 1.3.0)
25
+ rdoc (>= 4.0.0)
26
+ reline (>= 0.4.2)
27
+ pp (0.6.3)
28
+ prettyprint
29
+ prettyprint (0.2.0)
30
+ prism (1.9.0)
31
+ psych (5.3.1)
32
+ date
33
+ stringio
34
+ rake (13.4.2)
35
+ rdoc (7.2.0)
36
+ erb
37
+ psych (>= 4.0.0)
38
+ tsort
39
+ reline (0.6.3)
40
+ io-console (~> 0.5)
41
+ rspec (3.13.2)
42
+ rspec-core (~> 3.13.0)
43
+ rspec-expectations (~> 3.13.0)
44
+ rspec-mocks (~> 3.13.0)
45
+ rspec-core (3.13.6)
46
+ rspec-support (~> 3.13.0)
47
+ rspec-expectations (3.13.5)
24
48
  diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.12.0)
26
- rspec-mocks (3.12.1)
49
+ rspec-support (~> 3.13.0)
50
+ rspec-mocks (3.13.8)
27
51
  diff-lcs (>= 1.2.0, < 2.0)
28
- rspec-support (~> 3.12.0)
29
- rspec-support (3.12.0)
30
- simplecov (0.21.2)
31
- docile (~> 1.1)
32
- simplecov-html (~> 0.11)
33
- simplecov_json_formatter (~> 0.1)
34
- simplecov-html (0.12.3)
35
- simplecov_json_formatter (0.1.4)
52
+ rspec-support (~> 3.13.0)
53
+ rspec-support (3.13.7)
54
+ simplecov (1.3.2)
55
+ stringio (3.2.0)
56
+ tsort (0.2.0)
36
57
 
37
58
  PLATFORMS
38
59
  ruby
39
60
 
40
61
  DEPENDENCIES
41
- byebug
42
- codecov
62
+ debug
43
63
  rspec (>= 3)
44
64
  rspec-protobuf!
45
- simplecov
65
+ simplecov (>= 1)
66
+
67
+ CHECKSUMS
68
+ bigdecimal (4.1.3) sha256=61ebe1e5e559bdc3cc6f2c0ee7f427321fc838f59611c294356eb04d6e21cf66
69
+ bundler (4.0.14) sha256=d09a0a965cf772266a7e49e83610be7c2f4e49e61134c42a56804bb383cc24b8
70
+ date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
71
+ debug (1.11.1) sha256=2e0b0ac6119f2207a6f8ac7d4a73ca8eb4e440f64da0a3136c30343146e952b6
72
+ diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
73
+ erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9
74
+ google-protobuf (4.36.2) sha256=2f8daff50ae14aad36ab0ccdcf284065fa71d726c444efe114e6db82ffe62494
75
+ io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
76
+ irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
77
+ pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
78
+ prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
79
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
80
+ psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
81
+ rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
82
+ rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192
83
+ reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
84
+ rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
85
+ rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
86
+ rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
87
+ rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
88
+ rspec-protobuf (0.4.1)
89
+ rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
90
+ simplecov (1.3.2) sha256=2a22ec1759f1b8db60881a2e038758956fc69ef93ed669be0bde0678de6d0e85
91
+ stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
92
+ tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
46
93
 
47
94
  BUNDLED WITH
48
- 2.3.17
95
+ 4.0.10
data/README.md CHANGED
@@ -12,8 +12,16 @@ require "rspec/protobuf"
12
12
  subject { MyProtoMessage.new(msg: "hi") }
13
13
 
14
14
  it { is_expected.to be_a_protobuf }
15
+
16
+ # check type
17
+ it { is_expected.to be_a_protobuf(MyProtoMessage) }
18
+
19
+ # check field values
15
20
  it { is_expected.to be_a_protobuf(msg: "hi") }
16
21
  it { is_expected.to be_a_protobuf(msg: /^h/) }
22
+
23
+ # composite matching
24
+ it { expect(result).to include(data: a_protobuf(MyProtoMessage, msg: starting_with("h"))) }
17
25
  ```
18
26
 
19
27
 
@@ -21,11 +29,11 @@ it { is_expected.to be_a_protobuf(msg: /^h/) }
21
29
  Before
22
30
  ```ruby
23
31
  Failure/Error: is_expected.to have_attributes(date: { month: 2 })
24
- expected <ComplexMessage: complex: false, date: <DateMessage: type: :DATE_DEFAULT, month: 1, day: 0, year: 0>> to have attributes {:date => {:month => 2}} but had attributes {:date => <DateMessage: type: :DATE_DEFAULT, month: 1, day: 0, year: 0>}
32
+ expected <ComplexMessage: date: <DateMessage: month: 1>, numbers: [], messages: []> to have attributes {date: {month: 2}} but had attributes {date: <DateMessage: month: 1>}
25
33
  Diff:
26
34
  @@ -1 +1 @@
27
- -:date => {:month=>2},
28
- +:date => <DateMessage: type: :DATE_DEFAULT, month: 1, day: 0, year: 0>,
35
+ -:date => {month: 2},
36
+ +:date => <DateMessage: month: 1>,
29
37
  ```
30
38
 
31
39
  After
@@ -33,18 +41,20 @@ After
33
41
  Failure/Error: is_expected.to be_a_protobuf(date: { month: 2 })
34
42
  Diff:
35
43
  @@ -1 +1 @@
36
- -:date => {:month=>2},
37
- +:date => {:month=>1},
44
+ -:date => {month: 2},
45
+ +:date => {month: 1},
38
46
  ```
39
47
 
40
48
  ----
41
- ## Contributing
49
+ ## Installation
50
+
51
+ ```ruby
52
+ # Gemfile
53
+ gem "rspec-protobuf"
54
+ ```
42
55
 
43
- Yes please :)
56
+ or
44
57
 
45
- 1. Fork it
46
- 1. Create your feature branch (`git checkout -b my-feature`)
47
- 1. Ensure the tests pass (`bundle exec rspec`)
48
- 1. Commit your changes (`git commit -am 'awesome new feature'`)
49
- 1. Push your branch (`git push origin my-feature`)
50
- 1. Create a Pull Request
58
+ ```
59
+ gem install rspec-protobuf
60
+ ```
@@ -1,29 +1,42 @@
1
1
  module RSpec
2
2
  module Protobuf
3
3
  module Refinements
4
+ # Message#to_h, but keeping default-valued fields, which google-protobuf 4 drops
5
+ def self.to_h_with_defaults(value)
6
+ case value
7
+ when Google::Protobuf::MessageExts
8
+ value.class.descriptor.to_h do |field|
9
+ [ field.name.to_sym, to_h_with_defaults(field.get(value)) ]
10
+ end
11
+ when Google::Protobuf::RepeatedField
12
+ value.map { |x| to_h_with_defaults(x) }
13
+ when Google::Protobuf::Map
14
+ # Map#to_h ignores a block
15
+ res = {}
16
+ value.each { |k, v| res[k] = to_h_with_defaults(v) }
17
+ res
18
+ else
19
+ value
20
+ end
21
+ end
22
+
4
23
  refine Google::Protobuf::MessageExts do
5
24
  def include?(*args)
6
25
  expected_attrs = Hash === args.last ? args.pop : {}
7
26
 
8
27
  # ensure all enumerated keys are indeed attributes
9
- return false unless args.all? { |attr| respond_to?(attr) }
10
-
11
- # ensure all enumerated attributes are present
12
- return false unless expected_attrs.keys.all? { |attr| respond_to?(attr) }
13
-
14
- fields = Hash[
15
- self.class.descriptor.map { |f| [ f.name.to_sym, f ] }
16
- ]
28
+ return false unless args.all? { |attr| field_for(attr) }
17
29
 
18
30
  # ensure that expected attribute matches
19
- expected_attrs.all? do |expected_attr, expected_value|
20
- field_matches?(fields[expected_attr], expected_value)
31
+ expected_attrs.all? do |attr, expected|
32
+ field = field_for(attr)
33
+ field && field_matches?(field, expected)
21
34
  end
22
35
  end
23
36
 
24
37
  def matches?(**attrs)
25
38
  # ensure all enumerated attributes are present
26
- return false unless attrs.keys.all? { |attr| respond_to?(attr) }
39
+ return false unless attrs.keys.all? { |attr| field_for(attr) }
27
40
 
28
41
  # ensure that each field matches
29
42
  self.class.descriptor.all? do |field|
@@ -37,13 +50,10 @@ module RSpec
37
50
  self.class.descriptor.each do |field|
38
51
  value = field.get(self)
39
52
 
40
- if value.is_a?(Google::Protobuf::MessageExts)
41
- # recursively serialize sub-message
42
- value = value.normalized_hash
43
- end
53
+ # recursively serialize sub-message
54
+ value = value.normalized_hash if value.is_a?(Google::Protobuf::MessageExts)
44
55
 
45
- default = field.label == :repeated ? [] : field.default
46
- res[field.name.to_sym] = value unless default == value
56
+ res[field.name.to_sym] = value unless default_value?(field, value)
47
57
  end
48
58
 
49
59
  res
@@ -51,13 +61,18 @@ module RSpec
51
61
 
52
62
  private
53
63
 
64
+ # nil unless attr is a Symbol naming a field, not eg. a oneof or method
65
+ def field_for(attr)
66
+ self.class.descriptor.lookup(attr.to_s) if attr.is_a?(Symbol)
67
+ end
68
+
54
69
  def field_matches?(field, expected)
55
70
  actual = field.get(self)
56
71
 
57
- if expected.nil?
58
- # mimic protobuf behavior and convert to default value
59
- expected = field.label == :repeated ? [] : field.default
60
- elsif expected.is_a?(Symbol) && field.type == :string
72
+ # mimic protobuf behavior, where nil means the default value
73
+ return default_value?(field, actual) if expected.nil?
74
+
75
+ if expected.is_a?(Symbol) && field.type == :string
61
76
  # convert symbols to strings
62
77
  expected = expected.to_s
63
78
  end
@@ -78,19 +93,23 @@ module RSpec
78
93
  end
79
94
  end
80
95
 
96
+ def default_value?(field, value)
97
+ field.label == :repeated ? value.length.zero? : value == field.default
98
+ end
99
+
81
100
  def values_match?(actual, expected)
82
- expected === actual || if actual.is_a?(Google::Protobuf::MessageExts)
83
- case expected
84
- when Google::Protobuf::MessageExts
85
- # expected === actual
86
- when Hash
87
- # recurse
88
- actual.matches?(**expected)
89
- else
90
- # eg. RSpec matchers
91
- expected === actual.to_h
92
- end
101
+ return true if expected === actual
102
+
103
+ case actual
104
+ when Google::Protobuf::MessageExts
105
+ return actual.matches?(**expected) if expected.is_a?(Hash)
106
+ when Google::Protobuf::RepeatedField, Google::Protobuf::Map
107
+ else
108
+ return false
93
109
  end
110
+
111
+ # eg. RSpec matchers, which expect plain Ruby values
112
+ expected === Refinements.to_h_with_defaults(actual)
94
113
  end
95
114
  end
96
115
  end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Protobuf
3
- VERSION = "0.3.1"
3
+ VERSION = "0.4.1"
4
4
  end
5
5
  end
@@ -12,7 +12,7 @@ RSpec::Matchers.define :be_a_protobuf do |type = nil, **attrs|
12
12
  raise TypeError, "Expected arg to be a Google::Protobuf::MessageExts, found: #{type}"
13
13
  end
14
14
 
15
- @fail_msg = "#{actual} is not a Protobuf"
15
+ @fail_msg = "#{actual.inspect} is not a Protobuf"
16
16
  return false unless actual.is_a?(Google::Protobuf::MessageExts)
17
17
 
18
18
  # match expected message type
@@ -30,16 +30,22 @@ RSpec::Matchers.define :be_a_protobuf do |type = nil, **attrs|
30
30
  end
31
31
  end
32
32
 
33
+ return true if actual.include?(attrs)
34
+
35
+ # let the diff explain: only referenced attrs, defaults removed
33
36
  @fail_msg = ""
37
+ @diff_expected = attrs
38
+ @actual = actual.normalized_hash.slice(*attrs.keys)
39
+ false
40
+ end
34
41
 
35
- # customize differ output by removing unreferenced and default attrs
36
- @actual = actual.normalized_hash.slice(*attrs.keys).reject do |k, v|
37
- field = actual.class.descriptor.lookup(k.to_s)
38
- default = field.label == :repeated ? [] : field.default
39
- v == default
40
- end
42
+ # only an attribute mismatch has a useful diff
43
+ def diffable?
44
+ !@diff_expected.nil?
45
+ end
41
46
 
42
- actual.include?(attrs)
47
+ def expected
48
+ @diff_expected || super
43
49
  end
44
50
 
45
51
  description do
@@ -48,7 +54,11 @@ RSpec::Matchers.define :be_a_protobuf do |type = nil, **attrs|
48
54
 
49
55
  failure_message { @fail_msg }
50
56
 
51
- diffable
57
+ failure_message_when_negated do |actual|
58
+ msg = "expected #{actual} not to be #{description}"
59
+ msg += " with #{attrs}" unless attrs.empty?
60
+ msg
61
+ end
52
62
  end
53
63
 
54
64
  RSpec::Matchers.alias_matcher :a_protobuf, :be_a_protobuf
@@ -1,24 +1,27 @@
1
- package_name = File.basename(__FILE__).split(".")[0]
2
- load Dir.glob("lib/**/version.rb")[0]
3
-
4
- package = RSpec::Protobuf
5
-
1
+ require_relative "lib/rspec/protobuf/version"
6
2
 
7
3
  Gem::Specification.new do |s|
8
- s.name = package_name
9
- s.version = package.const_get "VERSION"
4
+ s.name = "rspec-protobuf"
5
+ s.version = RSpec::Protobuf::VERSION
10
6
  s.authors = ["Daniel Pepper"]
11
- s.summary = package.to_s
7
+ s.summary = "RSpec::Protobuf"
12
8
  s.description = "RSpec matchers for Protobuf"
13
- s.homepage = "https://github.com/dpep/#{package_name}"
9
+ s.homepage = "https://github.com/dpep/rspec-protobuf"
14
10
  s.license = "MIT"
15
- s.files = `git ls-files * ':!:spec'`.split("\n")
11
+ s.files = `git ls-files * ':!:spec' ':!:gemfiles'`.split("\n")
12
+
13
+ s.metadata = {
14
+ "changelog_uri" => "#{s.homepage}/blob/main/CHANGELOG.md",
15
+ "rubygems_mfa_required" => "true",
16
+ "source_code_uri" => s.homepage,
17
+ }
18
+
19
+ s.required_ruby_version = ">= 3.3"
16
20
 
17
21
  s.add_dependency "google-protobuf", ">= 3"
18
22
  s.add_dependency "rspec-expectations", ">= 3"
19
23
 
20
- s.add_development_dependency "byebug"
21
- s.add_development_dependency "codecov"
24
+ s.add_development_dependency "debug"
22
25
  s.add_development_dependency "rspec", ">= 3"
23
- s.add_development_dependency "simplecov"
26
+ s.add_development_dependency "simplecov", ">= 1"
24
27
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-03-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: google-protobuf
@@ -39,21 +38,7 @@ dependencies:
39
38
  - !ruby/object:Gem::Version
40
39
  version: '3'
41
40
  - !ruby/object:Gem::Dependency
42
- name: byebug
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: codecov
41
+ name: debug
57
42
  requirement: !ruby/object:Gem::Requirement
58
43
  requirements:
59
44
  - - ">="
@@ -86,16 +71,15 @@ dependencies:
86
71
  requirements:
87
72
  - - ">="
88
73
  - !ruby/object:Gem::Version
89
- version: '0'
74
+ version: '1'
90
75
  type: :development
91
76
  prerelease: false
92
77
  version_requirements: !ruby/object:Gem::Requirement
93
78
  requirements:
94
79
  - - ">="
95
80
  - !ruby/object:Gem::Version
96
- version: '0'
81
+ version: '1'
97
82
  description: RSpec matchers for Protobuf
98
- email:
99
83
  executables: []
100
84
  extensions: []
101
85
  extra_rdoc_files: []
@@ -113,8 +97,10 @@ files:
113
97
  homepage: https://github.com/dpep/rspec-protobuf
114
98
  licenses:
115
99
  - MIT
116
- metadata: {}
117
- post_install_message:
100
+ metadata:
101
+ changelog_uri: https://github.com/dpep/rspec-protobuf/blob/main/CHANGELOG.md
102
+ rubygems_mfa_required: 'true'
103
+ source_code_uri: https://github.com/dpep/rspec-protobuf
118
104
  rdoc_options: []
119
105
  require_paths:
120
106
  - lib
@@ -122,15 +108,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
108
  requirements:
123
109
  - - ">="
124
110
  - !ruby/object:Gem::Version
125
- version: '0'
111
+ version: '3.3'
126
112
  required_rubygems_version: !ruby/object:Gem::Requirement
127
113
  requirements:
128
114
  - - ">="
129
115
  - !ruby/object:Gem::Version
130
116
  version: '0'
131
117
  requirements: []
132
- rubygems_version: 3.3.7
133
- signing_key:
118
+ rubygems_version: 3.6.9
134
119
  specification_version: 4
135
- summary: Gem::Specification::RSpec::Protobuf
120
+ summary: RSpec::Protobuf
136
121
  test_files: []