rspec-mocks 3.12.5 → 3.13.5

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.
data/README.md CHANGED
@@ -278,6 +278,8 @@ expect(double).to receive(:msg).with(1, duck_type(:abs, :div), "b") #2nd argumen
278
278
  expect(double).to receive(:msg).with(hash_including(:a => 5)) # first arg is a hash with a: 5 as one of the key-values
279
279
  expect(double).to receive(:msg).with(array_including(5)) # first arg is an array with 5 as one of the key-values
280
280
  expect(double).to receive(:msg).with(hash_excluding(:a => 5)) # first arg is a hash without a: 5 as one of the key-values
281
+ expect(double).to receive(:msg).with(start_with('a')) # any matcher, custom or from rspec-expectations
282
+ expect(double).to receive(:msg).with(satisfy { |data| data.dig(:a, :b, :c) == 5 }) # assert anything you want
281
283
  ```
282
284
 
283
285
  ## Receive Counts
@@ -156,21 +156,23 @@ module RSpec
156
156
 
157
157
  private
158
158
 
159
- def ancestor_is_an_observer?(method_name)
160
- lambda do |ancestor|
161
- unless ancestor == @klass
162
- ::RSpec::Mocks.space.
163
- any_instance_recorder_for(ancestor).already_observing?(method_name)
164
- end
165
- end
159
+ def ancestor_is_an_observer?(ancestor, method_name)
160
+ return if ancestor == @klass
161
+
162
+ ::RSpec::Mocks.space.
163
+ any_instance_recorder_for(ancestor).already_observing?(method_name)
166
164
  end
167
165
 
168
166
  def super_class_observers_for(method_name)
169
- @klass.ancestors.select(&ancestor_is_an_observer?(method_name))
167
+ @klass.ancestors.select do |ancestor|
168
+ ancestor_is_an_observer?(ancestor, method_name)
169
+ end
170
170
  end
171
171
 
172
172
  def super_class_observing?(method_name)
173
- @klass.ancestors.any?(&ancestor_is_an_observer?(method_name))
173
+ @klass.ancestors.any? do |ancestor|
174
+ ancestor_is_an_observer?(ancestor, method_name)
175
+ end
174
176
  end
175
177
 
176
178
  def normalize_chain(*args)
@@ -257,10 +259,12 @@ module RSpec
257
259
  @observed_methods << method_name
258
260
  backup_method!(method_name)
259
261
  recorder = self
262
+ method_was_private = @klass.private_method_defined?(method_name)
260
263
  @klass.__send__(:define_method, method_name) do |*args, &blk|
261
264
  recorder.playback!(self, method_name)
262
265
  __send__(method_name, *args, &blk)
263
266
  end
267
+ @klass.__send__(:private, method_name) if method_was_private
264
268
  @klass.__send__(:ruby2_keywords, method_name) if @klass.respond_to?(:ruby2_keywords, true)
265
269
  end
266
270
 
@@ -71,6 +71,16 @@ module RSpec
71
71
  HashIncludingMatcher.new(ArgumentMatchers.anythingize_lonely_keys(*args))
72
72
  end
73
73
 
74
+ # Matches a hash that doesn't include the specified key(s) or key/value.
75
+ #
76
+ # @example
77
+ # expect(object).to receive(:message).with(hash_excluding(:key => val))
78
+ # expect(object).to receive(:message).with(hash_excluding(:key))
79
+ # expect(object).to receive(:message).with(hash_excluding(:key, :key2 => :val2))
80
+ def hash_excluding(*args)
81
+ HashExcludingMatcher.new(ArgumentMatchers.anythingize_lonely_keys(*args))
82
+ end
83
+
74
84
  # Matches an array that includes the specified items at least once.
75
85
  # Ignores duplicates and additional values
76
86
  #
@@ -82,14 +92,14 @@ module RSpec
82
92
  ArrayIncludingMatcher.new(actually_an_array)
83
93
  end
84
94
 
85
- # Matches a hash that doesn't include the specified key(s) or key/value.
95
+ # Matches an array that excludes the specified items.
86
96
  #
87
97
  # @example
88
- # expect(object).to receive(:message).with(hash_excluding(:key => val))
89
- # expect(object).to receive(:message).with(hash_excluding(:key))
90
- # expect(object).to receive(:message).with(hash_excluding(:key, :key2 => :val2))
91
- def hash_excluding(*args)
92
- HashExcludingMatcher.new(ArgumentMatchers.anythingize_lonely_keys(*args))
98
+ # expect(object).to receive(:message).with(array_excluding(1,2,3))
99
+ # expect(object).to receive(:message).with(array_excluding([1,2,3]))
100
+ def array_excluding(*args)
101
+ actually_an_array = Array === args.first && args.count == 1 ? args.first : args
102
+ ArrayExcludingMatcher.new(actually_an_array)
93
103
  end
94
104
 
95
105
  alias_method :hash_not_including, :hash_excluding
@@ -236,6 +246,8 @@ module RSpec
236
246
 
237
247
  def ===(actual)
238
248
  actual = actual.uniq
249
+ return true if (actual & @expected).count >= @expected.count
250
+
239
251
  @expected.uniq.all? do |expected_element|
240
252
  actual.any? do |actual_element|
241
253
  RSpec::Support::FuzzyMatcher.values_match?(expected_element, actual_element)
@@ -258,6 +270,38 @@ module RSpec
258
270
  end
259
271
  end
260
272
 
273
+ # @private
274
+ class ArrayExcludingMatcher
275
+ def initialize(unexpected)
276
+ @unexpected = unexpected.uniq
277
+ end
278
+
279
+ def ===(actual)
280
+ actual = actual.uniq
281
+ return false unless (actual & @unexpected).empty?
282
+
283
+ actual.none? do |actual_element|
284
+ @unexpected.any? do |unexpected_element|
285
+ RSpec::Support::FuzzyMatcher.values_match?(unexpected_element, actual_element)
286
+ end
287
+ end
288
+ rescue NoMethodError
289
+ false
290
+ end
291
+
292
+ def description
293
+ "array_excluding(#{formatted_unexpected_values})"
294
+ end
295
+
296
+ private
297
+
298
+ def formatted_unexpected_values
299
+ @unexpected.map do |x|
300
+ RSpec::Support.rspec_description_for_object(x)
301
+ end.join(", ")
302
+ end
303
+ end
304
+
261
305
  # @private
262
306
  class DuckTypeMatcher
263
307
  def initialize(*methods_to_respond_to)
@@ -312,7 +356,7 @@ module RSpec
312
356
  begin
313
357
  object.class.name.include?(matcher_namespace)
314
358
  rescue NoMethodError
315
- # Some objects, like BasicObject, don't implemented standard
359
+ # Some objects, like BasicObject, don't implement standard
316
360
  # reflection methods.
317
361
  false
318
362
  end
@@ -156,7 +156,7 @@ module RSpec
156
156
  end
157
157
 
158
158
  # @private
159
- # Used to track wether we are temporarily suppressing verifying partial
159
+ # Used to track whether we are temporarily suppressing verifying partial
160
160
  # doubles with `without_partial_double_verification { ... }`
161
161
  attr_accessor :temporarily_suppress_partial_double_verification
162
162
 
@@ -68,7 +68,7 @@ module RSpec
68
68
  # counter.count # => 3
69
69
  # counter.count # => 3
70
70
  # # etc
71
- def and_return(first_value, *values)
71
+ def and_return(first_value, *values, &_block)
72
72
  raise_already_invoked_error_if_necessary(__method__)
73
73
  if negative?
74
74
  raise "`and_return` is not supported with negative message expectations"
@@ -101,12 +101,12 @@ module RSpec
101
101
  #
102
102
  # allow(api).to receive(:get_foo).and_invoke(-> { raise ApiTimeout }, -> { raise ApiTimeout }, -> { :a_foo })
103
103
  # api.get_foo # => raises ApiTimeout
104
- # api.get_foo # => rasies ApiTimeout
104
+ # api.get_foo # => raises ApiTimeout
105
105
  # api.get_foo # => :a_foo
106
106
  # api.get_foo # => :a_foo
107
107
  # api.get_foo # => :a_foo
108
108
  # # etc
109
- def and_invoke(first_proc, *procs)
109
+ def and_invoke(first_proc, *procs, &_block)
110
110
  raise_already_invoked_error_if_necessary(__method__)
111
111
  if negative?
112
112
  raise "`and_invoke` is not supported with negative message expectations"
@@ -400,6 +400,9 @@ module RSpec
400
400
  end
401
401
  alias inspect to_s
402
402
 
403
+ # Implementation details is a long module
404
+ # rubocop:disable Metrics/ModuleLength
405
+
403
406
  # @private
404
407
  # Contains the parts of `MessageExpectation` that aren't part of
405
408
  # rspec-mocks' public API. The class is very big and could really use
@@ -436,6 +439,8 @@ module RSpec
436
439
  @ordered = false
437
440
  @at_least = @at_most = @exactly = nil
438
441
 
442
+ self.invoking_internals = false
443
+
439
444
  # Initialized to nil so that we don't allocate an array for every
440
445
  # mock or stub. See also comment in `and_yield`.
441
446
  @args_to_yield = nil
@@ -471,10 +476,19 @@ module RSpec
471
476
  ruby2_keywords :safe_invoke if respond_to?(:ruby2_keywords, true)
472
477
 
473
478
  def invoke(parent_stub, *args, &block)
474
- invoke_incrementing_actual_calls_by(1, true, parent_stub, *args, &block)
479
+ if invoking_internals
480
+ safe_invoke_without_incrementing_received_count(parent_stub, *args, &block)
481
+ else
482
+ invoke_incrementing_actual_calls_by(1, true, parent_stub, *args, &block)
483
+ end
475
484
  end
476
485
  ruby2_keywords :invoke if respond_to?(:ruby2_keywords, true)
477
486
 
487
+ def safe_invoke_without_incrementing_received_count(parent_stub, *args, &block)
488
+ invoke_incrementing_actual_calls_by(0, false, parent_stub, *args, &block)
489
+ end
490
+ ruby2_keywords :safe_invoke_without_incrementing_received_count if respond_to?(:ruby2_keywords, true)
491
+
478
492
  def invoke_without_incrementing_received_count(parent_stub, *args, &block)
479
493
  invoke_incrementing_actual_calls_by(0, true, parent_stub, *args, &block)
480
494
  end
@@ -601,7 +615,24 @@ module RSpec
601
615
  @exception_source_id ||= "#{self.class.name} #{__id__}"
602
616
  end
603
617
 
618
+ def invoking_internals
619
+ RSpec::Support.thread_local_data[:"__rspec_#{object_id}_invoking_internals"]
620
+ end
621
+
622
+ def invoking_internals=(value)
623
+ # We clear the key for this rather than setting to false because otherwise the amount of
624
+ # thread local data will keep growing over the lifetime of the thread (which is a long
625
+ # time on a single threaded spec run e.g standard MRI)
626
+ if value
627
+ RSpec::Support.thread_local_data[:"__rspec_#{object_id}_invoking_internals"] = true
628
+ else
629
+ RSpec::Support.thread_local_data.delete(:"__rspec_#{object_id}_invoking_internals")
630
+ end
631
+ end
632
+
604
633
  def invoke_incrementing_actual_calls_by(increment, allowed_to_fail, parent_stub, *args, &block)
634
+ self.invoking_internals = true
635
+
605
636
  args.unshift(orig_object) if yield_receiver_to_implementation_block?
606
637
 
607
638
  if negative? || (allowed_to_fail && (@exactly || @at_most) && (@actual_received_count == @expected_received_count))
@@ -617,12 +648,15 @@ module RSpec
617
648
 
618
649
  @order_group.handle_order_constraint self
619
650
 
651
+ self.invoking_internals = false
652
+
620
653
  if implementation.present?
621
654
  implementation.call(*args, &block)
622
655
  elsif parent_stub
623
656
  parent_stub.invoke(nil, *args, &block)
624
657
  end
625
658
  ensure
659
+ self.invoking_internals = false
626
660
  @actual_received_count_write_mutex.synchronize do
627
661
  @actual_received_count += increment
628
662
  end
@@ -688,6 +722,7 @@ module RSpec
688
722
 
689
723
  include ImplementationDetails
690
724
  end
725
+ # rubocop:enable Metrics/ModuleLength
691
726
 
692
727
  # Handles the implementation of an `and_yield` declaration.
693
728
  # @private
@@ -748,6 +783,7 @@ module RSpec
748
783
 
749
784
  proc.call(*args, &block)
750
785
  end
786
+ ruby2_keywords(:call) if respond_to?(:ruby2_keywords, true)
751
787
  end
752
788
 
753
789
  # Represents a configured implementation. Takes into account
@@ -26,10 +26,7 @@ module RSpec
26
26
  # handler of the object. This accounts for cases where the user has not
27
27
  # correctly defined `respond_to?`, and also 1.8 which does not provide
28
28
  # method handles for missing methods even if `respond_to?` is correct.
29
- @original_implementation_callable ||= original_method ||
30
- Proc.new do |*args, &block|
31
- @object.__send__(:method_missing, @method_name, *args, &block)
32
- end
29
+ @original_implementation_callable ||= original_method || method_missing_block
33
30
  end
34
31
 
35
32
  alias_method :save_original_implementation_callable!, :original_implementation_callable
@@ -40,6 +37,16 @@ module RSpec
40
37
  @proxy.original_method_handle_for(method_name)
41
38
  end
42
39
 
40
+ # @private
41
+ def method_missing_block
42
+ block = Proc.new do |*args, &b|
43
+ @object.__send__(:method_missing, @method_name, *args, &b)
44
+ end
45
+ block.ruby2_keywords if block.respond_to?(:ruby2_keywords)
46
+
47
+ block
48
+ end
49
+
43
50
  # @private
44
51
  def visibility
45
52
  @proxy.visibility_for(@method_name)
@@ -1,3 +1,5 @@
1
+ RSpec::Support.require_rspec_support 'mutex'
2
+
1
3
  module RSpec
2
4
  module Mocks
3
5
  # @private
@@ -9,11 +11,6 @@ module RSpec
9
11
  end
10
12
  end
11
13
 
12
- unless defined?(Mutex)
13
- Support.require_rspec_support 'mutex'
14
- Mutex = Support::Mutex
15
- end
16
-
17
14
  # @private
18
15
  def ensure_implemented(*_args)
19
16
  # noop for basic proxies, see VerifyingProxy for behaviour.
@@ -27,7 +24,7 @@ module RSpec
27
24
  @order_group = order_group
28
25
  @error_generator = ErrorGenerator.new(object)
29
26
  @messages_received = []
30
- @messages_received_mutex = Mutex.new
27
+ @messages_received_mutex = Support::Mutex.new
31
28
  @options = options
32
29
  @null_object = false
33
30
  @method_doubles = Hash.new { |h, k| h[k] = MethodDouble.new(@object, k, self) }
@@ -115,7 +115,7 @@ module RSpec
115
115
  Matchers::Receive.new(method_name, block)
116
116
  end
117
117
 
118
- def receive_messages(message_return_value_hash)
118
+ def receive_messages(message_return_value_hash, &_block)
119
119
  matcher = Matchers::ReceiveMessages.new(message_return_value_hash)
120
120
  matcher.warn_about_block if block_given?
121
121
  matcher
@@ -49,7 +49,9 @@ module RSpec
49
49
 
50
50
  # @private
51
51
  def respond_to?(message, incl_private=false)
52
- __mock_proxy.null_object? ? true : super
52
+ return true if __mock_proxy.null_object?
53
+
54
+ super
53
55
  end
54
56
 
55
57
  # @private
@@ -36,12 +36,14 @@ module RSpec
36
36
 
37
37
  # Redefining `__send__` causes ruby to issue a warning.
38
38
  old, $VERBOSE = $VERBOSE, nil
39
+ # rubocop:disable Naming/MethodName
39
40
  def __send__(name, *args, &block)
40
41
  @__sending_message = name
41
42
  super
42
43
  ensure
43
44
  @__sending_message = nil
44
45
  end
46
+ # rubocop:enable Naming/MethodName
45
47
  ruby2_keywords :__send__ if respond_to?(:ruby2_keywords, true)
46
48
  $VERBOSE = old
47
49
 
@@ -3,7 +3,7 @@ module RSpec
3
3
  # Version information for RSpec mocks.
4
4
  module Version
5
5
  # Version of RSpec mocks currently in use in SemVer format.
6
- STRING = '3.12.5'
6
+ STRING = '3.13.5'
7
7
  end
8
8
  end
9
9
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,22 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-mocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.12.5
4
+ version: 3.13.5
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
- MIIF1TCCA72gAwIBAgIJAPXjfUbCjdXUMA0GCSqGSIb3DQEBBQUAMIGAMQswCQYD
14
+ MIIFvjCCA6agAwIBAgIJAPXjfUbCjdXVMA0GCSqGSIb3DQEBCwUAMIGAMQswCQYD
16
15
  VQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEO
17
16
  MAwGA1UECgwFUlNwZWMxEzARBgNVBAMMCnJzcGVjLmluZm8xJTAjBgkqhkiG9w0B
18
- CQEWFnJzcGVjQGdvb2dsZWdyb3Vwcy5jb20wHhcNMTQxMjIzMDkzNTIyWhcNMjQx
19
- MjIyMDkzNTIyWjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24x
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
- 2FUsqZbbJcCmkBrGposCAwEAAaNQME4wHQYDVR0OBBYEFPPvQ5XT0Nvuhi6k+hrW
34
- Vv35J+TeMB8GA1UdIwQYMBaAFPPvQ5XT0Nvuhi6k+hrWVv35J+TeMAwGA1UdEwQF
35
- MAMBAf8wDQYJKoZIhvcNAQEFBQADggIBAIqbQSWH2aAF537DKwAMB8nMFsoe24MD
36
- gtuQAyjTtbH+QBE4N2RdQF/sU7Y3PYR7nqdrCsYc3RxyqM5XXi7I3IYdpfe1RuxY
37
- +pyPzVQsPPDhMlJlCrwJsADnxlpxZlAgxYSLKOan55ihscaAWA90wqRUrf/ZJM36
38
- 8LWCPVn5teIt5aaxZWX68RMxa+AXvpbtJOBwXLkIFk3apD8CX4DhelIdw67DbkUe
39
- ghUd/u62qrnqBTVgditt7OoWIZjzh24/Fda5d0MxZyvLILGOrf5bN4cTbe/q9Cid
40
- Xrik7Upm+mu3y3yQIfrw85xybHq6iNXyYHvCdSrFfCIKrGpd/0CAdmYnJlx59Fk/
41
- UbD3Eyx4psBSkU+WKO0Uf+3zNI7N/nVeNIwU/Ft+l8l7/K+427656c+ZGWDO0Gt/
42
- BeEOSTDKP7qQ1T+JvMrBcBQo+i0cnRT10J1aoV90BhxsvWTRizIbugbaqR6Tq3bj
43
- Akt00cIlNSplL6DenIAKSh5kF7s0tRD0tC3bNkZmNjNGkdoGEcUODEpTB3RHKKiu
44
- e6k2Jg6m00z5vGFQhOnROG/QaUzMA3A3mFBe1RHFo07xd0pFeoeWL3vF69Gx9Jwp
45
- ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
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: 2023-03-30 00:00:00.000000000 Z
46
+ date: 1980-01-02 00:00:00.000000000 Z
49
47
  dependencies:
50
48
  - !ruby/object:Gem::Dependency
51
49
  name: rspec-support
@@ -53,14 +51,14 @@ dependencies:
53
51
  requirements:
54
52
  - - "~>"
55
53
  - !ruby/object:Gem::Version
56
- version: 3.12.0
54
+ version: 3.13.0
57
55
  type: :runtime
58
56
  prerelease: false
59
57
  version_requirements: !ruby/object:Gem::Requirement
60
58
  requirements:
61
59
  - - "~>"
62
60
  - !ruby/object:Gem::Version
63
- version: 3.12.0
61
+ version: 3.13.0
64
62
  - !ruby/object:Gem::Dependency
65
63
  name: diff-lcs
66
64
  requirement: !ruby/object:Gem::Requirement
@@ -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: rake
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">"
89
- - !ruby/object:Gem::Version
90
- version: 10.0.0
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">"
96
- - !ruby/object:Gem::Version
97
- version: 10.0.0
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: aruba
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '1.1'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '1.1'
126
- - !ruby/object:Gem::Dependency
127
- name: minitest
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '5.2'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '5.2'
140
82
  description: RSpec's 'test double' framework, with support for stubbing and mocking
141
83
  email: rspec@googlegroups.com
142
84
  executables: []
@@ -189,16 +131,16 @@ files:
189
131
  - lib/rspec/mocks/verifying_message_expectation.rb
190
132
  - lib/rspec/mocks/verifying_proxy.rb
191
133
  - lib/rspec/mocks/version.rb
192
- homepage: https://github.com/rspec/rspec-mocks
134
+ homepage: https://rspec.info
193
135
  licenses:
194
136
  - MIT
195
137
  metadata:
196
- bug_tracker_uri: https://github.com/rspec/rspec-mocks/issues
197
- changelog_uri: https://github.com/rspec/rspec-mocks/blob/v3.12.5/Changelog.md
138
+ bug_tracker_uri: https://github.com/rspec/rspec/issues
139
+ changelog_uri: https://github.com/rspec/rspec/blob/rspec-mocks-v3.13.5/rspec-mocks/Changelog.md
198
140
  documentation_uri: https://rspec.info/documentation/
199
141
  mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
200
- source_code_uri: https://github.com/rspec/rspec-mocks
201
- post_install_message:
142
+ rubygems_mfa_required: 'true'
143
+ source_code_uri: https://github.com/rspec/rspec/blob/rspec-mocks-v3.13.5/rspec-mocks
202
144
  rdoc_options:
203
145
  - "--charset=UTF-8"
204
146
  require_paths:
@@ -214,8 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
156
  - !ruby/object:Gem::Version
215
157
  version: '0'
216
158
  requirements: []
217
- rubygems_version: 3.4.1
218
- signing_key:
159
+ rubygems_version: 3.6.7
219
160
  specification_version: 4
220
- summary: rspec-mocks-3.12.5
161
+ summary: rspec-mocks-3.13.5
221
162
  test_files: []
metadata.gz.sig CHANGED
Binary file