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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +69 -0
- data/README.md +31 -16
- data/lib/rspec/expectations/handler.rb +2 -2
- data/lib/rspec/expectations/version.rb +1 -1
- data/lib/rspec/matchers.rb +28 -24
- data/lib/rspec/matchers/built_in/all.rb +1 -0
- data/lib/rspec/matchers/built_in/be_instance_of.rb +5 -1
- data/lib/rspec/matchers/built_in/be_kind_of.rb +5 -1
- data/lib/rspec/matchers/built_in/change.rb +4 -2
- data/lib/rspec/matchers/built_in/compound.rb +6 -1
- data/lib/rspec/matchers/built_in/include.rb +6 -2
- data/lib/rspec/matchers/built_in/respond_to.rb +11 -2
- data/lib/rspec/matchers/dsl.rb +8 -1
- data/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +16 -7
- metadata +21 -17
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d8cb915ab51f5b587fcbaa864e697cc291ff3c1f49afd8d829837c1a9c4c4f6b
|
4
|
+
data.tar.gz: 6aa770883cacbfcf2921074a98506a0a789b4557ee6a7ea79738f008107e582d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc2669ca822767874cc62c9e7cef32040f90da7cd0d4c13b1bd97fde68230f7f7019a8b717e2ebfcd223da5b9e25aaa60270c0797ba4d304def5e4ae3bb63f03
|
7
|
+
data.tar.gz: e9d7a9e1b186c1eee547c315f177181992f5be9e35c61a16a041d97901537d054943a779e0d6bd7f2502e51a1fcbf95f0f6a10eab46fcdd85bebd8be1170a369
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Changelog.md
CHANGED
@@ -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
|
-
|
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
|
-
|
183
|
-
|
184
|
-
|
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
|
191
|
-
expect([1, 2, 3]).to include(1,
|
192
|
-
expect([1, 2, 3]).to
|
193
|
-
expect([1, 2, 3]).to start_with(1,
|
194
|
-
expect([1, 2, 3]).to
|
195
|
-
expect([1, 2, 3]).to end_with(
|
196
|
-
expect(
|
197
|
-
expect(
|
198
|
-
expect("this string").to
|
199
|
-
expect("this string").to
|
200
|
-
expect(
|
201
|
-
expect([1, 2, 3]).to
|
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
|
-
|
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
|
-
|
85
|
+
'is expected not to'
|
86
86
|
end
|
87
87
|
|
88
88
|
def self.should_method
|
data/lib/rspec/matchers.rb
CHANGED
@@ -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
|
-
|
1007
|
-
|
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
|
-
|
1016
|
-
|
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
|
-
|
1019
|
-
|
1018
|
+
subclasses = ObjectSpace.each_object(Class).select { |c| c < mod && c < self }
|
1019
|
+
return super unless subclasses.any?
|
1020
1020
|
|
1021
|
-
|
1022
|
-
|
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
|
-
|
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
|
@@ -14,7 +14,11 @@ module RSpec
|
|
14
14
|
private
|
15
15
|
|
16
16
|
def match(expected, actual)
|
17
|
-
actual.instance_of?
|
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?
|
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
|
-
|
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
|
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
|
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
|
-
|
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
|
-
|
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
|
data/lib/rspec/matchers/dsl.rb
CHANGED
@@ -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
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
60
|
-
|
61
|
-
|
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
|
-
|
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.
|
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:
|
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.
|
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.
|
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:
|
85
|
+
name: aruba
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
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:
|
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:
|
113
|
+
name: minitest
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
116
|
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version:
|
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:
|
125
|
+
version: '5.2'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: rake
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
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:
|
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
|
-
|
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.
|
228
|
+
summary: rspec-expectations-3.9.0
|
225
229
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|