rspec-expectations 3.8.0 → 3.9.0

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
- SHA1:
3
- metadata.gz: c64b53ac0865670b12407e85b12dfef41a915675
4
- data.tar.gz: 72290b7d0bfa0774d0a75ba08c9c4f87b3684e9b
2
+ SHA256:
3
+ metadata.gz: d8cb915ab51f5b587fcbaa864e697cc291ff3c1f49afd8d829837c1a9c4c4f6b
4
+ data.tar.gz: 6aa770883cacbfcf2921074a98506a0a789b4557ee6a7ea79738f008107e582d
5
5
  SHA512:
6
- metadata.gz: 9c98a819df168dca33a9a74275a8b8034d7670c22e9bf40cfa4c4e483fe0c78d1aba80ff6a846024153b8e31e60fcecfd3b8473ff12172bb58801cea842c921f
7
- data.tar.gz: 1901f329e2f9c3023e25a2bd198c0a5aa89efbbf40e33dbd25e31d56c5584bcd30472878fb07a19fa9ca24d743c7f6c60744081c76ab4aeb0081f73efaae5207
6
+ metadata.gz: fc2669ca822767874cc62c9e7cef32040f90da7cd0d4c13b1bd97fde68230f7f7019a8b717e2ebfcd223da5b9e25aaa60270c0797ba4d304def5e4ae3bb63f03
7
+ data.tar.gz: e9d7a9e1b186c1eee547c315f177181992f5be9e35c61a16a041d97901537d054943a779e0d6bd7f2502e51a1fcbf95f0f6a10eab46fcdd85bebd8be1170a369
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,72 @@
1
+ ### 3.9.0 / 2019-10-02
2
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.8.5...v3.9.0)
3
+
4
+ Enhancements:
5
+
6
+ * The `respond_to` matcher now uses the signature from `initialize` to validate checks
7
+ for `new` (unless `new` is non standard). (Jon Rowe, #1072)
8
+ * Generated descriptions for matchers now use `is expected to` rather than `should` in
9
+ line with our preferred DSL. (Pete Johns, #1080, rspec/rspec-core#2572)
10
+ * Add the ability to re-raise expectation errors when matching
11
+ with `match_when_negated` blocks. (Jon Rowe, #1130)
12
+ * Add a warning when an empty diff is produce due to identical inspect output.
13
+ (Benoit Tigeot, #1126)
14
+
15
+ ### 3.8.6 / 2019-10-07
16
+
17
+ Bug Fixes:
18
+
19
+ * Revert #1125 due to the change being incompatible with our semantic versioning
20
+ policy.
21
+
22
+ ### 3.8.5 / 2019-10-02
23
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.8.4...v3.8.5)
24
+
25
+ Bug Fixes:
26
+
27
+ * Prevent unsupported implicit block expectation syntax from being used.
28
+ (Phil Pirozhkov, #1125)
29
+
30
+ ### 3.8.4 / 2019-06-10
31
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.8.3...v3.8.4)
32
+
33
+ Bug Fixes:
34
+
35
+ * Prevent false negatives when checking objects for the methods required to run the
36
+ the `be_an_instance_of` and `be_kind_of` matchers. (Nazar Matus, #1112)
37
+
38
+ ### 3.8.3 / 2019-04-20
39
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.8.2...v3.8.3)
40
+
41
+ Bug Fixes:
42
+
43
+ * Prevent composed `all` matchers from leaking into their siblings leading to duplicate
44
+ failures. (Jamie English, #1086)
45
+ * Prevent objects which change their hash on comparison from failing change checks.
46
+ (Phil Pirozhkov, #1110)
47
+ * Issue an `ArgumentError` rather than a `NoMethodError` when `be_an_instance_of` and
48
+ `be_kind_of` matchers encounter objects not supporting those methods.
49
+ (Taichi Ishitani, #1107)
50
+
51
+ ### 3.8.2 / 2018-10-09
52
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.8.1...v3.8.2)
53
+
54
+ Bug Fixes:
55
+
56
+ * Change `include` matcher to rely on a `respond_to?(:include?)` check rather than a direct
57
+ Hash comparison before calling `to_hash` to convert to a hash. (Jordan Owens, #1073)
58
+ * Prevent unexpected call stack jumps from causing an obscure error (`IndexError`), and
59
+ replace that error with a proper informative message. (Jon Rowe, #1076)
60
+
61
+ ### 3.8.1 / 2018-08-06
62
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.8.0...v3.8.1)
63
+
64
+ Bug Fixes:
65
+
66
+ * Fix regression in `include` matcher so stopped
67
+ `expect(hash.with_indifferent_access).to include(:symbol_key)`
68
+ from working. (Eito Katagiri, #1069)
69
+
1
70
  ### 3.8.0 / 2018-08-04
2
71
  [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.7.0...v3.8.0)
3
72
 
data/README.md CHANGED
@@ -175,30 +175,45 @@ expect(1..10).to cover(3)
175
175
  ### Collection membership
176
176
 
177
177
  ```ruby
178
- expect(actual).to include(expected)
178
+ # exact order, entire collection
179
+ expect(actual).to eq(expected)
180
+
181
+ # exact order, partial collection (based on an exact position)
179
182
  expect(actual).to start_with(expected)
180
183
  expect(actual).to end_with(expected)
181
184
 
182
- expect(actual).to contain_exactly(individual, items)
183
- # ...which is the same as:
184
- expect(actual).to match_array(expected_array)
185
+ # any order, entire collection
186
+ expect(actual).to match_array(expected)
187
+
188
+ # You can also express this by passing the expected elements
189
+ # as individual arguments
190
+ expect(actual).to contain_exactly(expected_element1, expected_element2)
191
+
192
+ # any order, partial collection
193
+ expect(actual).to include(expected)
185
194
  ```
186
195
 
187
196
  #### Examples
188
197
 
189
198
  ```ruby
190
- expect([1, 2, 3]).to include(1)
191
- expect([1, 2, 3]).to include(1, 2)
192
- expect([1, 2, 3]).to start_with(1)
193
- expect([1, 2, 3]).to start_with(1, 2)
194
- expect([1, 2, 3]).to end_with(3)
195
- expect([1, 2, 3]).to end_with(2, 3)
196
- expect({:a => 'b'}).to include(:a => 'b')
197
- expect("this string").to include("is str")
198
- expect("this string").to start_with("this")
199
- expect("this string").to end_with("ring")
200
- expect([1, 2, 3]).to contain_exactly(2, 3, 1)
201
- expect([1, 2, 3]).to match_array([3, 2, 1])
199
+ expect([1, 2, 3]).to eq([1, 2, 3]) # Order dependent equality check
200
+ expect([1, 2, 3]).to include(1) # Exact ordering, partial collection matches
201
+ expect([1, 2, 3]).to include(2, 3) #
202
+ expect([1, 2, 3]).to start_with(1) # As above, but from the start of the collection
203
+ expect([1, 2, 3]).to start_with(1, 2) #
204
+ expect([1, 2, 3]).to end_with(3) # As above but from the end of the collection
205
+ expect([1, 2, 3]).to end_with(2, 3) #
206
+ expect({:a => 'b'}).to include(:a => 'b') # Matching within hashes
207
+ expect("this string").to include("is str") # Matching within strings
208
+ expect("this string").to start_with("this") #
209
+ expect("this string").to end_with("ring") #
210
+ expect([1, 2, 3]).to contain_exactly(2, 3, 1) # Order independent matches
211
+ expect([1, 2, 3]).to match_array([3, 2, 1]) #
212
+
213
+ # Order dependent compound matchers
214
+ expect(
215
+ [{:a => 'hash'},{:a => 'another'}]
216
+ ).to match([a_hash_including(:a => 'hash'), a_hash_including(:a => 'another')])
202
217
  ```
203
218
 
204
219
  ## `should` syntax
@@ -52,7 +52,7 @@ module RSpec
52
52
  end
53
53
 
54
54
  def self.verb
55
- "should"
55
+ 'is expected to'
56
56
  end
57
57
 
58
58
  def self.should_method
@@ -82,7 +82,7 @@ module RSpec
82
82
  end
83
83
 
84
84
  def self.verb
85
- "should not"
85
+ 'is expected not to'
86
86
  end
87
87
 
88
88
  def self.should_method
@@ -2,7 +2,7 @@ module RSpec
2
2
  module Expectations
3
3
  # @private
4
4
  module Version
5
- STRING = '3.8.0'
5
+ STRING = '3.9.0'
6
6
  end
7
7
  end
8
8
  end
@@ -266,9 +266,9 @@ module RSpec
266
266
  # @example
267
267
  # expect(actual).to eq(expected)
268
268
  # expect(actual).not_to eq(expected)
269
- # @return [ExpectationTarget]
270
- # @see ExpectationTarget#to
271
- # @see ExpectationTarget#not_to
269
+ # @return [Expectations::ExpectationTarget]
270
+ # @see Expectations::ExpectationTarget#to
271
+ # @see Expectations::ExpectationTarget#not_to
272
272
 
273
273
  # Allows multiple expectations in the provided block to fail, and then
274
274
  # aggregates them into a single exception, rather than aborting on the
@@ -1003,31 +1003,35 @@ module RSpec
1003
1003
  is_a_matcher?(obj) && obj.respond_to?(:description)
1004
1004
  end
1005
1005
 
1006
- if RSpec::Support::Ruby.mri? && RUBY_VERSION[0, 3] == '1.9'
1007
- # @api private
1008
- # Note that `included` doesn't work for this because it is triggered
1009
- # _after_ `RSpec::Matchers` is an ancestor of the inclusion host, rather
1010
- # than _before_, like `append_features`. It's important we check this before
1011
- # in order to find the cases where it was already previously included.
1012
- def self.append_features(mod)
1013
- return super if mod < self # `mod < self` indicates a re-inclusion.
1006
+ class << self
1007
+ private
1014
1008
 
1015
- subclasses = ObjectSpace.each_object(Class).select { |c| c < mod && c < self }
1016
- return super unless subclasses.any?
1009
+ if RSpec::Support::Ruby.mri? && RUBY_VERSION[0, 3] == '1.9'
1010
+ # Note that `included` doesn't work for this because it is triggered
1011
+ # _after_ `RSpec::Matchers` is an ancestor of the inclusion host, rather
1012
+ # than _before_, like `append_features`. It's important we check this before
1013
+ # in order to find the cases where it was already previously included.
1014
+ # @api private
1015
+ def append_features(mod)
1016
+ return super if mod < self # `mod < self` indicates a re-inclusion.
1017
1017
 
1018
- subclasses.reject! { |s| subclasses.any? { |s2| s < s2 } } # Filter to the root ancestor.
1019
- subclasses = subclasses.map { |s| "`#{s}`" }.join(", ")
1018
+ subclasses = ObjectSpace.each_object(Class).select { |c| c < mod && c < self }
1019
+ return super unless subclasses.any?
1020
1020
 
1021
- RSpec.warning "`#{self}` has been included in a superclass (`#{mod}`) " \
1022
- "after previously being included in subclasses (#{subclasses}), " \
1023
- "which can trigger infinite recursion from `super` due to an MRI 1.9 bug " \
1024
- "(https://redmine.ruby-lang.org/issues/3351). To work around this, " \
1025
- "either upgrade to MRI 2.0+, include a dup of the module (e.g. " \
1026
- "`include #{self}.dup`), or find a way to include `#{self}` in `#{mod}` " \
1027
- "before it is included in subclasses (#{subclasses}). See " \
1028
- "https://github.com/rspec/rspec-expectations/issues/814 for more info"
1021
+ subclasses.reject! { |s| subclasses.any? { |s2| s < s2 } } # Filter to the root ancestor.
1022
+ subclasses = subclasses.map { |s| "`#{s}`" }.join(", ")
1029
1023
 
1030
- super
1024
+ RSpec.warning "`#{self}` has been included in a superclass (`#{mod}`) " \
1025
+ "after previously being included in subclasses (#{subclasses}), " \
1026
+ "which can trigger infinite recursion from `super` due to an MRI 1.9 bug " \
1027
+ "(https://redmine.ruby-lang.org/issues/3351). To work around this, " \
1028
+ "either upgrade to MRI 2.0+, include a dup of the module (e.g. " \
1029
+ "`include #{self}.dup`), or find a way to include `#{self}` in `#{mod}` " \
1030
+ "before it is included in subclasses (#{subclasses}). See " \
1031
+ "https://github.com/rspec/rspec-expectations/issues/814 for more info"
1032
+
1033
+ super
1034
+ end
1031
1035
  end
1032
1036
  end
1033
1037
  end
@@ -73,6 +73,7 @@ module RSpec
73
73
 
74
74
  def initialize_copy(other)
75
75
  @matcher = @matcher.clone
76
+ @failed_objects = @failed_objects.clone
76
77
  super
77
78
  end
78
79
 
@@ -14,7 +14,11 @@ module RSpec
14
14
  private
15
15
 
16
16
  def match(expected, actual)
17
- actual.instance_of? expected
17
+ actual.instance_of?(expected)
18
+ rescue NoMethodError
19
+ raise ::ArgumentError, "The #{matcher_name} matcher requires that " \
20
+ "the actual object responds to #instance_of? method " \
21
+ "but a `NoMethodError` was encountered instead."
18
22
  end
19
23
  end
20
24
  end
@@ -8,7 +8,11 @@ module RSpec
8
8
  private
9
9
 
10
10
  def match(expected, actual)
11
- actual.kind_of? expected
11
+ actual.kind_of?(expected)
12
+ rescue NoMethodError
13
+ raise ::ArgumentError, "The #{matcher_name} matcher requires that " \
14
+ "the actual object responds to #kind_of? method " \
15
+ "but a `NoMethodError` was encountered instead."
12
16
  end
13
17
  end
14
18
  end
@@ -373,6 +373,7 @@ module RSpec
373
373
  event_proc.call
374
374
 
375
375
  @actual_after = evaluate_value_proc
376
+ @actual_hash = @actual_after.hash
376
377
  true
377
378
  end
378
379
 
@@ -387,8 +388,9 @@ module RSpec
387
388
  #
388
389
  # Note that it is not sufficient to only check the hashes; it is
389
390
  # possible for two values to be unequal (and of different classes)
390
- # but to return the same hash value.
391
- @actual_before != @actual_after || @before_hash != @actual_after.hash
391
+ # but to return the same hash value. Also, some objects may change
392
+ # their hash after being compared with `==`/`!=`.
393
+ @actual_before != @actual_after || @before_hash != @actual_hash
392
394
  end
393
395
 
394
396
  def actual_delta
@@ -154,7 +154,12 @@ module RSpec
154
154
  end
155
155
 
156
156
  def matcher_matches?(matcher)
157
- @match_results.fetch(matcher)
157
+ @match_results.fetch(matcher) do
158
+ raise ArgumentError, "Your #{matcher.description} has no match " \
159
+ "results, this can occur when an unexpected call stack or " \
160
+ "local jump occurs. Prehaps one of your matchers needs to " \
161
+ "declare `expects_call_stack_jump?` as `true`?"
162
+ end
158
163
  end
159
164
 
160
165
  private
@@ -15,14 +15,14 @@ module RSpec
15
15
  # @api private
16
16
  # @return [Boolean]
17
17
  def matches?(actual)
18
- actual = actual.to_hash if actual.respond_to?(:to_hash)
18
+ actual = actual.to_hash if convert_to_hash?(actual)
19
19
  perform_match(actual) { |v| v }
20
20
  end
21
21
 
22
22
  # @api private
23
23
  # @return [Boolean]
24
24
  def does_not_match?(actual)
25
- actual = actual.to_hash if actual.respond_to?(:to_hash)
25
+ actual = actual.to_hash if convert_to_hash?(actual)
26
26
  perform_match(actual) { |v| !v }
27
27
  end
28
28
 
@@ -139,6 +139,10 @@ module RSpec
139
139
  actual.include?(str) && lines.none? { |line| line == str }
140
140
  end
141
141
  end
142
+
143
+ def convert_to_hash?(obj)
144
+ !obj.respond_to?(:include?) && obj.respond_to?(:to_hash)
145
+ end
142
146
  end
143
147
  end
144
148
  end
@@ -125,9 +125,18 @@ module RSpec
125
125
 
126
126
  return true if expectation.empty?
127
127
 
128
- signature = Support::MethodSignature.new(Support.method_handle_for(actual, name))
128
+ Support::StrictSignatureVerifier.new(method_signature_for(actual, name)).
129
+ with_expectation(expectation).valid?
130
+ end
131
+
132
+ def method_signature_for(actual, name)
133
+ method_handle = Support.method_handle_for(actual, name)
129
134
 
130
- Support::StrictSignatureVerifier.new(signature).with_expectation(expectation).valid?
135
+ if name == :new && method_handle.owner === ::Class && ::Class === actual
136
+ Support::MethodSignature.new(actual.instance_method(:initialize))
137
+ else
138
+ Support::MethodSignature.new(method_handle)
139
+ end
131
140
  end
132
141
 
133
142
  def with_arity
@@ -147,8 +147,14 @@ module RSpec
147
147
  # is rarely necessary, but can be helpful, for example, when specifying
148
148
  # asynchronous processes that require different timeouts.
149
149
  #
150
+ # By default the match block will swallow expectation errors (e.g.
151
+ # caused by using an expectation such as `expect(1).to eq 2`), if you
152
+ # with to allow these to bubble up, pass in the option
153
+ # `:notify_expectation_failures => true`.
154
+ #
155
+ # @param [Hash] options for defining the behavior of the match block.
150
156
  # @yield [Object] actual the actual value (i.e. the value wrapped by `expect`)
151
- def match_when_negated(&match_block)
157
+ def match_when_negated(options={}, &match_block)
152
158
  define_user_override(:does_not_match?, match_block) do |actual|
153
159
  begin
154
160
  @actual = actual
@@ -156,6 +162,7 @@ module RSpec
156
162
  super(*actual_arg_for(match_block))
157
163
  end
158
164
  rescue RSpec::Expectations::ExpectationNotMetError
165
+ raise if options[:notify_expectation_failures]
159
166
  false
160
167
  end
161
168
  end
@@ -52,20 +52,29 @@ module RSpec
52
52
 
53
53
  private
54
54
 
55
- def self.diff_label_for(matcher)
56
- "Diff for (#{truncated(RSpec::Support::ObjectFormatter.format(matcher))}):"
57
- end
55
+ class << self
56
+ private
57
+
58
+ def diff_label_for(matcher)
59
+ "Diff for (#{truncated(RSpec::Support::ObjectFormatter.format(matcher))}):"
60
+ end
58
61
 
59
- def self.truncated(description)
60
- return description if description.length <= DESCRIPTION_MAX_LENGTH
61
- description[0...DESCRIPTION_MAX_LENGTH - 3] << "..."
62
+ def truncated(description)
63
+ return description if description.length <= DESCRIPTION_MAX_LENGTH
64
+ description[0...DESCRIPTION_MAX_LENGTH - 3] << "..."
65
+ end
62
66
  end
63
67
 
64
68
  def diffs(differ, actual)
65
69
  @expected_list.map do |(expected, diff_label)|
66
70
  diff = differ.diff(actual, expected)
67
71
  next if diff.strip.empty?
68
- "#{diff_label}#{diff}"
72
+ if diff == "\e[0m\n\e[0m"
73
+ "#{diff_label}\n" \
74
+ " <The diff is empty, are your objects producing identical `#inspect` output?>"
75
+ else
76
+ "#{diff_label}#{diff}"
77
+ end
69
78
  end.compact.join("\n")
70
79
  end
71
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-expectations
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Baker
@@ -45,7 +45,7 @@ cert_chain:
45
45
  ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
46
46
  F3MdtaDehhjC
47
47
  -----END CERTIFICATE-----
48
- date: 2018-08-04 00:00:00.000000000 Z
48
+ date: 2019-10-07 00:00:00.000000000 Z
49
49
  dependencies:
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: rspec-support
@@ -53,14 +53,14 @@ dependencies:
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: 3.8.0
56
+ version: 3.9.0
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: 3.8.0
63
+ version: 3.9.0
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: diff-lcs
66
66
  requirement: !ruby/object:Gem::Requirement
@@ -82,19 +82,19 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: '2.0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: rake
85
+ name: aruba
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 10.0.0
90
+ version: 0.14.10
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 10.0.0
97
+ version: 0.14.10
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: cucumber
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -110,33 +110,33 @@ dependencies:
110
110
  - !ruby/object:Gem::Version
111
111
  version: '1.3'
112
112
  - !ruby/object:Gem::Dependency
113
- name: aruba
113
+ name: minitest
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: 0.6.2
118
+ version: '5.2'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
- version: 0.6.2
125
+ version: '5.2'
126
126
  - !ruby/object:Gem::Dependency
127
- name: minitest
127
+ name: rake
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: '5.2'
132
+ version: 10.0.0
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: '5.2'
139
+ version: 10.0.0
140
140
  description: rspec-expectations provides a simple, readable API to express expected
141
141
  outcomes of a code example.
142
142
  email: rspec@googlegroups.com
@@ -200,7 +200,12 @@ files:
200
200
  homepage: https://github.com/rspec/rspec-expectations
201
201
  licenses:
202
202
  - MIT
203
- metadata: {}
203
+ metadata:
204
+ bug_tracker_uri: https://github.com/rspec/rspec-expectations/issues
205
+ changelog_uri: https://github.com/rspec/rspec-expectations/blob/v3.9.0/Changelog.md
206
+ documentation_uri: https://rspec.info/documentation/
207
+ mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
208
+ source_code_uri: https://github.com/rspec/rspec-expectations
204
209
  post_install_message:
205
210
  rdoc_options:
206
211
  - "--charset=UTF-8"
@@ -217,9 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
222
  - !ruby/object:Gem::Version
218
223
  version: '0'
219
224
  requirements: []
220
- rubyforge_project:
221
- rubygems_version: 2.6.13
225
+ rubygems_version: 3.0.6
222
226
  signing_key:
223
227
  specification_version: 4
224
- summary: rspec-expectations-3.8.0
228
+ summary: rspec-expectations-3.9.0
225
229
  test_files: []
metadata.gz.sig CHANGED
Binary file