rspec-expectations 3.13.0 → 3.13.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/Changelog.md +167 -134
- data/README.md +10 -4
- data/lib/rspec/expectations/block_snippet_extractor.rb +2 -0
- data/lib/rspec/expectations/configuration.rb +28 -14
- data/lib/rspec/expectations/failure_aggregator.rb +7 -0
- data/lib/rspec/expectations/handler.rb +4 -5
- data/lib/rspec/expectations/version.rb +1 -1
- data/lib/rspec/matchers/built_in/base_matcher.rb +4 -18
- data/lib/rspec/matchers/built_in/change.rb +2 -0
- data/lib/rspec/matchers/built_in/compound.rb +4 -1
- data/lib/rspec/matchers/built_in/contain_exactly.rb +2 -0
- data/lib/rspec/matchers/built_in/count_expectation.rb +2 -0
- data/lib/rspec/matchers/built_in/has.rb +29 -2
- data/lib/rspec/matchers/built_in/include.rb +5 -0
- data/lib/rspec/matchers/built_in/match.rb +14 -0
- data/lib/rspec/matchers/built_in/raise_error.rb +5 -1
- data/lib/rspec/matchers/built_in/satisfy.rb +2 -0
- data/lib/rspec/matchers/dsl.rb +6 -5
- data/lib/rspec/matchers/english_phrasing.rb +2 -0
- data/lib/rspec/matchers.rb +2 -0
- data.tar.gz.sig +0 -0
- metadata +21 -81
- metadata.gz.sig +2 -2
data/README.md
CHANGED
@@ -13,7 +13,9 @@ If you want to use rspec-expectations with rspec, just install the rspec gem
|
|
13
13
|
and RubyGems will also install rspec-expectations for you (along with
|
14
14
|
rspec-core and rspec-mocks):
|
15
15
|
|
16
|
-
|
16
|
+
```shell
|
17
|
+
gem install rspec
|
18
|
+
```
|
17
19
|
|
18
20
|
Want to run against the `main` branch? You'll need to include the dependent
|
19
21
|
RSpec repos as well. Add the following to your `Gemfile`:
|
@@ -27,7 +29,9 @@ end
|
|
27
29
|
If you want to use rspec-expectations with another tool, like Test::Unit,
|
28
30
|
Minitest, or Cucumber, you can install it directly:
|
29
31
|
|
30
|
-
|
32
|
+
```shell
|
33
|
+
gem install rspec-expectations
|
34
|
+
```
|
31
35
|
|
32
36
|
## Contributing
|
33
37
|
|
@@ -67,8 +71,10 @@ The `describe` and `it` methods come from rspec-core. The `Order`, `LineItem`,
|
|
67
71
|
expresses an expected outcome. If `order.total == Money.new(5.55, :USD)`, then
|
68
72
|
the example passes. If not, it fails with a message like:
|
69
73
|
|
70
|
-
|
71
|
-
|
74
|
+
```
|
75
|
+
expected: #<Money @value=5.55 @currency=:USD>
|
76
|
+
got: #<Money @value=1.11 @currency=:USD>
|
77
|
+
```
|
72
78
|
|
73
79
|
## Built-in matchers
|
74
80
|
|
@@ -46,11 +46,13 @@ module RSpec
|
|
46
46
|
RSpec.world.source_from_file(file_path)
|
47
47
|
end
|
48
48
|
else
|
49
|
+
# :nocov:
|
49
50
|
RSpec::Support.require_rspec_support 'source'
|
50
51
|
def source
|
51
52
|
raise TargetNotFoundError unless File.exist?(file_path)
|
52
53
|
@source ||= RSpec::Support::Source.from_file(file_path)
|
53
54
|
end
|
55
|
+
# :nocov:
|
54
56
|
end
|
55
57
|
|
56
58
|
def file_path
|
@@ -89,6 +89,7 @@ module RSpec
|
|
89
89
|
::RSpec.configuration.color_enabled?
|
90
90
|
end
|
91
91
|
else
|
92
|
+
# :nocov:
|
92
93
|
# Indicates whether or not diffs should be colored.
|
93
94
|
# Delegates to rspec-core's color option if rspec-core
|
94
95
|
# is loaded; otherwise you can set it here.
|
@@ -100,8 +101,11 @@ module RSpec
|
|
100
101
|
def color?
|
101
102
|
defined?(@color) && @color
|
102
103
|
end
|
104
|
+
# :nocov:
|
103
105
|
end
|
104
106
|
|
107
|
+
# :nocov: Because this is only really _useful_ on 1.8, and hard to test elsewhere.
|
108
|
+
#
|
105
109
|
# Adds `should` and `should_not` to the given classes
|
106
110
|
# or modules. This can be used to ensure `should` works
|
107
111
|
# properly on things like proxy objects (particular
|
@@ -114,6 +118,7 @@ module RSpec
|
|
114
118
|
Expectations::Syntax.enable_should(mod)
|
115
119
|
end
|
116
120
|
end
|
121
|
+
# :nocov:
|
117
122
|
|
118
123
|
# Sets or gets the backtrace formatter. The backtrace formatter should
|
119
124
|
# implement `#format_backtrace(Array<String>)`. This is used
|
@@ -174,11 +179,18 @@ module RSpec
|
|
174
179
|
# no-op, handler is something else
|
175
180
|
end
|
176
181
|
end
|
182
|
+
|
183
|
+
# Configures what RSpec will do about matcher use which would potentially cause
|
184
|
+
# false positives in tests. Defaults to `:warn` since this is generally the desired behavior,
|
185
|
+
# but can also be set to `:raise` or `:nothing`.
|
177
186
|
#
|
178
|
-
#
|
179
|
-
#
|
180
|
-
#
|
181
|
-
#
|
187
|
+
# @overload on_potential_false_positives
|
188
|
+
# @return [Symbol] the behavior setting
|
189
|
+
# @overload on_potential_false_positives=(value)
|
190
|
+
# @param [Symbol] behavior can be set to `:warn`, `:raise` or `:nothing`
|
191
|
+
# @return [Symbol] the behavior setting
|
192
|
+
attr_reader :on_potential_false_positives
|
193
|
+
|
182
194
|
def on_potential_false_positives=(behavior)
|
183
195
|
unless FALSE_POSITIVE_BEHAVIOURS.key?(behavior)
|
184
196
|
raise ArgumentError, "Supported values are: #{FALSE_POSITIVE_BEHAVIOURS.keys}"
|
@@ -189,22 +201,24 @@ module RSpec
|
|
189
201
|
# Configures RSpec to check predicate matchers to `be(true)` / `be(false)` (strict),
|
190
202
|
# or `be_truthy` / `be_falsey` (not strict).
|
191
203
|
# Historically, the default was `false`, but `true` is recommended.
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
204
|
+
#
|
205
|
+
# @overload strict_predicate_matchers
|
206
|
+
# @return [Boolean]
|
207
|
+
# @overload strict_predicate_matchers?
|
208
|
+
# @return [Boolean]
|
209
|
+
# @overload strict_predicate_matchers=(value)
|
210
|
+
# @param [Boolean] value
|
197
211
|
attr_reader :strict_predicate_matchers
|
198
212
|
|
213
|
+
def strict_predicate_matchers=(value)
|
214
|
+
raise ArgumentError, "Pass `true` or `false`" unless value == true || value == false
|
215
|
+
@strict_predicate_matchers = value
|
216
|
+
end
|
217
|
+
|
199
218
|
def strict_predicate_matchers?
|
200
219
|
@strict_predicate_matchers
|
201
220
|
end
|
202
221
|
|
203
|
-
# Indicates what RSpec will do about matcher use which will
|
204
|
-
# potentially cause false positives in tests, generally you want to
|
205
|
-
# avoid such scenarios so this defaults to `true`.
|
206
|
-
attr_reader :on_potential_false_positives
|
207
|
-
|
208
222
|
# Indicates whether RSpec will warn about matcher use which will
|
209
223
|
# potentially cause false positives in tests, generally you want to
|
210
224
|
# avoid such scenarios so this defaults to `true`.
|
@@ -6,6 +6,10 @@ module RSpec
|
|
6
6
|
|
7
7
|
# @private
|
8
8
|
class AggregatedFailure
|
9
|
+
# :nocov:
|
10
|
+
# `inspect` was apparently used by some versions early in ruby 3 while constructing
|
11
|
+
# NoMethodError, but seems to be no longer.
|
12
|
+
#
|
9
13
|
# @private
|
10
14
|
MESSAGE =
|
11
15
|
'AggregatedFailure: This method caused a failure which has been ' \
|
@@ -15,6 +19,7 @@ module RSpec
|
|
15
19
|
def inspect
|
16
20
|
MESSAGE
|
17
21
|
end
|
22
|
+
# :nocov:
|
18
23
|
end
|
19
24
|
|
20
25
|
AGGREGATED_FAILURE = AggregatedFailure.new
|
@@ -75,11 +80,13 @@ module RSpec
|
|
75
80
|
# a backtrace that has a continuous common section with the raised `MultipleExpectationsNotMetError`,
|
76
81
|
# so that rspec-core's truncation logic can work properly on it to list the backtrace
|
77
82
|
# relative to the `aggregate_failures` block.
|
83
|
+
# :nocov:
|
78
84
|
def assign_backtrace(failure)
|
79
85
|
raise failure
|
80
86
|
rescue failure.class => e
|
81
87
|
failure.set_backtrace(e.backtrace)
|
82
88
|
end
|
89
|
+
# :nocov:
|
83
90
|
else
|
84
91
|
# Using `caller` performs better (and is simpler) than `raise` on most Rubies.
|
85
92
|
def assign_backtrace(failure)
|
@@ -4,11 +4,10 @@ module RSpec
|
|
4
4
|
module ExpectationHelper
|
5
5
|
def self.check_message(msg)
|
6
6
|
unless msg.nil? || msg.respond_to?(:to_str) || msg.respond_to?(:call)
|
7
|
-
|
8
|
-
"
|
9
|
-
msg.inspect
|
10
|
-
|
11
|
-
].join
|
7
|
+
RSpec.warning(
|
8
|
+
"ignoring the provided expectation message argument" \
|
9
|
+
"(#{ msg.inspect }) since it is not a string or a proc"
|
10
|
+
)
|
12
11
|
end
|
13
12
|
end
|
14
13
|
|
@@ -124,24 +124,6 @@ module RSpec
|
|
124
124
|
end
|
125
125
|
private_class_method :underscore
|
126
126
|
|
127
|
-
private
|
128
|
-
|
129
|
-
def assert_ivars(*expected_ivars)
|
130
|
-
return unless (expected_ivars - present_ivars).any?
|
131
|
-
ivar_list = EnglishPhrasing.list(expected_ivars)
|
132
|
-
raise "#{self.class.name} needs to supply#{ivar_list}"
|
133
|
-
end
|
134
|
-
|
135
|
-
if RUBY_VERSION.to_f < 1.9
|
136
|
-
# :nocov:
|
137
|
-
def present_ivars
|
138
|
-
instance_variables.map(&:to_sym)
|
139
|
-
end
|
140
|
-
# :nocov:
|
141
|
-
else
|
142
|
-
alias present_ivars instance_variables
|
143
|
-
end
|
144
|
-
|
145
127
|
# @private
|
146
128
|
module HashFormatting
|
147
129
|
# `{ :a => 5, :b => 2 }.inspect` produces:
|
@@ -174,9 +156,11 @@ module RSpec
|
|
174
156
|
else
|
175
157
|
# @api private
|
176
158
|
# @return [Boolean] False always as the curent Ruby version does not support String encoding
|
159
|
+
# :nocov:
|
177
160
|
def string_encoding_differs?
|
178
161
|
false
|
179
162
|
end
|
163
|
+
# :nocov:
|
180
164
|
end
|
181
165
|
module_function :string_encoding_differs?
|
182
166
|
|
@@ -193,9 +177,11 @@ module RSpec
|
|
193
177
|
# Formats a String's encoding as a human readable string
|
194
178
|
# @param _value [String]
|
195
179
|
# @return [nil] nil as the curent Ruby version does not support String encoding
|
180
|
+
# :nocov:
|
196
181
|
def format_encoding(_value)
|
197
182
|
nil
|
198
183
|
end
|
184
|
+
# :nocov:
|
199
185
|
end
|
200
186
|
module_function :format_encoding
|
201
187
|
end
|
@@ -77,8 +77,11 @@ module RSpec
|
|
77
77
|
def match(_expected, actual)
|
78
78
|
evaluator_klass = if supports_block_expectations? && Proc === actual
|
79
79
|
NestedEvaluator
|
80
|
-
|
80
|
+
elsif supports_value_expectations?
|
81
81
|
SequentialEvaluator
|
82
|
+
else
|
83
|
+
# Can't raise an ArgumentError in this context, as it's rescued
|
84
|
+
raise "Block and value matchers can't be combined in a compound expectation (#{matcher_1.description}, #{matcher_2.description})"
|
82
85
|
end
|
83
86
|
|
84
87
|
@evaluator = evaluator_klass.new(actual, matcher_1, matcher_2)
|
@@ -108,12 +108,14 @@ module RSpec
|
|
108
108
|
end
|
109
109
|
|
110
110
|
if RUBY_VERSION == "1.8.7"
|
111
|
+
# :nocov:
|
111
112
|
def to_a_disallowed?(object)
|
112
113
|
case object
|
113
114
|
when NilClass, String then true
|
114
115
|
else Kernel == RSpec::Support.method_handle_for(object, :to_a).owner
|
115
116
|
end
|
116
117
|
end
|
118
|
+
# :nocov:
|
117
119
|
else
|
118
120
|
def to_a_disallowed?(object)
|
119
121
|
NilClass === object
|
@@ -46,8 +46,27 @@ module RSpec
|
|
46
46
|
|
47
47
|
private
|
48
48
|
|
49
|
+
# Catch a semi-frequent typo - if you have strict_predicate_matchers disabled and
|
50
|
+
# expect(spy).to have_receieveddd(:foo) it would be evergreen - the dynamic matcher
|
51
|
+
# queries `has_receiveddd?`, the spy _fakes_ the method, returning its (truthy) self.
|
52
|
+
if defined?(RSpec::Mocks::Double)
|
53
|
+
def really_responds_to?(method)
|
54
|
+
if RSpec::Mocks::Double === @actual
|
55
|
+
@actual.respond_to?(method) && methods_include?(method)
|
56
|
+
else
|
57
|
+
@actual.respond_to?(method)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
else
|
61
|
+
# :nocov:
|
62
|
+
def really_responds_to?(method)
|
63
|
+
@actual.respond_to?(method)
|
64
|
+
end
|
65
|
+
# :nocov:
|
66
|
+
end
|
67
|
+
|
49
68
|
def predicate_accessible?
|
50
|
-
|
69
|
+
really_responds_to?(predicate)
|
51
70
|
end
|
52
71
|
|
53
72
|
# support 1.8.7, evaluate once at load time for performance
|
@@ -56,11 +75,19 @@ module RSpec
|
|
56
75
|
def private_predicate?
|
57
76
|
@actual.private_methods.include? predicate.to_s
|
58
77
|
end
|
78
|
+
|
79
|
+
def methods_include?(method)
|
80
|
+
@actual.methods.include?(method.to_s)
|
81
|
+
end
|
59
82
|
# :nocov:
|
60
83
|
else
|
61
84
|
def private_predicate?
|
62
85
|
@actual.private_methods.include? predicate
|
63
86
|
end
|
87
|
+
|
88
|
+
def methods_include?(method)
|
89
|
+
@actual.methods.include?(method)
|
90
|
+
end
|
64
91
|
end
|
65
92
|
|
66
93
|
def predicate_result
|
@@ -155,7 +182,7 @@ module RSpec
|
|
155
182
|
end
|
156
183
|
|
157
184
|
def predicate_accessible?
|
158
|
-
super ||
|
185
|
+
super || really_responds_to?(present_tense_predicate)
|
159
186
|
end
|
160
187
|
|
161
188
|
def present_tense_predicate
|
@@ -13,6 +13,7 @@ module RSpec
|
|
13
13
|
|
14
14
|
# @api private
|
15
15
|
def initialize(*expecteds)
|
16
|
+
raise(ArgumentError, 'include() is not supported, please supply an argument') if expecteds.empty?
|
16
17
|
@expecteds = expecteds
|
17
18
|
end
|
18
19
|
|
@@ -165,6 +166,7 @@ module RSpec
|
|
165
166
|
end
|
166
167
|
|
167
168
|
def actual_collection_includes?(expected_item)
|
169
|
+
return actual.scan(expected_item).size > 0 if Regexp === expected_item && String === actual
|
168
170
|
return true if actual.include?(expected_item)
|
169
171
|
|
170
172
|
# String lacks an `any?` method...
|
@@ -174,9 +176,11 @@ module RSpec
|
|
174
176
|
end
|
175
177
|
|
176
178
|
if RUBY_VERSION < '1.9'
|
179
|
+
# :nocov:
|
177
180
|
def count_enumerable(expected_item)
|
178
181
|
actual.select { |value| values_match?(expected_item, value) }.size
|
179
182
|
end
|
183
|
+
# :nocov:
|
180
184
|
else
|
181
185
|
def count_enumerable(expected_item)
|
182
186
|
actual.count { |value| values_match?(expected_item, value) }
|
@@ -197,6 +201,7 @@ module RSpec
|
|
197
201
|
|
198
202
|
def diff_would_wrongly_highlight_matched_item?
|
199
203
|
return false unless actual.is_a?(String) && expected.is_a?(Array)
|
204
|
+
return false if Regexp === expecteds.first
|
200
205
|
|
201
206
|
lines = actual.split("\n")
|
202
207
|
expected.any? do |str|
|
@@ -33,11 +33,23 @@ module RSpec
|
|
33
33
|
self
|
34
34
|
end
|
35
35
|
|
36
|
+
# @api private
|
37
|
+
# @return [String]
|
38
|
+
def failure_message
|
39
|
+
if Array === expected && !(actual.respond_to?(:to_a) || actual.respond_to?(:to_ary))
|
40
|
+
return "expected a collection that can be converted to an array with " \
|
41
|
+
"`#to_ary` or `#to_a`, but got #{actual_formatted}"
|
42
|
+
end
|
43
|
+
|
44
|
+
super
|
45
|
+
end
|
46
|
+
|
36
47
|
private
|
37
48
|
|
38
49
|
def match(expected, actual)
|
39
50
|
return match_captures(expected, actual) if @expected_captures
|
40
51
|
return true if values_match?(expected, actual)
|
52
|
+
return false if Array === expected
|
41
53
|
return false unless can_safely_call_match?(expected, actual)
|
42
54
|
actual.match(expected)
|
43
55
|
end
|
@@ -78,9 +90,11 @@ module RSpec
|
|
78
90
|
# @api private
|
79
91
|
# Returns match data names for named captures
|
80
92
|
# @return Array
|
93
|
+
# :nocov:
|
81
94
|
def names
|
82
95
|
[]
|
83
96
|
end
|
97
|
+
# :nocov:
|
84
98
|
else
|
85
99
|
# @api private
|
86
100
|
# Returns match data names for named captures
|
@@ -13,6 +13,10 @@ module RSpec
|
|
13
13
|
# argument. We can't use `nil` for that because we need to warn when `nil` is
|
14
14
|
# passed in a different way. It's an Object, not a Module, since Module's `===`
|
15
15
|
# does not evaluate to true when compared to itself.
|
16
|
+
#
|
17
|
+
# Note; this _is_ the default value supplied for expected_error_or_message, but
|
18
|
+
# because there are two method-calls involved, that default is actually supplied
|
19
|
+
# in the definition of the _matcher_ method, `RSpec::Matchers#raise_error`
|
16
20
|
UndefinedValue = Object.new.freeze
|
17
21
|
|
18
22
|
def initialize(expected_error_or_message, expected_message, &block)
|
@@ -25,7 +29,7 @@ module RSpec
|
|
25
29
|
when nil, UndefinedValue
|
26
30
|
@expected_error = Exception
|
27
31
|
@expected_message = expected_message
|
28
|
-
when String
|
32
|
+
when String, Regexp
|
29
33
|
@expected_error = Exception
|
30
34
|
@expected_message = expected_error_or_message
|
31
35
|
else
|
data/lib/rspec/matchers/dsl.rb
CHANGED
@@ -467,11 +467,12 @@ module RSpec
|
|
467
467
|
@chained_method_clauses = []
|
468
468
|
@block_arg = block_arg
|
469
469
|
|
470
|
-
klass =
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
470
|
+
klass =
|
471
|
+
class << self
|
472
|
+
# See `Macros#define_user_override` above, for an explanation.
|
473
|
+
include(@user_method_defs = Module.new)
|
474
|
+
self
|
475
|
+
end
|
475
476
|
RSpec::Support::WithKeywordsWhenNeeded.class_exec(klass, *expected, &declarations)
|
476
477
|
end
|
477
478
|
|
@@ -45,12 +45,14 @@ module RSpec
|
|
45
45
|
# So here we replace `Kernel#Array` with our own warning-free implementation for 1.8.7.
|
46
46
|
# @private
|
47
47
|
# rubocop:disable Naming/MethodName
|
48
|
+
# :nocov:
|
48
49
|
def self.Array(obj)
|
49
50
|
case obj
|
50
51
|
when Array then obj
|
51
52
|
else [obj]
|
52
53
|
end
|
53
54
|
end
|
55
|
+
# :nocov:
|
54
56
|
# rubocop:enable Naming/MethodName
|
55
57
|
end
|
56
58
|
end
|
data/lib/rspec/matchers.rb
CHANGED
@@ -1018,6 +1018,7 @@ module RSpec
|
|
1018
1018
|
# than _before_, like `append_features`. It's important we check this before
|
1019
1019
|
# in order to find the cases where it was already previously included.
|
1020
1020
|
# @api private
|
1021
|
+
# :nocov:
|
1021
1022
|
def append_features(mod)
|
1022
1023
|
return super if mod < self # `mod < self` indicates a re-inclusion.
|
1023
1024
|
|
@@ -1038,6 +1039,7 @@ module RSpec
|
|
1038
1039
|
|
1039
1040
|
super
|
1040
1041
|
end
|
1042
|
+
# :nocov:
|
1041
1043
|
end
|
1042
1044
|
end
|
1043
1045
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-expectations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.13.
|
4
|
+
version: 3.13.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Baker
|
8
8
|
- David Chelimsky
|
9
9
|
- Myron Marston
|
10
|
-
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain:
|
13
12
|
- |
|
14
13
|
-----BEGIN CERTIFICATE-----
|
15
|
-
|
14
|
+
MIIFvjCCA6agAwIBAgIJAPXjfUbCjdXVMA0GCSqGSIb3DQEBCwUAMIGAMQswCQYD
|
16
15
|
VQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEO
|
17
16
|
MAwGA1UECgwFUlNwZWMxEzARBgNVBAMMCnJzcGVjLmluZm8xJTAjBgkqhkiG9w0B
|
18
|
-
|
19
|
-
|
17
|
+
CQEWFnJzcGVjQGdvb2dsZWdyb3Vwcy5jb20wHhcNMjUwMjA2MTE0NjU2WhcNMjYw
|
18
|
+
MjA2MTE0NjU2WjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24x
|
20
19
|
EDAOBgNVBAcMB1NlYXR0bGUxDjAMBgNVBAoMBVJTcGVjMRMwEQYDVQQDDApyc3Bl
|
21
20
|
Yy5pbmZvMSUwIwYJKoZIhvcNAQkBFhZyc3BlY0Bnb29nbGVncm91cHMuY29tMIIC
|
22
21
|
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsSmjgcHaKlD0jizRJowi2bGI
|
@@ -30,22 +29,21 @@ cert_chain:
|
|
30
29
|
Xeh3EVdWY3vMB1pkhPwlsenpcmj5gOzrd54lELOVbCGHCf48iSqeflY2Lhe0pvzK
|
31
30
|
blXCJBDmtrebvus291rM/dHcbEfK1SVd5Wut/n131iouf6dnNCFskFygDcgBbthC
|
32
31
|
gpEMqf80lEmhX59VUsm0Pv6OEo+ZPHBvXPiJA6DShQh9t3YtpwyA8uVDMbT/i32u
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
+
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
F3MdtaDehhjC
|
32
|
+
2FUsqZbbJcCmkBrGposCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
33
|
+
HQYDVR0OBBYEFPPvQ5XT0Nvuhi6k+hrWVv35J+TeMA0GCSqGSIb3DQEBCwUAA4IC
|
34
|
+
AQBGBr0ll2yLrkO6IeK5Q7qZFnANaUCKfi6Of9VztZJXgKAU5KAQxyOidGktoA5N
|
35
|
+
lp+bFKudRkW8jSehqoNaNBdSZ9Bc07EGMXIhUFJZF9rq7Z2SKPwUm6EaSsBK13QR
|
36
|
+
U4K6wuaw5ZJSFzklapoGOJRGnFlnNtlhNFY6+tTwCeblwZbcuYGyGY8+Rg7GbyVl
|
37
|
+
3Tr4Gi1aS/qG/MDXKdE8HWm39dmaAMdbw6dg1VBd0JrX2VqH7xvE1dM/D3OlKrNp
|
38
|
+
gNFRNJig3Y8qPjocZR0cGkhgZoC9wribWxHSNawZm4CoV3fja2HNx9QyM7BaB+as
|
39
|
+
yuqAiBbA7vBcyc8nKATip3mxbyXYXoDD7nmO8JCPP7O/WsgG+U/B2a0kPdvYFoxE
|
40
|
+
Q0Js3GtFCuMvL+0rifqdxBOLtu0Pw9q4RvToTJIl2IR6eTgCb82B1hw9qKf7PjuL
|
41
|
+
BoEsYjjDhGw6FZvcJG8O6uj7aB+z4aF21YR74UGL7sq/RIPNNez5JI95jTGfqCPy
|
42
|
+
6yo0w3zja3yg28QK3Fj+tbOHeSLv9SDQWi/1jiPprGzbxGvbVvjvX11YZc46vkmY
|
43
|
+
AwP+qZPPf97FXXZGEGIYhhHpnj+Ltx9nCetRPiZ4rvYBcXgCWVQSg6eiEofrMwn/
|
44
|
+
AKMCABhZ1Y2eATsfMgdkmIZk7JIPZiSi6eUxPiCMP9M/pw==
|
47
45
|
-----END CERTIFICATE-----
|
48
|
-
date:
|
46
|
+
date: 2025-05-01 00:00:00.000000000 Z
|
49
47
|
dependencies:
|
50
48
|
- !ruby/object:Gem::Dependency
|
51
49
|
name: rspec-support
|
@@ -81,62 +79,6 @@ dependencies:
|
|
81
79
|
- - "<"
|
82
80
|
- !ruby/object:Gem::Version
|
83
81
|
version: '2.0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: aruba
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - "~>"
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: 0.14.10
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - "~>"
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: 0.14.10
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
name: cucumber
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - ">="
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '1.3'
|
105
|
-
type: :development
|
106
|
-
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '1.3'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: minitest
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - "~>"
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '5.2'
|
119
|
-
type: :development
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - "~>"
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '5.2'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: rake
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - ">"
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: 10.0.0
|
133
|
-
type: :development
|
134
|
-
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">"
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: 10.0.0
|
140
82
|
description: rspec-expectations provides a simple, readable API to express expected
|
141
83
|
outcomes of a code example.
|
142
84
|
email: rspec@googlegroups.com
|
@@ -203,11 +145,10 @@ licenses:
|
|
203
145
|
- MIT
|
204
146
|
metadata:
|
205
147
|
bug_tracker_uri: https://github.com/rspec/rspec-expectations/issues
|
206
|
-
changelog_uri: https://github.com/rspec/rspec-expectations/blob/v3.13.
|
148
|
+
changelog_uri: https://github.com/rspec/rspec-expectations/blob/v3.13.4/Changelog.md
|
207
149
|
documentation_uri: https://rspec.info/documentation/
|
208
150
|
mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
|
209
151
|
source_code_uri: https://github.com/rspec/rspec-expectations
|
210
|
-
post_install_message:
|
211
152
|
rdoc_options:
|
212
153
|
- "--charset=UTF-8"
|
213
154
|
require_paths:
|
@@ -223,8 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
164
|
- !ruby/object:Gem::Version
|
224
165
|
version: '0'
|
225
166
|
requirements: []
|
226
|
-
rubygems_version: 3.
|
227
|
-
signing_key:
|
167
|
+
rubygems_version: 3.6.2
|
228
168
|
specification_version: 4
|
229
|
-
summary: rspec-expectations-3.13.
|
169
|
+
summary: rspec-expectations-3.13.4
|
230
170
|
test_files: []
|