rspec-expectations 3.0.0.beta2 → 3.0.0.rc1
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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -2
- data/.yardopts +0 -1
- data/Changelog.md +115 -35
- data/README.md +2 -2
- data/lib/rspec/expectations.rb +13 -8
- data/lib/rspec/{matchers → expectations}/configuration.rb +38 -13
- data/lib/rspec/expectations/expectation_target.rb +72 -8
- data/lib/rspec/expectations/fail_with.rb +10 -52
- data/lib/rspec/expectations/handler.rb +9 -11
- data/lib/rspec/expectations/syntax.rb +37 -35
- data/lib/rspec/expectations/version.rb +1 -1
- data/lib/rspec/matchers.rb +60 -9
- data/lib/rspec/matchers/aliased_matcher.rb +6 -0
- data/lib/rspec/matchers/built_in.rb +9 -1
- data/lib/rspec/matchers/built_in/all.rb +78 -0
- data/lib/rspec/matchers/built_in/base_matcher.rb +39 -1
- data/lib/rspec/matchers/built_in/be.rb +117 -42
- data/lib/rspec/matchers/built_in/be_between.rb +22 -0
- data/lib/rspec/matchers/built_in/be_instance_of.rb +11 -3
- data/lib/rspec/matchers/built_in/be_kind_of.rb +5 -0
- data/lib/rspec/matchers/built_in/be_within.rb +26 -6
- data/lib/rspec/matchers/built_in/change.rb +89 -13
- data/lib/rspec/matchers/built_in/compound.rb +19 -3
- data/lib/rspec/matchers/built_in/contain_exactly.rb +17 -6
- data/lib/rspec/matchers/built_in/cover.rb +3 -0
- data/lib/rspec/matchers/built_in/eq.rb +20 -5
- data/lib/rspec/matchers/built_in/eql.rb +15 -3
- data/lib/rspec/matchers/built_in/equal.rb +23 -6
- data/lib/rspec/matchers/built_in/exist.rb +74 -10
- data/lib/rspec/matchers/built_in/has.rb +58 -3
- data/lib/rspec/matchers/built_in/include.rb +16 -1
- data/lib/rspec/matchers/built_in/match.rb +14 -4
- data/lib/rspec/matchers/built_in/operators.rb +16 -0
- data/lib/rspec/matchers/built_in/output.rb +47 -5
- data/lib/rspec/matchers/built_in/raise_error.rb +40 -23
- data/lib/rspec/matchers/built_in/respond_to.rb +37 -16
- data/lib/rspec/matchers/built_in/satisfy.rb +15 -0
- data/lib/rspec/matchers/built_in/start_and_end_with.rb +29 -14
- data/lib/rspec/matchers/built_in/throw_symbol.rb +32 -3
- data/lib/rspec/matchers/built_in/yield.rb +148 -44
- data/lib/rspec/matchers/composable.rb +48 -7
- data/lib/rspec/matchers/dsl.rb +45 -17
- data/lib/rspec/matchers/generated_descriptions.rb +7 -0
- data/lib/rspec/matchers/matcher_delegator.rb +6 -2
- data/lib/rspec/matchers/pretty.rb +15 -19
- metadata +33 -236
- metadata.gz.sig +0 -0
- data/features/README.md +0 -48
- data/features/Upgrade.md +0 -53
- data/features/built_in_matchers/README.md +0 -96
- data/features/built_in_matchers/be.feature +0 -175
- data/features/built_in_matchers/be_within.feature +0 -48
- data/features/built_in_matchers/comparisons.feature +0 -97
- data/features/built_in_matchers/contain_exactly.feature +0 -46
- data/features/built_in_matchers/cover.feature +0 -47
- data/features/built_in_matchers/end_with.feature +0 -48
- data/features/built_in_matchers/equality.feature +0 -136
- data/features/built_in_matchers/exist.feature +0 -45
- data/features/built_in_matchers/expect_change.feature +0 -59
- data/features/built_in_matchers/expect_error.feature +0 -144
- data/features/built_in_matchers/include.feature +0 -126
- data/features/built_in_matchers/match.feature +0 -51
- data/features/built_in_matchers/output.feature +0 -70
- data/features/built_in_matchers/predicates.feature +0 -161
- data/features/built_in_matchers/respond_to.feature +0 -84
- data/features/built_in_matchers/satisfy.feature +0 -33
- data/features/built_in_matchers/start_with.feature +0 -48
- data/features/built_in_matchers/throw_symbol.feature +0 -91
- data/features/built_in_matchers/types.feature +0 -116
- data/features/built_in_matchers/yield.feature +0 -161
- data/features/composing_matchers.feature +0 -250
- data/features/compound_expectations.feature +0 -45
- data/features/custom_matchers/access_running_example.feature +0 -53
- data/features/custom_matchers/define_diffable_matcher.feature +0 -27
- data/features/custom_matchers/define_matcher.feature +0 -340
- data/features/custom_matchers/define_matcher_outside_rspec.feature +0 -34
- data/features/custom_matchers/define_matcher_with_fluent_interface.feature +0 -24
- data/features/customized_message.feature +0 -39
- data/features/diffing.feature +0 -85
- data/features/implicit_docstrings.feature +0 -52
- data/features/step_definitions/additional_cli_steps.rb +0 -22
- data/features/support/env.rb +0 -21
- data/features/support/rubinius.rb +0 -6
- data/features/syntax_configuration.feature +0 -71
- data/features/test_frameworks/minitest.feature +0 -44
- data/lib/rspec-expectations.rb +0 -1
- data/lib/rspec/expectations/diff_presenter.rb +0 -141
- data/lib/rspec/expectations/differ.rb +0 -44
- data/lib/rspec/expectations/encoded_string.rb +0 -56
- data/spec/rspec/expectations/diff_presenter_spec.rb +0 -249
- data/spec/rspec/expectations/encoded_string_spec.rb +0 -74
- data/spec/rspec/expectations/expectation_target_spec.rb +0 -82
- data/spec/rspec/expectations/extensions/kernel_spec.rb +0 -67
- data/spec/rspec/expectations/fail_with_spec.rb +0 -114
- data/spec/rspec/expectations/handler_spec.rb +0 -205
- data/spec/rspec/expectations/minitest_integration_spec.rb +0 -27
- data/spec/rspec/expectations/syntax_spec.rb +0 -89
- data/spec/rspec/expectations_spec.rb +0 -12
- data/spec/rspec/matchers/aliased_matcher_spec.rb +0 -48
- data/spec/rspec/matchers/aliases_spec.rb +0 -449
- data/spec/rspec/matchers/built_in/base_matcher_spec.rb +0 -83
- data/spec/rspec/matchers/built_in/be_between_spec.rb +0 -159
- data/spec/rspec/matchers/built_in/be_instance_of_spec.rb +0 -63
- data/spec/rspec/matchers/built_in/be_kind_of_spec.rb +0 -41
- data/spec/rspec/matchers/built_in/be_spec.rb +0 -592
- data/spec/rspec/matchers/built_in/be_within_spec.rb +0 -141
- data/spec/rspec/matchers/built_in/change_spec.rb +0 -808
- data/spec/rspec/matchers/built_in/compound_spec.rb +0 -292
- data/spec/rspec/matchers/built_in/contain_exactly_spec.rb +0 -441
- data/spec/rspec/matchers/built_in/cover_spec.rb +0 -69
- data/spec/rspec/matchers/built_in/eq_spec.rb +0 -156
- data/spec/rspec/matchers/built_in/eql_spec.rb +0 -41
- data/spec/rspec/matchers/built_in/equal_spec.rb +0 -106
- data/spec/rspec/matchers/built_in/exist_spec.rb +0 -124
- data/spec/rspec/matchers/built_in/has_spec.rb +0 -161
- data/spec/rspec/matchers/built_in/include_spec.rb +0 -540
- data/spec/rspec/matchers/built_in/match_spec.rb +0 -102
- data/spec/rspec/matchers/built_in/operators_spec.rb +0 -252
- data/spec/rspec/matchers/built_in/output_spec.rb +0 -165
- data/spec/rspec/matchers/built_in/raise_error_spec.rb +0 -461
- data/spec/rspec/matchers/built_in/respond_to_spec.rb +0 -292
- data/spec/rspec/matchers/built_in/satisfy_spec.rb +0 -44
- data/spec/rspec/matchers/built_in/start_and_end_with_spec.rb +0 -253
- data/spec/rspec/matchers/built_in/throw_symbol_spec.rb +0 -135
- data/spec/rspec/matchers/built_in/yield_spec.rb +0 -627
- data/spec/rspec/matchers/configuration_spec.rb +0 -213
- data/spec/rspec/matchers/description_generation_spec.rb +0 -191
- data/spec/rspec/matchers/dsl_spec.rb +0 -895
- data/spec/rspec/matchers/legacy_spec.rb +0 -101
- data/spec/rspec/matchers_spec.rb +0 -74
- data/spec/spec_helper.rb +0 -85
- data/spec/support/matchers.rb +0 -22
- data/spec/support/shared_examples.rb +0 -35
@@ -1,19 +1,29 @@
|
|
1
1
|
module RSpec
|
2
2
|
module Matchers
|
3
3
|
module BuiltIn
|
4
|
+
# @api private
|
5
|
+
# Provides the implementation for `match`.
|
6
|
+
# Not intended to be instantiated directly.
|
4
7
|
class Match < BaseMatcher
|
5
|
-
def match(expected, actual)
|
6
|
-
return true if values_match?(expected, actual)
|
7
|
-
actual.match(expected) if actual.respond_to?(:match)
|
8
|
-
end
|
9
8
|
|
9
|
+
# @api private
|
10
|
+
# @return [String]
|
10
11
|
def description
|
11
12
|
"match #{surface_descriptions_in(expected).inspect}"
|
12
13
|
end
|
13
14
|
|
15
|
+
# @api private
|
16
|
+
# @return [Boolean]
|
14
17
|
def diffable?
|
15
18
|
true
|
16
19
|
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def match(expected, actual)
|
24
|
+
return true if values_match?(expected, actual)
|
25
|
+
actual.match(expected) if actual.respond_to?(:match)
|
26
|
+
end
|
17
27
|
end
|
18
28
|
end
|
19
29
|
end
|
@@ -3,21 +3,29 @@ require 'rspec/support'
|
|
3
3
|
module RSpec
|
4
4
|
module Matchers
|
5
5
|
module BuiltIn
|
6
|
+
# @api private
|
7
|
+
# Provides the implementation for operator matchers.
|
8
|
+
# Not intended to be instantiated directly.
|
9
|
+
# Only available for use with `should`.
|
6
10
|
class OperatorMatcher
|
7
11
|
class << self
|
12
|
+
# @private
|
8
13
|
def registry
|
9
14
|
@registry ||= {}
|
10
15
|
end
|
11
16
|
|
17
|
+
# @private
|
12
18
|
def register(klass, operator, matcher)
|
13
19
|
registry[klass] ||= {}
|
14
20
|
registry[klass][operator] = matcher
|
15
21
|
end
|
16
22
|
|
23
|
+
# @private
|
17
24
|
def unregister(klass, operator)
|
18
25
|
registry[klass] && registry[klass].delete(operator)
|
19
26
|
end
|
20
27
|
|
28
|
+
# @private
|
21
29
|
def get(klass, operator)
|
22
30
|
klass.ancestors.each { |ancestor|
|
23
31
|
matcher = registry[ancestor] && registry[ancestor][operator]
|
@@ -34,6 +42,7 @@ module RSpec
|
|
34
42
|
@actual = actual
|
35
43
|
end
|
36
44
|
|
45
|
+
# @private
|
37
46
|
def self.use_custom_matcher_or_delegate(operator)
|
38
47
|
define_method(operator) do |expected|
|
39
48
|
if uses_generic_implementation_of?(operator) && matcher = OperatorMatcher.get(@actual.class, operator)
|
@@ -57,10 +66,13 @@ module RSpec
|
|
57
66
|
use_custom_matcher_or_delegate operator
|
58
67
|
end
|
59
68
|
|
69
|
+
# @private
|
60
70
|
def fail_with_message(message)
|
61
71
|
RSpec::Expectations.fail_with(message, @expected, @actual)
|
62
72
|
end
|
63
73
|
|
74
|
+
# @api private
|
75
|
+
# @return [String]
|
64
76
|
def description
|
65
77
|
"#{@operator} #{@expected.inspect}"
|
66
78
|
end
|
@@ -80,6 +92,8 @@ module RSpec
|
|
80
92
|
end
|
81
93
|
end
|
82
94
|
|
95
|
+
# @private
|
96
|
+
# Handles operator matcher for `should`.
|
83
97
|
class PositiveOperatorMatcher < OperatorMatcher
|
84
98
|
def __delegate_operator(actual, operator, expected)
|
85
99
|
if actual.__send__(operator, expected)
|
@@ -92,6 +106,8 @@ module RSpec
|
|
92
106
|
end
|
93
107
|
end
|
94
108
|
|
109
|
+
# @private
|
110
|
+
# Handles operator matcher for `should_not`.
|
95
111
|
class NegativeOperatorMatcher < OperatorMatcher
|
96
112
|
def __delegate_operator(actual, operator, expected)
|
97
113
|
return false unless actual.__send__(operator, expected)
|
@@ -3,6 +3,9 @@ require 'stringio'
|
|
3
3
|
module RSpec
|
4
4
|
module Matchers
|
5
5
|
module BuiltIn
|
6
|
+
# @api private
|
7
|
+
# Provides the implementation for `output`.
|
8
|
+
# Not intended to be instantiated directly.
|
6
9
|
class Output < BaseMatcher
|
7
10
|
def initialize(expected)
|
8
11
|
@expected = expected
|
@@ -10,29 +13,44 @@ module RSpec
|
|
10
13
|
end
|
11
14
|
|
12
15
|
def matches?(block)
|
16
|
+
@block = block
|
17
|
+
return false unless Proc === block
|
13
18
|
@actual = @stream_capturer.capture(block)
|
14
|
-
|
15
19
|
@expected ? values_match?(@expected, @actual) : captured?
|
16
20
|
end
|
17
21
|
|
22
|
+
def does_not_match?(block)
|
23
|
+
!matches?(block) && Proc === block
|
24
|
+
end
|
25
|
+
|
26
|
+
# @api public
|
27
|
+
# Tells the matcher to match against stdout.
|
18
28
|
def to_stdout
|
19
29
|
@stream_capturer = CaptureStdout
|
20
30
|
self
|
21
31
|
end
|
22
32
|
|
33
|
+
# @api public
|
34
|
+
# Tells the matcher to match against stderr.
|
23
35
|
def to_stderr
|
24
36
|
@stream_capturer = CaptureStderr
|
25
37
|
self
|
26
38
|
end
|
27
39
|
|
40
|
+
# @api private
|
41
|
+
# @return [String]
|
28
42
|
def failure_message
|
29
|
-
"expected block to #{description}, #{
|
43
|
+
"expected block to #{description}, but #{positive_failure_reason}"
|
30
44
|
end
|
31
45
|
|
46
|
+
# @api private
|
47
|
+
# @return [String]
|
32
48
|
def failure_message_when_negated
|
33
|
-
"expected block to not #{description}, but
|
49
|
+
"expected block to not #{description}, but #{negative_failure_reason}"
|
34
50
|
end
|
35
51
|
|
52
|
+
# @api private
|
53
|
+
# @return [String]
|
36
54
|
def description
|
37
55
|
if @expected
|
38
56
|
"output #{description_of @expected} to #{@stream_capturer.name}"
|
@@ -41,21 +59,43 @@ module RSpec
|
|
41
59
|
end
|
42
60
|
end
|
43
61
|
|
62
|
+
# @api private
|
63
|
+
# @return [Boolean]
|
44
64
|
def diffable?
|
45
65
|
true
|
46
66
|
end
|
47
67
|
|
68
|
+
# @api private
|
69
|
+
# Indicates this matcher matches against a block.
|
70
|
+
# @return [True]
|
71
|
+
def supports_block_expectations?
|
72
|
+
true
|
73
|
+
end
|
74
|
+
|
48
75
|
private
|
49
76
|
|
50
77
|
def captured?
|
51
78
|
@actual.length > 0
|
52
79
|
end
|
53
80
|
|
54
|
-
def
|
55
|
-
|
81
|
+
def positive_failure_reason
|
82
|
+
return "was not a block" unless Proc === @block
|
83
|
+
return "output #{actual_output_description}" if @expected
|
84
|
+
"did not"
|
85
|
+
end
|
86
|
+
|
87
|
+
def negative_failure_reason
|
88
|
+
return "was not a block" unless Proc === @block
|
89
|
+
"output #{actual_output_description}"
|
90
|
+
end
|
91
|
+
|
92
|
+
def actual_output_description
|
93
|
+
return "nothing" unless captured?
|
94
|
+
@actual.inspect
|
56
95
|
end
|
57
96
|
end
|
58
97
|
|
98
|
+
# @private
|
59
99
|
module NullCapture
|
60
100
|
def self.name
|
61
101
|
"some stream"
|
@@ -66,6 +106,7 @@ module RSpec
|
|
66
106
|
end
|
67
107
|
end
|
68
108
|
|
109
|
+
# @private
|
69
110
|
module CaptureStdout
|
70
111
|
def self.name
|
71
112
|
'stdout'
|
@@ -85,6 +126,7 @@ module RSpec
|
|
85
126
|
end
|
86
127
|
end
|
87
128
|
|
129
|
+
# @private
|
88
130
|
module CaptureStderr
|
89
131
|
def self.name
|
90
132
|
'stderr'
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module RSpec
|
2
2
|
module Matchers
|
3
3
|
module BuiltIn
|
4
|
+
# @api private
|
5
|
+
# Provides the implementation for `raise_error`.
|
6
|
+
# Not intended to be instantiated directly.
|
4
7
|
class RaiseError
|
5
8
|
include Composable
|
6
9
|
|
@@ -15,23 +18,24 @@ module RSpec
|
|
15
18
|
end
|
16
19
|
end
|
17
20
|
|
21
|
+
# @api public
|
22
|
+
# Specifies the expected error message.
|
18
23
|
def with_message(expected_message)
|
19
24
|
raise_message_already_set if @expected_message
|
20
25
|
@expected_message = expected_message
|
21
26
|
self
|
22
27
|
end
|
23
28
|
|
29
|
+
# @private
|
24
30
|
def matches?(given_proc, negative_expectation = false, &block)
|
31
|
+
@given_proc = given_proc
|
25
32
|
@block ||= block
|
26
33
|
@raised_expected_error = false
|
27
34
|
@with_expected_message = false
|
28
35
|
@eval_block = false
|
29
36
|
@eval_block_passed = false
|
30
37
|
|
31
|
-
unless given_proc
|
32
|
-
::Kernel.warn "`raise_error` was called with non-proc object #{given_proc.inspect}"
|
33
|
-
return false
|
34
|
-
end
|
38
|
+
return false unless Proc === given_proc
|
35
39
|
|
36
40
|
begin
|
37
41
|
given_proc.call
|
@@ -49,6 +53,37 @@ module RSpec
|
|
49
53
|
expectation_matched?
|
50
54
|
end
|
51
55
|
|
56
|
+
# @private
|
57
|
+
def does_not_match?(given_proc)
|
58
|
+
prevent_invalid_expectations
|
59
|
+
!matches?(given_proc, :negative_expectation) && Proc === given_proc
|
60
|
+
end
|
61
|
+
|
62
|
+
# @private
|
63
|
+
def supports_block_expectations?
|
64
|
+
true
|
65
|
+
end
|
66
|
+
|
67
|
+
# @api private
|
68
|
+
# @return [String]
|
69
|
+
def failure_message
|
70
|
+
@eval_block ? @actual_error.message : "expected #{expected_error}#{given_error}"
|
71
|
+
end
|
72
|
+
|
73
|
+
# @api private
|
74
|
+
# @return [String]
|
75
|
+
def failure_message_when_negated
|
76
|
+
"expected no #{expected_error}#{given_error}"
|
77
|
+
end
|
78
|
+
|
79
|
+
# @api private
|
80
|
+
# @return [String]
|
81
|
+
def description
|
82
|
+
"raise #{expected_error}"
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
52
87
|
def expectation_matched?
|
53
88
|
error_and_message_match? && block_matches?
|
54
89
|
end
|
@@ -61,11 +96,6 @@ module RSpec
|
|
61
96
|
@eval_block ? @eval_block_passed : true
|
62
97
|
end
|
63
98
|
|
64
|
-
def does_not_match?(given_proc)
|
65
|
-
prevent_invalid_expectations
|
66
|
-
!matches?(given_proc, :negative_expectation)
|
67
|
-
end
|
68
|
-
|
69
99
|
def eval_block
|
70
100
|
@eval_block = true
|
71
101
|
begin
|
@@ -81,20 +111,6 @@ module RSpec
|
|
81
111
|
values_match?(@expected_message, @actual_error.message)
|
82
112
|
end
|
83
113
|
|
84
|
-
def failure_message
|
85
|
-
@eval_block ? @actual_error.message : "expected #{expected_error}#{given_error}"
|
86
|
-
end
|
87
|
-
|
88
|
-
def failure_message_when_negated
|
89
|
-
"expected no #{expected_error}#{given_error}"
|
90
|
-
end
|
91
|
-
|
92
|
-
def description
|
93
|
-
"raise #{expected_error}"
|
94
|
-
end
|
95
|
-
|
96
|
-
private
|
97
|
-
|
98
114
|
def prevent_invalid_expectations
|
99
115
|
if (expecting_specific_exception? || @expected_message)
|
100
116
|
what_to_raise = if expecting_specific_exception? && @expected_message
|
@@ -126,6 +142,7 @@ module RSpec
|
|
126
142
|
end
|
127
143
|
|
128
144
|
def given_error
|
145
|
+
return " but was not given a block" unless Proc === @given_proc
|
129
146
|
return " but nothing was raised" unless @actual_error
|
130
147
|
|
131
148
|
backtrace = format_backtrace(@actual_error.backtrace)
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module RSpec
|
2
2
|
module Matchers
|
3
3
|
module BuiltIn
|
4
|
+
# @api private
|
5
|
+
# Provides the implementation for `respond_to`.
|
6
|
+
# Not intended to be instantiated directly.
|
4
7
|
class RespondTo
|
5
8
|
include Composable
|
6
9
|
|
@@ -9,37 +12,60 @@ module RSpec
|
|
9
12
|
@expected_arity = nil
|
10
13
|
end
|
11
14
|
|
15
|
+
# @api public
|
16
|
+
# Specifies the number of expected arguments.
|
17
|
+
#
|
18
|
+
# @example
|
19
|
+
# expect(obj).to respond_to(:message).with(3).arguments
|
20
|
+
def with(n)
|
21
|
+
@expected_arity = n
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
# @api public
|
26
|
+
# No-op. Intended to be used as syntactic sugar when using `with`.
|
27
|
+
#
|
28
|
+
# @example
|
29
|
+
# expect(obj).to respond_to(:message).with(3).arguments
|
30
|
+
def argument
|
31
|
+
self
|
32
|
+
end
|
33
|
+
alias :arguments :argument
|
34
|
+
|
35
|
+
# @private
|
12
36
|
def matches?(actual)
|
13
37
|
find_failing_method_names(actual, :reject).empty?
|
14
38
|
end
|
15
39
|
|
40
|
+
# @private
|
16
41
|
def does_not_match?(actual)
|
17
42
|
find_failing_method_names(actual, :select).empty?
|
18
43
|
end
|
19
44
|
|
45
|
+
# @api private
|
46
|
+
# @return [String]
|
20
47
|
def failure_message
|
21
48
|
"expected #{@actual.inspect} to respond to #{@failing_method_names.collect {|name| name.inspect }.join(', ')}#{with_arity}"
|
22
49
|
end
|
23
50
|
|
51
|
+
# @api private
|
52
|
+
# @return [String]
|
24
53
|
def failure_message_when_negated
|
25
54
|
failure_message.sub(/to respond to/, 'not to respond to')
|
26
55
|
end
|
27
56
|
|
57
|
+
# @api private
|
58
|
+
# @return [String]
|
28
59
|
def description
|
29
60
|
"respond to #{pp_names}#{with_arity}"
|
30
61
|
end
|
31
62
|
|
32
|
-
|
33
|
-
|
34
|
-
|
63
|
+
# @private
|
64
|
+
def supports_block_expectations?
|
65
|
+
false
|
35
66
|
end
|
36
67
|
|
37
|
-
|
38
|
-
self
|
39
|
-
end
|
40
|
-
alias :arguments :argument
|
41
|
-
|
42
|
-
private
|
68
|
+
private
|
43
69
|
|
44
70
|
def find_failing_method_names(actual, filter_method)
|
45
71
|
@actual = actual
|
@@ -51,13 +77,8 @@ module RSpec
|
|
51
77
|
def matches_arity?(actual, name)
|
52
78
|
return true unless @expected_arity
|
53
79
|
|
54
|
-
|
55
|
-
|
56
|
-
# ~ inverts the one's complement and gives us the number of required args
|
57
|
-
~actual_arity <= @expected_arity
|
58
|
-
else
|
59
|
-
actual_arity == @expected_arity
|
60
|
-
end
|
80
|
+
signature = Support::MethodSignature.new(actual.method(name))
|
81
|
+
Support::MethodSignatureVerifier.new(signature, Array.new(@expected_arity)).valid?
|
61
82
|
end
|
62
83
|
|
63
84
|
def with_arity
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module RSpec
|
2
2
|
module Matchers
|
3
3
|
module BuiltIn
|
4
|
+
# @api private
|
5
|
+
# Provides the implementation for `satisfy`.
|
6
|
+
# Not intended to be instantiated directly.
|
4
7
|
class Satisfy
|
5
8
|
include Composable
|
6
9
|
|
@@ -8,23 +11,35 @@ module RSpec
|
|
8
11
|
@block = block
|
9
12
|
end
|
10
13
|
|
14
|
+
# @private
|
11
15
|
def matches?(actual, &block)
|
12
16
|
@block = block if block
|
13
17
|
@actual = actual
|
14
18
|
@block.call(actual)
|
15
19
|
end
|
16
20
|
|
21
|
+
# @api private
|
22
|
+
# @return [String]
|
17
23
|
def failure_message
|
18
24
|
"expected #{@actual} to satisfy block"
|
19
25
|
end
|
20
26
|
|
27
|
+
# @api private
|
28
|
+
# @return [String]
|
21
29
|
def failure_message_when_negated
|
22
30
|
"expected #{@actual} not to satisfy block"
|
23
31
|
end
|
24
32
|
|
33
|
+
# @api private
|
34
|
+
# @return [String]
|
25
35
|
def description
|
26
36
|
"satisfy block"
|
27
37
|
end
|
38
|
+
|
39
|
+
# @private
|
40
|
+
def supports_block_expectations?
|
41
|
+
false
|
42
|
+
end
|
28
43
|
end
|
29
44
|
end
|
30
45
|
end
|