rspec-mocks 3.6.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 +53 -1
- data/README.md +6 -3
- data/lib/rspec/mocks/any_instance/chain.rb +1 -0
- data/lib/rspec/mocks/any_instance/recorder.rb +1 -1
- data/lib/rspec/mocks/any_instance/stub_chain.rb +2 -2
- data/lib/rspec/mocks/argument_matchers.rb +3 -1
- data/lib/rspec/mocks/error_generator.rb +9 -9
- data/lib/rspec/mocks/matchers/have_received.rb +5 -1
- data/lib/rspec/mocks/message_expectation.rb +16 -5
- data/lib/rspec/mocks/method_double.rb +1 -1
- data/lib/rspec/mocks/method_reference.rb +8 -8
- data/lib/rspec/mocks/proxy.rb +34 -15
- data/lib/rspec/mocks/test_double.rb +1 -1
- data/lib/rspec/mocks/version.rb +1 -1
- metadata +14 -11
- 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: f53d2fe5ab69778d6528b80a08aaa48869a527c5185f715671c0d48beecf5db4
|
4
|
+
data.tar.gz: 8e06d4be6fbc3dec6cbbdf75d141638db33653579fcd95b4869cb41b97afb4e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6863b589a173e3985263e2b49c797389e7db68912df5f6f294f23833d66cbeb72b10b9b800cca08383322f1b1775b99f7514878663b715b48d4d6e39582b4836
|
7
|
+
data.tar.gz: 320ec537f1f7708bd0fb5317ab3878cb569f2a9dbd676b8b8512f36ece73f5efc0d9f7d85bb8b6b30ac145cc5ff3f10d13212897c19e6559a475526703325e1d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Changelog.md
CHANGED
@@ -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
|
-
|
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 => "
|
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
|
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)
|
@@ -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
|
-
|
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
|
-
|
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
|
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
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
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
|
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
|
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
|
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
|
-
@
|
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
|
-
@
|
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) :
|
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
|
data/lib/rspec/mocks/proxy.rb
CHANGED
@@ -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
|
-
@
|
93
|
-
|
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
|
-
|
96
|
-
|
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
|
-
|
111
|
+
@messages_received_mutex.synchronize do
|
112
|
+
return if @messages_received.empty?
|
103
113
|
|
104
|
-
|
114
|
+
return if @messages_received.any? { |method_name, args, _| expectation.matches?(method_name, *args) }
|
105
115
|
|
106
|
-
|
107
|
-
|
108
|
-
|
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
|
-
|
120
|
+
return if name_but_not_args.empty? && !others.empty?
|
111
121
|
|
112
|
-
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
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
|
-
@
|
181
|
+
@messages_received_mutex.synchronize do
|
182
|
+
@messages_received << [message, args, block]
|
183
|
+
end
|
165
184
|
end
|
166
185
|
|
167
186
|
# @private
|
data/lib/rspec/mocks/version.rb
CHANGED
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.
|
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
|
@@ -115,14 +115,14 @@ dependencies:
|
|
115
115
|
requirements:
|
116
116
|
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: 0.
|
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.
|
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
|
-
|
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.
|
220
|
+
summary: rspec-mocks-3.9.0
|
217
221
|
test_files: []
|
218
|
-
has_rdoc:
|
metadata.gz.sig
CHANGED
Binary file
|