rspec-mocks 3.6.0 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0194543e201f9d8cb6c477dcdeaf678b3f5ce442
4
- data.tar.gz: bd1e7cae196ec0d61c4dd714c4371b27e3d8c9f1
2
+ SHA256:
3
+ metadata.gz: f53d2fe5ab69778d6528b80a08aaa48869a527c5185f715671c0d48beecf5db4
4
+ data.tar.gz: 8e06d4be6fbc3dec6cbbdf75d141638db33653579fcd95b4869cb41b97afb4e8
5
5
  SHA512:
6
- metadata.gz: 13bfadb0ccb5f89efaa761ab93de080a4d9da94568965e55b03c53e104fb57ec283311e4395ecdb497fcff11f648b6649daaf117b1e486eced3040b1b8b04268
7
- data.tar.gz: 627998b4615c8de8e236ac46788da589e9f16acbcfe75d310af7119dff3ee69a0e1eb2981b9947e2b102d546a0c5b2fd06780fc191fb3b2362b102dbb16dc400
6
+ metadata.gz: 6863b589a173e3985263e2b49c797389e7db68912df5f6f294f23833d66cbeb72b10b9b800cca08383322f1b1775b99f7514878663b715b48d4d6e39582b4836
7
+ data.tar.gz: 320ec537f1f7708bd0fb5317ab3878cb569f2a9dbd676b8b8512f36ece73f5efc0d9f7d85bb8b6b30ac145cc5ff3f10d13212897c19e6559a475526703325e1d
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,54 @@
1
+ ### 3.9.0 / 2019-10-07
2
+ [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.8.2...v3.9.0)
3
+
4
+ Enhancements:
5
+
6
+ * Improve thread safety of message expectations by using Mutex to prevent
7
+ deadlocking errors. (Ry Biesemeyer, #1236)
8
+ * Add the ability to use `time` as an alias for `times`. For example:
9
+ `expect(Class).to receive(:method).exactly(1).time`.
10
+ (Pistos, Benoit Tigeot, #1271)
11
+
12
+ ### 3.8.2 / 2019-10-02
13
+ [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.8.1...v3.8.2)
14
+
15
+ * Allow `array_including` argument matchers to be nested.
16
+ (Emmanuel Delmas, #1291)
17
+
18
+ ### 3.8.1 / 2019-06-13
19
+ [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.8.0...v3.8.1)
20
+
21
+ Bug Fixes:
22
+
23
+ * Ensure stubbing methods does not change their visibility.
24
+ (Kevin Boschert, #1277)
25
+
26
+ ### 3.8.0 / 2018-08-04
27
+ [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.7.0...v3.8.0)
28
+
29
+ Bug Fixes:
30
+
31
+ * Issue error when encountering invalid "counted" negative message expectations.
32
+ (Sergiy Yarinovskiy, #1212)
33
+ * Ensure `allow_any_instance_of` and `expect_any_instance_of` can be temporarily
34
+ supressed. (Jon Rowe, #1228)
35
+ * Ensure `expect_any_instance_of(double).to_not have_received(:some_method)`
36
+ fails gracefully (as its not supported) rather than issuing a `NoMethodError`.
37
+ (Maxim Krizhanovsky, #1231)
38
+
39
+ ### 3.7.0 / 2017-10-17
40
+ [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.6.0...v3.7.0)
41
+
42
+ Enhancements:
43
+
44
+ * Improve compatibility with `--enable-frozen-string-literal` option
45
+ on Ruby 2.3+. (Pat Allan, #1165)
46
+
47
+ Bug Fixes:
48
+
49
+ * Fix `hash_including` and `hash_excluding` so that they work against
50
+ subclasses of `Hash`. (Aaron Rosenberg, #1167)
51
+
1
52
  ### 3.6.0 / 2017-05-04
2
53
  [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v3.6.0.beta2...v3.6.0)
3
54
 
@@ -880,7 +931,8 @@ Bug fixes
880
931
  * Fix `should_receive` so that when it is called on an `as_null_object`
881
932
  double with no implementation, and there is a previous explicit stub
882
933
  for the same method, the explicit stub remains (rather than being
883
- overriden with the null object implementation--`return self`). (Myron Marston)
934
+ overridden with the null object implementation--`return self`). (Myron
935
+ Marston)
884
936
 
885
937
  ### 2.11.0 / 2012-07-07
886
938
  [Full Changelog](http://github.com/rspec/rspec-mocks/compare/v2.10.1...v2.11.0)
data/README.md CHANGED
@@ -13,7 +13,7 @@ RSpec repos as well. Add the following to your `Gemfile`:
13
13
 
14
14
  ```ruby
15
15
  %w[rspec-core rspec-expectations rspec-mocks rspec-support].each do |lib|
16
- gem lib, :git => "git://github.com/rspec/#{lib}.git", :branch => 'master'
16
+ gem lib, :git => "https://github.com/rspec/#{lib}.git", :branch => 'master'
17
17
  end
18
18
  ```
19
19
  ## Contributing
@@ -257,7 +257,7 @@ expect(double).to receive(:msg).with("B", 2, 4)
257
257
  ## Argument Matchers
258
258
 
259
259
  Arguments that are passed to `with` are compared with actual arguments
260
- received using ==. In cases in which you want to specify things about the
260
+ received using ===. In cases in which you want to specify things about the
261
261
  arguments rather than the arguments themselves, you can use any of the
262
262
  matchers that ship with rspec-expectations. They don't all make syntactic
263
263
  sense (they were primarily designed for use with RSpec::Expectations), but
@@ -285,12 +285,15 @@ expect(double).to receive(:msg).with(hash_excluding(:a => 5)) # first arg is a h
285
285
  ```ruby
286
286
  expect(double).to receive(:msg).once
287
287
  expect(double).to receive(:msg).twice
288
+ expect(double).to receive(:msg).exactly(n).time
288
289
  expect(double).to receive(:msg).exactly(n).times
289
290
  expect(double).to receive(:msg).at_least(:once)
290
291
  expect(double).to receive(:msg).at_least(:twice)
292
+ expect(double).to receive(:msg).at_least(n).time
291
293
  expect(double).to receive(:msg).at_least(n).times
292
294
  expect(double).to receive(:msg).at_most(:once)
293
295
  expect(double).to receive(:msg).at_most(:twice)
296
+ expect(double).to receive(:msg).at_most(n).time
294
297
  expect(double).to receive(:msg).at_most(n).times
295
298
  ```
296
299
 
@@ -327,7 +330,7 @@ expect(double).to receive(:msg).and_return(value)
327
330
  expect(double).to receive(:msg).exactly(3).times.and_return(value1, value2, value3)
328
331
  # returns value1 the first time, value2 the second, etc
329
332
  expect(double).to receive(:msg).and_raise(error)
330
- # error can be an instantiated object or a class
333
+ # `error` can be an instantiated object (e.g. `StandardError.new(some_arg)`) or a class (e.g. `StandardError`)
331
334
  # if it is a class, it must be instantiable with no args
332
335
  expect(double).to receive(:msg).and_throw(:msg)
333
336
  expect(double).to receive(:msg).and_yield(values, to, yield)
@@ -41,6 +41,7 @@ module RSpec
41
41
  record :thrice
42
42
  record :exactly
43
43
  record :times
44
+ record :time
44
45
  record :never
45
46
  record :at_least
46
47
  record :at_most
@@ -242,7 +242,7 @@ module RSpec
242
242
  def observe!(method_name)
243
243
  allow_no_prepended_module_definition_of(method_name)
244
244
 
245
- if RSpec::Mocks.configuration.verify_partial_doubles?
245
+ if RSpec::Mocks.configuration.verify_partial_doubles? && !Mocks.configuration.temporarily_suppress_partial_double_verification
246
246
  unless public_protected_or_private_method_defined?(method_name)
247
247
  AnyInstance.error_generator.raise_does_not_implement_error(@klass, method_name)
248
248
  end
@@ -25,7 +25,7 @@ module RSpec
25
25
  stub
26
26
  end
27
27
 
28
- InovcationOrder =
28
+ InvocationOrder =
29
29
  {
30
30
  :and_return => [:with, nil],
31
31
  :and_raise => [:with, nil],
@@ -38,7 +38,7 @@ module RSpec
38
38
  EmptyInvocationOrder = {}.freeze
39
39
 
40
40
  def invocation_order
41
- InovcationOrder
41
+ InvocationOrder
42
42
  end
43
43
 
44
44
  def verify_invocation_order(rspec_method_name, *_args, &_block)
@@ -116,7 +116,7 @@ module RSpec
116
116
 
117
117
  # @private
118
118
  def self.anythingize_lonely_keys(*args)
119
- hash = args.last.class == Hash ? args.delete_at(-1) : {}
119
+ hash = Hash === args.last ? args.delete_at(-1) : {}
120
120
  args.each { | arg | hash[arg] = AnyArgMatcher::INSTANCE }
121
121
  hash
122
122
  end
@@ -241,6 +241,8 @@ module RSpec
241
241
  RSpec::Support::FuzzyMatcher.values_match?(expected_element, actual_element)
242
242
  end
243
243
  end
244
+ rescue NoMethodError
245
+ false
244
246
  end
245
247
 
246
248
  def description
@@ -57,10 +57,10 @@ module RSpec
57
57
 
58
58
  # @private
59
59
  def raise_missing_default_stub_error(expectation, args_for_multiple_calls)
60
- message = error_message(expectation, args_for_multiple_calls)
61
- message << "\n Please stub a default value first if message might be received with other args as well. \n"
62
-
63
- __raise message
60
+ __raise(
61
+ error_message(expectation, args_for_multiple_calls) +
62
+ "\n Please stub a default value first if message might be received with other args as well. \n"
63
+ )
64
64
  end
65
65
 
66
66
  # @private
@@ -69,10 +69,10 @@ module RSpec
69
69
  end
70
70
 
71
71
  def default_error_message(expectation, expected_args, actual_args)
72
- "#{intro} received #{expectation.message.inspect} #{unexpected_arguments_message(expected_args, actual_args)}"
72
+ "#{intro} received #{expectation.message.inspect} #{unexpected_arguments_message(expected_args, actual_args)}".dup
73
73
  end
74
74
 
75
- # rubocop:disable Style/ParameterLists
75
+ # rubocop:disable Metrics/ParameterLists
76
76
  # @private
77
77
  def raise_expectation_error(message, expected_received_count, argument_list_matcher,
78
78
  actual_received_count, expectation_count_type, args,
@@ -81,20 +81,20 @@ module RSpec
81
81
  received_part = received_part_of_expectation_error(actual_received_count, args)
82
82
  __raise "(#{intro(:unwrapped)}).#{message}#{format_args(args)}\n #{expected_part}\n #{received_part}", backtrace_line, source_id
83
83
  end
84
- # rubocop:enable Style/ParameterLists
84
+ # rubocop:enable Metrics/ParameterLists
85
85
 
86
86
  # @private
87
87
  def raise_unimplemented_error(doubled_module, method_name, object)
88
88
  message = case object
89
89
  when InstanceVerifyingDouble
90
- "the %s class does not implement the instance method: %s" <<
90
+ "the %s class does not implement the instance method: %s".dup <<
91
91
  if ObjectMethodReference.for(doubled_module, method_name).implemented?
92
92
  ". Perhaps you meant to use `class_double` instead?"
93
93
  else
94
94
  ""
95
95
  end
96
96
  when ClassVerifyingDouble
97
- "the %s class does not implement the class method: %s" <<
97
+ "the %s class does not implement the class method: %s".dup <<
98
98
  if InstanceMethodReference.for(doubled_module, method_name).implemented?
99
99
  ". Perhaps you meant to use `instance_double` instead?"
100
100
  else
@@ -5,7 +5,7 @@ module RSpec
5
5
  class HaveReceived
6
6
  include Matcher
7
7
 
8
- COUNT_CONSTRAINTS = %w[exactly at_least at_most times once twice thrice]
8
+ COUNT_CONSTRAINTS = %w[exactly at_least at_most times time once twice thrice]
9
9
  ARGS_CONSTRAINTS = %w[with]
10
10
  CONSTRAINTS = COUNT_CONSTRAINTS + ARGS_CONSTRAINTS + %w[ordered]
11
11
 
@@ -76,6 +76,10 @@ module RSpec
76
76
  disallow("expect_any_instance_of")
77
77
  end
78
78
 
79
+ def setup_any_instance_negative_expectation(_subject, &_block)
80
+ disallow("expect_any_instance_of")
81
+ end
82
+
79
83
  private
80
84
 
81
85
  def disallow(type, reason="")
@@ -1,3 +1,5 @@
1
+ RSpec::Support.require_rspec_support 'mutex'
2
+
1
3
  module RSpec
2
4
  module Mocks
3
5
  # A message expectation that only allows concrete return values to be set
@@ -236,6 +238,7 @@ module RSpec
236
238
  self.inner_implementation_action = block
237
239
  self
238
240
  end
241
+ alias time times
239
242
 
240
243
  # Expect a message not to be received at all.
241
244
  #
@@ -357,6 +360,7 @@ module RSpec
357
360
  # some collaborators it delegates to for this stuff but for now this was
358
361
  # the simplest way to split the public from private stuff to make it
359
362
  # easier to publish the docs for the APIs we want published.
363
+ # rubocop:disable Metrics/ModuleLength
360
364
  module ImplementationDetails
361
365
  attr_accessor :error_generator, :implementation
362
366
  attr_reader :message
@@ -367,7 +371,7 @@ module RSpec
367
371
  # @private
368
372
  attr_reader :type
369
373
 
370
- # rubocop:disable Style/ParameterLists
374
+ # rubocop:disable Metrics/ParameterLists
371
375
  def initialize(error_generator, expectation_ordering, expected_from, method_double,
372
376
  type=:expectation, opts={}, &implementation_block)
373
377
  @type = type
@@ -378,6 +382,7 @@ module RSpec
378
382
  @orig_object = @method_double.object
379
383
  @message = @method_double.method_name
380
384
  @actual_received_count = 0
385
+ @actual_received_count_write_mutex = Support::Mutex.new
381
386
  @expected_received_count = type == :expectation ? 1 : :any
382
387
  @argument_list_matcher = ArgumentListMatcher::MATCH_ALL
383
388
  @order_group = expectation_ordering
@@ -395,7 +400,7 @@ module RSpec
395
400
  @implementation = Implementation.new
396
401
  self.inner_implementation_action = implementation_block
397
402
  end
398
- # rubocop:enable Style/ParameterLists
403
+ # rubocop:enable Metrics/ParameterLists
399
404
 
400
405
  def expected_args
401
406
  @argument_list_matcher.expected_args
@@ -536,7 +541,9 @@ module RSpec
536
541
  end
537
542
 
538
543
  def increase_actual_received_count!
539
- @actual_received_count += 1
544
+ @actual_received_count_write_mutex.synchronize do
545
+ @actual_received_count += 1
546
+ end
540
547
  end
541
548
 
542
549
  private
@@ -567,7 +574,9 @@ module RSpec
567
574
  parent_stub.invoke(nil, *args, &block)
568
575
  end
569
576
  ensure
570
- @actual_received_count += increment
577
+ @actual_received_count_write_mutex.synchronize do
578
+ @actual_received_count += increment
579
+ end
571
580
  end
572
581
 
573
582
  def has_been_invoked?
@@ -581,6 +590,7 @@ module RSpec
581
590
  end
582
591
 
583
592
  def set_expected_received_count(relativity, n)
593
+ raise "`count` is not supported with negative message expectations" if negative?
584
594
  @at_least = (relativity == :at_least)
585
595
  @at_most = (relativity == :at_most)
586
596
  @exactly = (relativity == :exactly)
@@ -625,6 +635,7 @@ module RSpec
625
635
  nil
626
636
  end
627
637
  end
638
+ # rubocop:enable Metrics/ModuleLength
628
639
 
629
640
  include ImplementationDetails
630
641
  end
@@ -650,7 +661,7 @@ module RSpec
650
661
  @error_generator.raise_wrong_arity_error(args, block_signature)
651
662
  end
652
663
 
653
- value = @eval_context ? @eval_context.instance_exec(*args, &block) : block.call(*args)
664
+ value = @eval_context ? @eval_context.instance_exec(*args, &block) : yield(*args)
654
665
  end
655
666
  value
656
667
  end
@@ -59,7 +59,7 @@ module RSpec
59
59
  return if @method_is_proxied
60
60
 
61
61
  save_original_implementation_callable!
62
- definition_target.class_exec(self, method_name, visibility) do |method_double, method_name, visibility|
62
+ definition_target.class_exec(self, method_name, @original_visibility || visibility) do |method_double, method_name, visibility|
63
63
  define_method(method_name) do |*args, &block|
64
64
  method_double.proxy_method_invoked(self, *args, &block)
65
65
  end
@@ -64,14 +64,6 @@ module RSpec
64
64
  :public
65
65
  end
66
66
 
67
- private
68
-
69
- def original_method
70
- @object_reference.when_loaded do |m|
71
- self.defined? && find_method(m)
72
- end
73
- end
74
-
75
67
  def self.instance_method_visibility_for(klass, method_name)
76
68
  if klass.public_method_defined?(method_name)
77
69
  :public
@@ -107,6 +99,14 @@ module RSpec
107
99
 
108
100
  return :public if visible
109
101
  end
102
+
103
+ private
104
+
105
+ def original_method
106
+ @object_reference.when_loaded do |m|
107
+ self.defined? && find_method(m)
108
+ end
109
+ end
110
110
  end
111
111
 
112
112
  # @private
@@ -2,12 +2,18 @@ module RSpec
2
2
  module Mocks
3
3
  # @private
4
4
  class Proxy
5
+ # @private
5
6
  SpecificMessage = Struct.new(:object, :message, :args) do
6
7
  def ==(expectation)
7
8
  expectation.orig_object == object && expectation.matches?(message, *args)
8
9
  end
9
10
  end
10
11
 
12
+ unless defined?(Mutex)
13
+ Support.require_rspec_support 'mutex'
14
+ Mutex = Support::Mutex
15
+ end
16
+
11
17
  # @private
12
18
  def ensure_implemented(*_args)
13
19
  # noop for basic proxies, see VerifyingProxy for behaviour.
@@ -19,6 +25,7 @@ module RSpec
19
25
  @order_group = order_group
20
26
  @error_generator = ErrorGenerator.new(object)
21
27
  @messages_received = []
28
+ @messages_received_mutex = Mutex.new
22
29
  @options = options
23
30
  @null_object = false
24
31
  @method_doubles = Hash.new { |h, k| h[k] = MethodDouble.new(@object, k, self) }
@@ -89,27 +96,31 @@ module RSpec
89
96
  @error_generator.raise_expectation_on_unstubbed_method(expected_method_name)
90
97
  end
91
98
 
92
- @messages_received.each do |(actual_method_name, args, received_block)|
93
- next unless expectation.matches?(actual_method_name, *args)
99
+ @messages_received_mutex.synchronize do
100
+ @messages_received.each do |(actual_method_name, args, received_block)|
101
+ next unless expectation.matches?(actual_method_name, *args)
94
102
 
95
- expectation.safe_invoke(nil)
96
- block.call(*args, &received_block) if block
103
+ expectation.safe_invoke(nil)
104
+ block.call(*args, &received_block) if block
105
+ end
97
106
  end
98
107
  end
99
108
 
100
109
  # @private
101
110
  def check_for_unexpected_arguments(expectation)
102
- return if @messages_received.empty?
111
+ @messages_received_mutex.synchronize do
112
+ return if @messages_received.empty?
103
113
 
104
- return if @messages_received.any? { |method_name, args, _| expectation.matches?(method_name, *args) }
114
+ return if @messages_received.any? { |method_name, args, _| expectation.matches?(method_name, *args) }
105
115
 
106
- name_but_not_args, others = @messages_received.partition do |(method_name, args, _)|
107
- expectation.matches_name_but_not_args(method_name, *args)
108
- end
116
+ name_but_not_args, others = @messages_received.partition do |(method_name, args, _)|
117
+ expectation.matches_name_but_not_args(method_name, *args)
118
+ end
109
119
 
110
- return if name_but_not_args.empty? && !others.empty?
120
+ return if name_but_not_args.empty? && !others.empty?
111
121
 
112
- expectation.raise_unexpected_message_args_error(name_but_not_args.map { |args| args[1] })
122
+ expectation.raise_unexpected_message_args_error(name_but_not_args.map { |args| args[1] })
123
+ end
113
124
  end
114
125
 
115
126
  # @private
@@ -140,17 +151,23 @@ module RSpec
140
151
 
141
152
  # @private
142
153
  def reset
143
- @messages_received.clear
154
+ @messages_received_mutex.synchronize do
155
+ @messages_received.clear
156
+ end
144
157
  end
145
158
 
146
159
  # @private
147
160
  def received_message?(method_name, *args, &block)
148
- @messages_received.any? { |array| array == [method_name, args, block] }
161
+ @messages_received_mutex.synchronize do
162
+ @messages_received.any? { |array| array == [method_name, args, block] }
163
+ end
149
164
  end
150
165
 
151
166
  # @private
152
167
  def messages_arg_list
153
- @messages_received.map { |_, args, _| args }
168
+ @messages_received_mutex.synchronize do
169
+ @messages_received.map { |_, args, _| args }
170
+ end
154
171
  end
155
172
 
156
173
  # @private
@@ -161,7 +178,9 @@ module RSpec
161
178
  # @private
162
179
  def record_message_received(message, *args, &block)
163
180
  @order_group.invoked SpecificMessage.new(object, message, args)
164
- @messages_received << [message, args, block]
181
+ @messages_received_mutex.synchronize do
182
+ @messages_received << [message, args, block]
183
+ end
165
184
  end
166
185
 
167
186
  # @private
@@ -44,7 +44,7 @@ module RSpec
44
44
 
45
45
  # @private
46
46
  def to_s
47
- inspect.gsub('<', '[').gsub('>', ']')
47
+ inspect.tr('<', '[').tr('>', ']')
48
48
  end
49
49
 
50
50
  # @private
@@ -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.6.0'
6
+ STRING = '3.9.0'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-mocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.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: 2017-05-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.6.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.6.0
63
+ version: 3.9.0
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: diff-lcs
66
66
  requirement: !ruby/object:Gem::Requirement
@@ -115,14 +115,14 @@ dependencies:
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: 0.6.2
118
+ version: 0.14.10
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: 0.14.10
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: minitest
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -192,7 +192,12 @@ files:
192
192
  homepage: https://github.com/rspec/rspec-mocks
193
193
  licenses:
194
194
  - MIT
195
- metadata: {}
195
+ metadata:
196
+ bug_tracker_uri: https://github.com/rspec/rspec-mocks/issues
197
+ changelog_uri: https://github.com/rspec/rspec-mocks/blob/v3.9.0/Changelog.md
198
+ documentation_uri: https://rspec.info/documentation/
199
+ mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
200
+ source_code_uri: https://github.com/rspec/rspec-mocks
196
201
  post_install_message:
197
202
  rdoc_options:
198
203
  - "--charset=UTF-8"
@@ -209,10 +214,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
214
  - !ruby/object:Gem::Version
210
215
  version: '0'
211
216
  requirements: []
212
- rubyforge_project:
213
- rubygems_version: 2.4.5.2
217
+ rubygems_version: 3.0.6
214
218
  signing_key:
215
219
  specification_version: 4
216
- summary: rspec-mocks-3.6.0
220
+ summary: rspec-mocks-3.9.0
217
221
  test_files: []
218
- has_rdoc:
metadata.gz.sig CHANGED
Binary file