mocha 1.6.0 → 1.7.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
- data/.rubocop.yml +58 -0
- data/.rubocop_todo.yml +50 -0
- data/RELEASE.md +7 -0
- data/Rakefile +35 -28
- data/bin/build-matrix +17 -18
- data/lib/mocha/any_instance_method.rb +19 -25
- data/lib/mocha/api.rb +1 -5
- data/lib/mocha/argument_iterator.rb +4 -8
- data/lib/mocha/backtrace_filter.rb +1 -5
- data/lib/mocha/cardinality.rb +20 -27
- data/lib/mocha/central.rb +7 -15
- data/lib/mocha/change_state_side_effect.rb +0 -4
- data/lib/mocha/class_method.rb +31 -37
- data/lib/mocha/class_methods.rb +5 -13
- data/lib/mocha/configuration.rb +3 -9
- data/lib/mocha/debug.rb +3 -2
- data/lib/mocha/deprecation.rb +4 -11
- data/lib/mocha/detection/mini_test.rb +0 -2
- data/lib/mocha/detection/test_unit.rb +4 -4
- data/lib/mocha/error_with_filtered_backtrace.rb +0 -4
- data/lib/mocha/exception_raiser.rb +2 -5
- data/lib/mocha/expectation.rb +15 -18
- data/lib/mocha/expectation_error.rb +2 -0
- data/lib/mocha/expectation_error_factory.rb +0 -1
- data/lib/mocha/expectation_list.rb +2 -6
- data/lib/mocha/hooks.rb +0 -1
- data/lib/mocha/in_state_ordering_constraint.rb +0 -4
- data/lib/mocha/inspect.rb +3 -5
- data/lib/mocha/instance_method.rb +0 -2
- data/lib/mocha/integration.rb +3 -4
- data/lib/mocha/integration/mini_test/adapter.rb +2 -4
- data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
- data/lib/mocha/integration/mini_test/nothing.rb +4 -4
- data/lib/mocha/integration/mini_test/version_13.rb +3 -1
- data/lib/mocha/integration/mini_test/version_140.rb +3 -1
- data/lib/mocha/integration/mini_test/version_141.rb +3 -1
- data/lib/mocha/integration/mini_test/version_142_to_172.rb +3 -1
- data/lib/mocha/integration/mini_test/version_200.rb +3 -1
- data/lib/mocha/integration/mini_test/version_201_to_222.rb +3 -1
- data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +3 -1
- data/lib/mocha/integration/mini_test/version_2112_to_320.rb +3 -1
- data/lib/mocha/integration/mini_test/version_230_to_2101.rb +3 -1
- data/lib/mocha/integration/monkey_patcher.rb +5 -7
- data/lib/mocha/integration/test_unit/adapter.rb +5 -6
- data/lib/mocha/integration/test_unit/gem_version_200.rb +4 -2
- data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +4 -2
- data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +4 -2
- data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +4 -2
- data/lib/mocha/integration/test_unit/nothing.rb +4 -4
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +3 -1
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +3 -1
- data/lib/mocha/is_a.rb +0 -2
- data/lib/mocha/logger.rb +0 -4
- data/lib/mocha/method_matcher.rb +1 -5
- data/lib/mocha/minitest.rb +1 -1
- data/lib/mocha/mock.rb +25 -30
- data/lib/mocha/mockery.rb +27 -43
- data/lib/mocha/module_method.rb +0 -2
- data/lib/mocha/module_methods.rb +0 -4
- data/lib/mocha/multiple_yields.rb +0 -5
- data/lib/mocha/names.rb +1 -11
- data/lib/mocha/no_yields.rb +1 -7
- data/lib/mocha/not_initialized_error.rb +0 -2
- data/lib/mocha/object_methods.rb +10 -14
- data/lib/mocha/parameter_matchers.rb +0 -2
- data/lib/mocha/parameter_matchers/all_of.rb +1 -7
- data/lib/mocha/parameter_matchers/any_of.rb +1 -7
- data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
- data/lib/mocha/parameter_matchers/anything.rb +2 -8
- data/lib/mocha/parameter_matchers/base.rb +6 -12
- data/lib/mocha/parameter_matchers/equals.rb +0 -6
- data/lib/mocha/parameter_matchers/equivalent_uri.rb +6 -6
- data/lib/mocha/parameter_matchers/has_entries.rb +2 -6
- data/lib/mocha/parameter_matchers/has_entry.rb +8 -11
- data/lib/mocha/parameter_matchers/has_key.rb +2 -6
- data/lib/mocha/parameter_matchers/has_value.rb +2 -6
- data/lib/mocha/parameter_matchers/includes.rb +2 -6
- data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
- data/lib/mocha/parameter_matchers/is_a.rb +2 -6
- data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
- data/lib/mocha/parameter_matchers/not.rb +2 -6
- data/lib/mocha/parameter_matchers/object.rb +0 -2
- data/lib/mocha/parameter_matchers/optionally.rb +4 -10
- data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
- data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
- data/lib/mocha/parameters_matcher.rb +6 -9
- data/lib/mocha/pretty_parameters.rb +0 -4
- data/lib/mocha/receivers.rb +6 -12
- data/lib/mocha/return_values.rb +3 -7
- data/lib/mocha/sequence.rb +4 -9
- data/lib/mocha/single_return_value.rb +0 -4
- data/lib/mocha/single_yield.rb +0 -5
- data/lib/mocha/state_machine.rb +6 -10
- data/lib/mocha/stubbing_error.rb +0 -2
- data/lib/mocha/test_unit.rb +1 -1
- data/lib/mocha/thrower.rb +2 -5
- data/lib/mocha/unexpected_invocation.rb +3 -5
- data/lib/mocha/version.rb +1 -1
- data/lib/mocha/yield_parameters.rb +3 -7
- data/mocha.gemspec +34 -58
- data/test/acceptance/acceptance_test_helper.rb +0 -4
- data/test/acceptance/bug_18914_test.rb +7 -12
- data/test/acceptance/bug_21465_test.rb +0 -2
- data/test/acceptance/bug_21563_test.rb +0 -2
- data/test/acceptance/exception_rescue_test.rb +7 -8
- data/test/acceptance/expectations_on_multiple_methods_test.rb +2 -1
- data/test/acceptance/expected_invocation_count_test.rb +27 -29
- data/test/acceptance/failure_messages_test.rb +3 -5
- data/test/acceptance/issue_272_test.rb +0 -1
- data/test/acceptance/issue_65_test.rb +15 -13
- data/test/acceptance/issue_70_test.rb +0 -1
- data/test/acceptance/mocha_example_test.rb +5 -6
- data/test/acceptance/mocha_test_result_test.rb +7 -7
- data/test/acceptance/mock_test.rb +2 -4
- data/test/acceptance/mock_with_initializer_block_test.rb +0 -2
- data/test/acceptance/mocked_methods_dispatch_test.rb +0 -2
- data/test/acceptance/multiple_expectations_failure_message_test.rb +16 -17
- data/test/acceptance/optional_parameters_test.rb +0 -2
- data/test/acceptance/parameter_matcher_test.rb +2 -3
- data/test/acceptance/partial_mocks_test.rb +4 -6
- data/test/acceptance/prepend_test.rb +14 -16
- data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -2
- data/test/acceptance/raise_exception_test.rb +2 -4
- data/test/acceptance/return_value_test.rb +0 -2
- data/test/acceptance/sequence_test.rb +9 -11
- data/test/acceptance/states_test.rb +6 -4
- data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +5 -4
- data/test/acceptance/stub_any_instance_method_test.rb +19 -17
- data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +8 -8
- data/test/acceptance/stub_class_method_defined_on_class_test.rb +2 -1
- data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -1
- data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +7 -4
- data/test/acceptance/stub_everything_test.rb +1 -3
- data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +6 -7
- data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +2 -1
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -2
- data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -1
- data/test/acceptance/stub_module_method_test.rb +13 -13
- data/test/acceptance/stub_test.rb +1 -3
- data/test/acceptance/stubba_example_test.rb +6 -14
- data/test/acceptance/stubba_test_result_test.rb +5 -8
- data/test/acceptance/stubbing_error_backtrace_test.rb +2 -2
- data/test/acceptance/stubbing_frozen_object_test.rb +2 -1
- data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +12 -7
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -2
- data/test/acceptance/stubbing_nil_test.rb +4 -5
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +3 -3
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -2
- data/test/acceptance/stubbing_non_public_class_method_test.rb +3 -3
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +4 -10
- data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -4
- data/test/acceptance/throw_test.rb +0 -2
- data/test/acceptance/unexpected_invocation_test.rb +2 -3
- data/test/acceptance/unstubbing_test.rb +41 -14
- data/test/deprecation_disabler.rb +0 -1
- data/test/execution_point.rb +2 -4
- data/test/integration/mini_test_test.rb +2 -2
- data/test/integration/shared_tests.rb +24 -22
- data/test/integration/test_unit_test.rb +2 -2
- data/test/method_definer.rb +1 -3
- data/test/mini_test_result.rb +17 -11
- data/test/minitest_result.rb +0 -1
- data/test/simple_counter.rb +0 -2
- data/test/test_helper.rb +13 -5
- data/test/test_runner.rb +2 -4
- data/test/test_unit_result.rb +4 -2
- data/test/unit/any_instance_method_test.rb +31 -17
- data/test/unit/array_inspect_test.rb +2 -4
- data/test/unit/backtrace_filter_test.rb +3 -5
- data/test/unit/cardinality_test.rb +0 -2
- data/test/unit/central_test.rb +26 -27
- data/test/unit/change_state_side_effect_test.rb +0 -4
- data/test/unit/class_method_test.rb +59 -34
- data/test/unit/class_methods_test.rb +9 -11
- data/test/unit/configuration_test.rb +1 -2
- data/test/unit/date_time_inspect_test.rb +1 -3
- data/test/unit/exception_raiser_test.rb +0 -2
- data/test/unit/expectation_list_test.rb +0 -2
- data/test/unit/expectation_test.rb +41 -46
- data/test/unit/hash_inspect_test.rb +3 -5
- data/test/unit/hooks_test.rb +9 -4
- data/test/unit/in_state_ordering_constraint_test.rb +0 -4
- data/test/unit/method_matcher_test.rb +1 -3
- data/test/unit/mock_test.rb +35 -22
- data/test/unit/mockery_test.rb +28 -26
- data/test/unit/module_methods_test.rb +0 -2
- data/test/unit/multiple_yields_test.rb +0 -2
- data/test/unit/no_yields_test.rb +0 -2
- data/test/unit/object_inspect_test.rb +16 -7
- data/test/unit/object_methods_test.rb +6 -8
- data/test/unit/parameter_matchers/all_of_test.rb +0 -2
- data/test/unit/parameter_matchers/any_of_test.rb +0 -2
- data/test/unit/parameter_matchers/anything_test.rb +2 -4
- data/test/unit/parameter_matchers/equals_test.rb +1 -3
- data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -1
- data/test/unit/parameter_matchers/has_entries_test.rb +2 -2
- data/test/unit/parameter_matchers/has_entry_test.rb +13 -14
- data/test/unit/parameter_matchers/has_key_test.rb +0 -1
- data/test/unit/parameter_matchers/has_value_test.rb +0 -2
- data/test/unit/parameter_matchers/includes_test.rb +8 -9
- data/test/unit/parameter_matchers/instance_of_test.rb +1 -3
- data/test/unit/parameter_matchers/is_a_test.rb +1 -3
- data/test/unit/parameter_matchers/kind_of_test.rb +1 -3
- data/test/unit/parameter_matchers/not_test.rb +0 -2
- data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -2
- data/test/unit/parameter_matchers/responds_with_test.rb +9 -3
- data/test/unit/parameter_matchers/stub_matcher.rb +0 -4
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +1 -3
- data/test/unit/parameters_matcher_test.rb +2 -4
- data/test/unit/receivers_test.rb +8 -6
- data/test/unit/return_values_test.rb +3 -5
- data/test/unit/sequence_test.rb +1 -5
- data/test/unit/single_return_value_test.rb +0 -2
- data/test/unit/single_yield_test.rb +0 -2
- data/test/unit/state_machine_test.rb +1 -3
- data/test/unit/string_inspect_test.rb +2 -4
- data/test/unit/thrower_test.rb +0 -2
- data/test/unit/yield_parameters_test.rb +0 -2
- data/yard-templates/default/layout/html/setup.rb +2 -3
- metadata +22 -6
data/lib/mocha/mockery.rb
CHANGED
@@ -11,11 +11,8 @@ require 'mocha/not_initialized_error'
|
|
11
11
|
require 'mocha/expectation_error_factory'
|
12
12
|
|
13
13
|
module Mocha
|
14
|
-
|
15
14
|
class Mockery
|
16
|
-
|
17
15
|
class Null < self
|
18
|
-
|
19
16
|
def add_mock(*)
|
20
17
|
raise_not_initialized_error
|
21
18
|
end
|
@@ -34,11 +31,9 @@ module Mocha
|
|
34
31
|
message = 'Mocha methods cannot be used outside the context of a test'
|
35
32
|
raise NotInitializedError.new(message, caller)
|
36
33
|
end
|
37
|
-
|
38
34
|
end
|
39
35
|
|
40
36
|
class << self
|
41
|
-
|
42
37
|
def instance
|
43
38
|
instances.last || Null.new
|
44
39
|
end
|
@@ -65,7 +60,6 @@ module Mocha
|
|
65
60
|
def instances
|
66
61
|
@instances ||= []
|
67
62
|
end
|
68
|
-
|
69
63
|
end
|
70
64
|
|
71
65
|
def named_mock(name, &block)
|
@@ -91,18 +85,17 @@ module Mocha
|
|
91
85
|
def verify(assertion_counter = nil)
|
92
86
|
unless mocks.all? { |mock| mock.__verified__?(assertion_counter) }
|
93
87
|
message = "not all expectations were satisfied\n#{mocha_inspect}"
|
94
|
-
if unsatisfied_expectations.empty?
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
88
|
+
backtrace = if unsatisfied_expectations.empty?
|
89
|
+
caller
|
90
|
+
else
|
91
|
+
unsatisfied_expectations[0].backtrace
|
92
|
+
end
|
99
93
|
raise ExpectationErrorFactory.build(message, backtrace)
|
100
94
|
end
|
101
95
|
expectations.each do |e|
|
102
96
|
unless Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
|
103
|
-
|
104
|
-
|
105
|
-
end
|
97
|
+
next if e.used?
|
98
|
+
on_stubbing_method_unnecessarily(e)
|
106
99
|
end
|
107
100
|
end
|
108
101
|
end
|
@@ -125,22 +118,22 @@ module Mocha
|
|
125
118
|
end
|
126
119
|
|
127
120
|
def mocha_inspect
|
128
|
-
message =
|
129
|
-
message << "unsatisfied expectations:\n- #{unsatisfied_expectations.map
|
130
|
-
message << "satisfied expectations:\n- #{satisfied_expectations.map
|
131
|
-
message << "states:\n- #{state_machines.map
|
121
|
+
message = ''
|
122
|
+
message << "unsatisfied expectations:\n- #{unsatisfied_expectations.map(&:mocha_inspect).join("\n- ")}\n" unless unsatisfied_expectations.empty?
|
123
|
+
message << "satisfied expectations:\n- #{satisfied_expectations.map(&:mocha_inspect).join("\n- ")}\n" unless satisfied_expectations.empty?
|
124
|
+
message << "states:\n- #{state_machines.map(&:mocha_inspect).join("\n- ")}" unless state_machines.empty?
|
132
125
|
message
|
133
126
|
end
|
134
127
|
|
135
128
|
def on_stubbing(object, method)
|
136
129
|
method = PRE_RUBY_V19 ? method.to_s : method.to_sym
|
137
130
|
unless Mocha::Configuration.allow?(:stubbing_non_existent_method)
|
138
|
-
unless object.method_exists?(method,
|
131
|
+
unless object.method_exists?(method, true)
|
139
132
|
on_stubbing_non_existent_method(object, method)
|
140
133
|
end
|
141
134
|
end
|
142
135
|
unless Mocha::Configuration.allow?(:stubbing_non_public_method)
|
143
|
-
if object.method_exists?(method,
|
136
|
+
if object.method_exists?(method, false)
|
144
137
|
on_stubbing_non_public_method(object, method)
|
145
138
|
end
|
146
139
|
end
|
@@ -149,54 +142,48 @@ module Mocha
|
|
149
142
|
on_stubbing_method_on_nil(object, method)
|
150
143
|
end
|
151
144
|
end
|
152
|
-
|
153
|
-
|
154
|
-
end
|
145
|
+
return if Mocha::Configuration.allow?(:stubbing_method_on_non_mock_object)
|
146
|
+
on_stubbing_method_on_non_mock_object(object, method)
|
155
147
|
end
|
156
148
|
|
157
149
|
def on_stubbing_non_existent_method(object, method)
|
158
150
|
if Mocha::Configuration.prevent?(:stubbing_non_existent_method)
|
159
151
|
raise StubbingError.new("stubbing non-existent method: #{object.mocha_inspect}.#{method}", caller)
|
160
152
|
end
|
161
|
-
|
162
|
-
|
163
|
-
end
|
153
|
+
return unless Mocha::Configuration.warn_when?(:stubbing_non_existent_method)
|
154
|
+
logger.warn "stubbing non-existent method: #{object.mocha_inspect}.#{method}"
|
164
155
|
end
|
165
156
|
|
166
157
|
def on_stubbing_non_public_method(object, method)
|
167
158
|
if Mocha::Configuration.prevent?(:stubbing_non_public_method)
|
168
159
|
raise StubbingError.new("stubbing non-public method: #{object.mocha_inspect}.#{method}", caller)
|
169
160
|
end
|
170
|
-
|
171
|
-
|
172
|
-
end
|
161
|
+
return unless Mocha::Configuration.warn_when?(:stubbing_non_public_method)
|
162
|
+
logger.warn "stubbing non-public method: #{object.mocha_inspect}.#{method}"
|
173
163
|
end
|
174
164
|
|
175
165
|
def on_stubbing_method_on_nil(object, method)
|
176
166
|
if Mocha::Configuration.prevent?(:stubbing_method_on_nil)
|
177
167
|
raise StubbingError.new("stubbing method on nil: #{object.mocha_inspect}.#{method}", caller)
|
178
168
|
end
|
179
|
-
|
180
|
-
|
181
|
-
end
|
169
|
+
return unless Mocha::Configuration.warn_when?(:stubbing_method_on_nil)
|
170
|
+
logger.warn "stubbing method on nil: #{object.mocha_inspect}.#{method}"
|
182
171
|
end
|
183
172
|
|
184
173
|
def on_stubbing_method_on_non_mock_object(object, method)
|
185
174
|
if Mocha::Configuration.prevent?(:stubbing_method_on_non_mock_object)
|
186
175
|
raise StubbingError.new("stubbing method on non-mock object: #{object.mocha_inspect}.#{method}", caller)
|
187
176
|
end
|
188
|
-
|
189
|
-
|
190
|
-
end
|
177
|
+
return unless Mocha::Configuration.warn_when?(:stubbing_method_on_non_mock_object)
|
178
|
+
logger.warn "stubbing method on non-mock object: #{object.mocha_inspect}.#{method}"
|
191
179
|
end
|
192
180
|
|
193
181
|
def on_stubbing_method_unnecessarily(expectation)
|
194
182
|
if Mocha::Configuration.prevent?(:stubbing_method_unnecessarily)
|
195
183
|
raise StubbingError.new("stubbing method unnecessarily: #{expectation.method_signature}", expectation.backtrace)
|
196
184
|
end
|
197
|
-
|
198
|
-
|
199
|
-
end
|
185
|
+
return unless Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
|
186
|
+
logger.warn "stubbing method unnecessarily: #{expectation.method_signature}"
|
200
187
|
end
|
201
188
|
|
202
189
|
attr_writer :logger
|
@@ -205,7 +192,6 @@ module Mocha
|
|
205
192
|
@logger ||= Logger.new($stderr)
|
206
193
|
end
|
207
194
|
|
208
|
-
|
209
195
|
private
|
210
196
|
|
211
197
|
def expectations
|
@@ -213,11 +199,11 @@ module Mocha
|
|
213
199
|
end
|
214
200
|
|
215
201
|
def unsatisfied_expectations
|
216
|
-
expectations.reject
|
202
|
+
expectations.reject(&:verified?)
|
217
203
|
end
|
218
204
|
|
219
205
|
def satisfied_expectations
|
220
|
-
expectations.select
|
206
|
+
expectations.select(&:verified?)
|
221
207
|
end
|
222
208
|
|
223
209
|
def add_mock(mock)
|
@@ -235,7 +221,5 @@ module Mocha
|
|
235
221
|
@mocks = nil
|
236
222
|
@state_machines = nil
|
237
223
|
end
|
238
|
-
|
239
224
|
end
|
240
|
-
|
241
225
|
end
|
data/lib/mocha/module_method.rb
CHANGED
data/lib/mocha/module_methods.rb
CHANGED
data/lib/mocha/names.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module Mocha
|
2
|
-
|
3
2
|
class ImpersonatingName
|
4
|
-
|
5
3
|
def initialize(object)
|
6
4
|
@object = object
|
7
5
|
end
|
@@ -9,11 +7,9 @@ module Mocha
|
|
9
7
|
def mocha_inspect
|
10
8
|
@object.mocha_inspect
|
11
9
|
end
|
12
|
-
|
13
10
|
end
|
14
11
|
|
15
12
|
class ImpersonatingAnyInstanceName
|
16
|
-
|
17
13
|
def initialize(klass)
|
18
14
|
@klass = klass
|
19
15
|
end
|
@@ -21,11 +17,9 @@ module Mocha
|
|
21
17
|
def mocha_inspect
|
22
18
|
"#<AnyInstance:#{@klass.mocha_inspect}>"
|
23
19
|
end
|
24
|
-
|
25
20
|
end
|
26
21
|
|
27
22
|
class Name
|
28
|
-
|
29
23
|
def initialize(name)
|
30
24
|
@name = name
|
31
25
|
end
|
@@ -33,11 +27,9 @@ module Mocha
|
|
33
27
|
def mocha_inspect
|
34
28
|
"#<Mock:#{@name}>"
|
35
29
|
end
|
36
|
-
|
37
30
|
end
|
38
31
|
|
39
32
|
class DefaultName
|
40
|
-
|
41
33
|
def initialize(mock)
|
42
34
|
@mock = mock
|
43
35
|
end
|
@@ -45,9 +37,7 @@ module Mocha
|
|
45
37
|
def mocha_inspect
|
46
38
|
address = @mock.__id__ * 2
|
47
39
|
address += 0x100000000 if address < 0
|
48
|
-
"#<Mock:0x#{'%x'
|
40
|
+
"#<Mock:0x#{format('%x', address)}>"
|
49
41
|
end
|
50
|
-
|
51
42
|
end
|
52
|
-
|
53
43
|
end
|
data/lib/mocha/no_yields.rb
CHANGED
data/lib/mocha/object_methods.rb
CHANGED
@@ -4,12 +4,10 @@ require 'mocha/argument_iterator'
|
|
4
4
|
require 'mocha/expectation_error_factory'
|
5
5
|
|
6
6
|
module Mocha
|
7
|
-
|
8
7
|
# Methods added to all objects to allow mocking and stubbing on real (i.e. non-mock) objects.
|
9
8
|
#
|
10
9
|
# Both {#expects} and {#stubs} return an {Expectation} which can be further modified by methods on {Expectation}.
|
11
10
|
module ObjectMethods
|
12
|
-
|
13
11
|
# @private
|
14
12
|
alias_method :_method, :method
|
15
13
|
|
@@ -75,14 +73,14 @@ module Mocha
|
|
75
73
|
expectation = nil
|
76
74
|
mockery = Mocha::Mockery.instance
|
77
75
|
iterator = ArgumentIterator.new(expected_methods_vs_return_values)
|
78
|
-
iterator.each
|
76
|
+
iterator.each do |*args|
|
79
77
|
method_name = args.shift
|
80
78
|
mockery.on_stubbing(self, method_name)
|
81
79
|
method = stubba_method.new(stubba_object, method_name)
|
82
80
|
mockery.stubba.stub(method)
|
83
81
|
expectation = mocha.expects(method_name, caller)
|
84
|
-
expectation.returns(args.shift)
|
85
|
-
|
82
|
+
expectation.returns(args.shift) unless args.empty?
|
83
|
+
end
|
86
84
|
expectation
|
87
85
|
end
|
88
86
|
|
@@ -121,14 +119,14 @@ module Mocha
|
|
121
119
|
expectation = nil
|
122
120
|
mockery = Mocha::Mockery.instance
|
123
121
|
iterator = ArgumentIterator.new(stubbed_methods_vs_return_values)
|
124
|
-
iterator.each
|
122
|
+
iterator.each do |*args|
|
125
123
|
method_name = args.shift
|
126
124
|
mockery.on_stubbing(self, method_name)
|
127
125
|
method = stubba_method.new(stubba_object, method_name)
|
128
126
|
mockery.stubba.stub(method)
|
129
127
|
expectation = mocha.stubs(method_name, caller)
|
130
|
-
expectation.returns(args.shift)
|
131
|
-
|
128
|
+
expectation.returns(args.shift) unless args.empty?
|
129
|
+
end
|
132
130
|
expectation
|
133
131
|
end
|
134
132
|
|
@@ -166,14 +164,12 @@ module Mocha
|
|
166
164
|
# @private
|
167
165
|
def method_exists?(method, include_public_methods = true)
|
168
166
|
if include_public_methods
|
169
|
-
return true if public_methods(
|
167
|
+
return true if public_methods(true).include?(method)
|
170
168
|
return true if respond_to?(method.to_sym)
|
171
169
|
end
|
172
|
-
return true if protected_methods(
|
173
|
-
return true if private_methods(
|
174
|
-
|
170
|
+
return true if protected_methods(true).include?(method)
|
171
|
+
return true if private_methods(true).include?(method)
|
172
|
+
false
|
175
173
|
end
|
176
|
-
|
177
174
|
end
|
178
|
-
|
179
175
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require 'mocha/parameter_matchers/base'
|
2
2
|
|
3
3
|
module Mocha
|
4
|
-
|
5
4
|
module ParameterMatchers
|
6
|
-
|
7
5
|
# Matches if all +matchers+ match.
|
8
6
|
#
|
9
7
|
# @param [*Array<Base>] parameter_matchers parameter matchers.
|
@@ -28,7 +26,6 @@ module Mocha
|
|
28
26
|
|
29
27
|
# Parameter matcher which combines a number of other matchers using a logical AND.
|
30
28
|
class AllOf < Base
|
31
|
-
|
32
29
|
# @private
|
33
30
|
def initialize(*matchers)
|
34
31
|
@matchers = matchers
|
@@ -42,11 +39,8 @@ module Mocha
|
|
42
39
|
|
43
40
|
# @private
|
44
41
|
def mocha_inspect
|
45
|
-
"all_of(#{@matchers.map
|
42
|
+
"all_of(#{@matchers.map(&:mocha_inspect).join(', ')})"
|
46
43
|
end
|
47
|
-
|
48
44
|
end
|
49
|
-
|
50
45
|
end
|
51
|
-
|
52
46
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require 'mocha/parameter_matchers/base'
|
2
2
|
|
3
3
|
module Mocha
|
4
|
-
|
5
4
|
module ParameterMatchers
|
6
|
-
|
7
5
|
# Matches if any +matchers+ match.
|
8
6
|
#
|
9
7
|
# @param [*Array<Base>] parameter_matchers parameter matchers.
|
@@ -34,7 +32,6 @@ module Mocha
|
|
34
32
|
|
35
33
|
# Parameter matcher which combines a number of other matchers using a logical OR.
|
36
34
|
class AnyOf < Base
|
37
|
-
|
38
35
|
# @private
|
39
36
|
def initialize(*matchers)
|
40
37
|
@matchers = matchers
|
@@ -48,11 +45,8 @@ module Mocha
|
|
48
45
|
|
49
46
|
# @private
|
50
47
|
def mocha_inspect
|
51
|
-
"any_of(#{@matchers.map
|
48
|
+
"any_of(#{@matchers.map(&:mocha_inspect).join(', ')})"
|
52
49
|
end
|
53
|
-
|
54
50
|
end
|
55
|
-
|
56
51
|
end
|
57
|
-
|
58
52
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
require 'mocha/parameter_matchers/base'
|
2
2
|
|
3
3
|
module Mocha
|
4
|
-
|
5
4
|
module ParameterMatchers
|
6
|
-
|
7
5
|
# Matches any parameters. This is used as the default for a newly built expectation.
|
8
6
|
#
|
9
7
|
# @return [AnyParameters] parameter matcher.
|
@@ -26,22 +24,18 @@ module Mocha
|
|
26
24
|
|
27
25
|
# Parameter matcher which always matches whatever the parameters.
|
28
26
|
class AnyParameters < Base
|
29
|
-
|
30
27
|
# @private
|
31
28
|
def matches?(available_parameters)
|
32
|
-
|
29
|
+
until available_parameters.empty?
|
33
30
|
available_parameters.shift
|
34
31
|
end
|
35
|
-
|
32
|
+
true
|
36
33
|
end
|
37
34
|
|
38
35
|
# @private
|
39
36
|
def mocha_inspect
|
40
|
-
|
37
|
+
'any_parameters'
|
41
38
|
end
|
42
|
-
|
43
39
|
end
|
44
|
-
|
45
40
|
end
|
46
|
-
|
47
41
|
end
|