rspec-mocks 3.5.0.beta2 → 3.5.0.beta3

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
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