rspec-mocks 3.5.0.beta2 → 3.5.0.beta3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 04c6f5ba70d371c519038204d10781a53a3c6f70
4
- data.tar.gz: 621501f526471f9156e29b0a74a78b42779b5b10
3
+ metadata.gz: 120ba58f79094ffbb0cbc266d92aaf95e85dfb3e
4
+ data.tar.gz: b0550ddbdf1d1d12b5c2ced552eeed6e8dd9fe4d
5
5
  SHA512:
6
- metadata.gz: 08c1dff465c3965b39ac0cac32171dc5706657ab792d84083de15d49487159be7c8b00ba2825009a673351e0e6506903748c3569aa2cc39f9eba47bf1c37874e
7
- data.tar.gz: 0bec2879051701ddaa9d971ac3e56e1ec3456a69cbffd55c120e587d1507748d7ab292db3f768b7758f47359ef759f80b683e70c73c6b0efc5d11e11693b27ba
6
+ metadata.gz: cdec40e14778746cfa34d4625da45725560c2305ea3ffd993dbd9b2893c37b94b973d6343130ddd469661725b385b96deb0761e3cfc401207f6dbd8de9b2f708
7
+ data.tar.gz: 5bc6782dc04230c63393fad9c0d0a4fbb3d8fddaaee1d05ce08ffbc0ed24378a7725a12d6226b04393fd9b81b29bddfc29e07582c80ecd8340cc39417db42293
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -5,6 +5,10 @@ Enhancements:
5
5
 
6
6
  * Improve error message displayed when using `and_wrap_original` on pure test
7
7
  doubles. (betesh, #1063)
8
+ * Issue warning when attempting to use unsupported
9
+ `allow(...).to receive(...).ordered`. (Jon Rowe, #1000)
10
+ * Add `rspec/mocks/minitest_integration`, to properly integration rspec-mocks
11
+ with minitest. (Myron Marston, #1065)
8
12
 
9
13
  Bug Fixes:
10
14
 
@@ -328,6 +328,13 @@ module RSpec
328
328
  # expect(api).to receive(:run).ordered
329
329
  # expect(api).to receive(:finish).ordered
330
330
  def ordered(&block)
331
+ if type == :stub
332
+ RSpec.warning(
333
+ "`allow(...).to receive(..).ordered` is not supported and will" \
334
+ "have no effect, use `and_return(*ordered_values)` instead."
335
+ )
336
+ end
337
+
331
338
  self.inner_implementation_action = block
332
339
  additional_expected_calls.times do
333
340
  @order_group.register(self)
@@ -349,9 +356,13 @@ module RSpec
349
356
  attr_writer :expected_received_count, :expected_from, :argument_list_matcher
350
357
  protected :expected_received_count=, :expected_from=, :error_generator, :error_generator=, :implementation=
351
358
 
359
+ # @private
360
+ attr_reader :type
361
+
352
362
  # rubocop:disable Style/ParameterLists
353
363
  def initialize(error_generator, expectation_ordering, expected_from, method_double,
354
364
  type=:expectation, opts={}, &implementation_block)
365
+ @type = type
355
366
  @error_generator = error_generator
356
367
  @error_generator.opts = opts
357
368
  @expected_from = expected_from
@@ -0,0 +1,68 @@
1
+ require 'rspec/mocks'
2
+
3
+ module RSpec
4
+ module Mocks
5
+ # @private
6
+ module MinitestIntegration
7
+ include ::RSpec::Mocks::ExampleMethods
8
+
9
+ def before_setup
10
+ ::RSpec::Mocks.setup
11
+ super
12
+ end
13
+
14
+ def after_teardown
15
+ super
16
+
17
+ # Only verify if there's not already an error. Otherwise
18
+ # we risk getting the same failure twice, since negative
19
+ # expectation violations raise both when the message is
20
+ # unexpectedly received, and also during `verify` (in case
21
+ # the first failure was caught by user code via a
22
+ # `rescue Exception`).
23
+ ::RSpec::Mocks.verify unless failures.any?
24
+ ensure
25
+ ::RSpec::Mocks.teardown
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ Minitest::Test.send(:include, RSpec::Mocks::MinitestIntegration)
32
+
33
+ if defined?(::Minitest::Expectation)
34
+ if defined?(::RSpec::Expectations) && ::Minitest::Expectation.method_defined?(:to)
35
+ # rspec/expectations/minitest_integration has already been loaded and
36
+ # has defined `to`/`not_to`/`to_not` on `Minitest::Expectation` so we do
37
+ # not want to here (or else we would interfere with rspec-expectations' definition).
38
+ else
39
+ # ...otherwise, define those methods now. If `rspec/expectations/minitest_integration`
40
+ # is loaded after this file, it'll overide the defintion here.
41
+ Minitest::Expectation.class_eval do
42
+ include RSpec::Mocks::ExpectationTargetMethods
43
+
44
+ def to(*args)
45
+ ctx.assertions += 1
46
+ super
47
+ end
48
+
49
+ def not_to(*args)
50
+ ctx.assertions += 1
51
+ super
52
+ end
53
+
54
+ def to_not(*args)
55
+ ctx.assertions += 1
56
+ super
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ module RSpec
63
+ module Mocks
64
+ remove_const :MockExpectationError
65
+ # Raised when a message expectation is not satisfied.
66
+ MockExpectationError = ::Minitest::Assertion
67
+ end
68
+ end
@@ -1,12 +1,8 @@
1
1
  module RSpec
2
2
  module Mocks
3
3
  # @private
4
- class TargetBase
5
- def initialize(target)
6
- @target = target
7
- end
8
-
9
- def self.delegate_to(matcher_method)
4
+ module TargetDelegationClassMethods
5
+ def delegate_to(matcher_method)
10
6
  define_method(:to) do |matcher, &block|
11
7
  unless matcher_allowed?(matcher)
12
8
  raise_unsupported_matcher(:to, matcher)
@@ -15,7 +11,7 @@ module RSpec
15
11
  end
16
12
  end
17
13
 
18
- def self.delegate_not_to(matcher_method, options={})
14
+ def delegate_not_to(matcher_method, options={})
19
15
  method_name = options.fetch(:from)
20
16
  define_method(method_name) do |matcher, &block|
21
17
  case matcher
@@ -29,11 +25,16 @@ module RSpec
29
25
  end
30
26
  end
31
27
 
32
- def self.disallow_negation(method_name)
28
+ def disallow_negation(method_name)
33
29
  define_method(method_name) do |matcher, *_args|
34
30
  raise_negation_unsupported(method_name, matcher)
35
31
  end
36
32
  end
33
+ end
34
+
35
+ # @private
36
+ module TargetDelegationInstanceMethods
37
+ attr_reader :target
37
38
 
38
39
  private
39
40
 
@@ -42,7 +43,7 @@ module RSpec
42
43
  end
43
44
 
44
45
  def define_matcher(matcher, name, &block)
45
- matcher.__send__(name, @target, &block)
46
+ matcher.__send__(name, target, &block)
46
47
  end
47
48
 
48
49
  def raise_unsupported_matcher(method_name, matcher)
@@ -56,31 +57,54 @@ module RSpec
56
57
  "`#{expression}(...).#{method_name} #{matcher.name}` is not supported since it " \
57
58
  "doesn't really make sense. What would it even mean?"
58
59
  end
60
+ end
61
+
62
+ # @private
63
+ class TargetBase
64
+ def initialize(target)
65
+ @target = target
66
+ end
67
+
68
+ extend TargetDelegationClassMethods
69
+ include TargetDelegationInstanceMethods
70
+ end
71
+
72
+ # @private
73
+ module ExpectationTargetMethods
74
+ extend TargetDelegationClassMethods
75
+ include TargetDelegationInstanceMethods
76
+
77
+ delegate_to :setup_expectation
78
+ delegate_not_to :setup_negative_expectation, :from => :not_to
79
+ delegate_not_to :setup_negative_expectation, :from => :to_not
59
80
 
60
81
  def expression
61
- self.class::EXPRESSION
82
+ :expect
62
83
  end
63
84
  end
64
85
 
86
+ # @private
87
+ class ExpectationTarget < TargetBase
88
+ include ExpectationTargetMethods
89
+ end
90
+
65
91
  # @private
66
92
  class AllowanceTarget < TargetBase
67
- EXPRESSION = :allow
93
+ def expression
94
+ :allow
95
+ end
96
+
68
97
  delegate_to :setup_allowance
69
98
  disallow_negation :not_to
70
99
  disallow_negation :to_not
71
100
  end
72
101
 
73
- # @private
74
- class ExpectationTarget < TargetBase
75
- EXPRESSION = :expect
76
- delegate_to :setup_expectation
77
- delegate_not_to :setup_negative_expectation, :from => :not_to
78
- delegate_not_to :setup_negative_expectation, :from => :to_not
79
- end
80
-
81
102
  # @private
82
103
  class AnyInstanceAllowanceTarget < TargetBase
83
- EXPRESSION = :allow_any_instance_of
104
+ def expression
105
+ :allow_any_instance_of
106
+ end
107
+
84
108
  delegate_to :setup_any_instance_allowance
85
109
  disallow_negation :not_to
86
110
  disallow_negation :to_not
@@ -88,7 +112,10 @@ module RSpec
88
112
 
89
113
  # @private
90
114
  class AnyInstanceExpectationTarget < TargetBase
91
- EXPRESSION = :expect_any_instance_of
115
+ def expression
116
+ :expect_any_instance_of
117
+ end
118
+
92
119
  delegate_to :setup_any_instance_expectation
93
120
  delegate_not_to :setup_any_instance_negative_expectation, :from => :not_to
94
121
  delegate_not_to :setup_any_instance_negative_expectation, :from => :to_not
@@ -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.5.0.beta2'
6
+ STRING = '3.5.0.beta3'
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.5.0.beta2
4
+ version: 3.5.0.beta3
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: 2016-03-10 00:00:00.000000000 Z
48
+ date: 2016-04-02 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.5.0.beta2
56
+ version: 3.5.0.beta3
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.5.0.beta2
63
+ version: 3.5.0.beta3
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: diff-lcs
66
66
  requirement: !ruby/object:Gem::Requirement
@@ -175,6 +175,7 @@ files:
175
175
  - lib/rspec/mocks/message_expectation.rb
176
176
  - lib/rspec/mocks/method_double.rb
177
177
  - lib/rspec/mocks/method_reference.rb
178
+ - lib/rspec/mocks/minitest_integration.rb
178
179
  - lib/rspec/mocks/mutate_const.rb
179
180
  - lib/rspec/mocks/object_reference.rb
180
181
  - lib/rspec/mocks/order_group.rb
@@ -188,7 +189,7 @@ files:
188
189
  - lib/rspec/mocks/verifying_message_expectation.rb
189
190
  - lib/rspec/mocks/verifying_proxy.rb
190
191
  - lib/rspec/mocks/version.rb
191
- homepage: http://github.com/rspec/rspec-mocks
192
+ homepage: https://github.com/rspec/rspec-mocks
192
193
  licenses:
193
194
  - MIT
194
195
  metadata: {}
@@ -209,9 +210,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
210
  version: 1.3.1
210
211
  requirements: []
211
212
  rubyforge_project:
212
- rubygems_version: 2.5.1
213
+ rubygems_version: 2.4.5.1
213
214
  signing_key:
214
215
  specification_version: 4
215
- summary: rspec-mocks-3.5.0.beta2
216
+ summary: rspec-mocks-3.5.0.beta3
216
217
  test_files: []
217
218
  has_rdoc:
metadata.gz.sig CHANGED
Binary file