mocha 1.4.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/README.md +12 -71
- data/RELEASE.md +19 -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 +21 -12
- data/lib/mocha/change_state_side_effect.rb +0 -4
- data/lib/mocha/class_method.rb +31 -37
- data/lib/mocha/class_methods.rb +11 -15
- data/lib/mocha/configuration.rb +69 -10
- 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 +13 -0
- 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 +1 -3
- 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/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 +4 -1
- data/lib/mocha/integration/mini_test/version_140.rb +4 -1
- data/lib/mocha/integration/mini_test/version_141.rb +4 -1
- data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
- data/lib/mocha/integration/mini_test/version_200.rb +4 -1
- data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
- data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
- data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
- data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -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 +5 -2
- data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
- data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
- data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
- data/lib/mocha/integration/test_unit/nothing.rb +4 -4
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
- data/lib/mocha/integration.rb +3 -4
- 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 +62 -43
- data/lib/mocha/module_method.rb +0 -10
- 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 +7 -0
- data/lib/mocha/object_methods.rb +16 -16
- 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/parameter_matchers.rb +0 -2
- data/lib/mocha/parameters_matcher.rb +6 -9
- data/lib/mocha/pretty_parameters.rb +0 -4
- data/lib/mocha/receivers.rb +10 -14
- 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 +2 -13
- 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 -6
- 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 +77 -0
- 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 +33 -2
- 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 +34 -1
- 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 +63 -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 +34 -5
- 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 +14 -8
- 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 +45 -28
- 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 +22 -6
- 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 +35 -5
- 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 +25 -6
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingNonExistentAnyInstanceMethodTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -67,7 +66,7 @@ class StubbingNonExistentAnyInstanceMethodTest < Mocha::TestCase
|
|
67
66
|
def test_should_allow_stubbing_method_to_which_any_instance_responds
|
68
67
|
Mocha::Configuration.prevent(:stubbing_non_existent_method)
|
69
68
|
klass = Class.new do
|
70
|
-
def respond_to?(method,
|
69
|
+
def respond_to?(method, _include_private = false)
|
71
70
|
(method == :method_to_which_instance_responds)
|
72
71
|
end
|
73
72
|
end
|
@@ -139,5 +138,4 @@ class StubbingNonExistentAnyInstanceMethodTest < Mocha::TestCase
|
|
139
138
|
end
|
140
139
|
assert_passed(test_result)
|
141
140
|
end
|
142
|
-
|
143
141
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingNonExistentClassMethodTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -52,6 +51,7 @@ class StubbingNonExistentClassMethodTest < Mocha::TestCase
|
|
52
51
|
assert_passed(test_result)
|
53
52
|
end
|
54
53
|
|
54
|
+
# rubocop:disable Lint/DuplicateMethods
|
55
55
|
def test_should_allow_stubbing_existing_public_class_method
|
56
56
|
Mocha::Configuration.prevent(:stubbing_non_existent_method)
|
57
57
|
klass = Class.new do
|
@@ -70,7 +70,7 @@ class StubbingNonExistentClassMethodTest < Mocha::TestCase
|
|
70
70
|
Mocha::Configuration.prevent(:stubbing_non_existent_method)
|
71
71
|
klass = Class.new do
|
72
72
|
class << self
|
73
|
-
def respond_to?(method,
|
73
|
+
def respond_to?(method, _include_private = false)
|
74
74
|
(method == :method_to_which_class_responds)
|
75
75
|
end
|
76
76
|
end
|
@@ -153,5 +153,5 @@ class StubbingNonExistentClassMethodTest < Mocha::TestCase
|
|
153
153
|
end
|
154
154
|
assert_passed(test_result)
|
155
155
|
end
|
156
|
-
|
156
|
+
# rubocop:enable Lint/DuplicateMethods
|
157
157
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingNonExistentInstanceMethodTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -68,7 +67,7 @@ class StubbingNonExistentInstanceMethodTest < Mocha::TestCase
|
|
68
67
|
def test_should_allow_stubbing_method_to_which_instance_responds
|
69
68
|
Mocha::Configuration.prevent(:stubbing_non_existent_method)
|
70
69
|
klass = Class.new do
|
71
|
-
def respond_to?(method,
|
70
|
+
def respond_to?(method, _include_private = false)
|
72
71
|
(method == :method_to_which_instance_responds)
|
73
72
|
end
|
74
73
|
end
|
@@ -143,5 +142,4 @@ class StubbingNonExistentInstanceMethodTest < Mocha::TestCase
|
|
143
142
|
end
|
144
143
|
assert_passed(test_result)
|
145
144
|
end
|
146
|
-
|
147
145
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingNonPublicAnyInstanceMethodTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -126,5 +125,4 @@ class StubbingNonPublicAnyInstanceMethodTest < Mocha::TestCase
|
|
126
125
|
end
|
127
126
|
assert_passed(test_result)
|
128
127
|
end
|
129
|
-
|
130
128
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingNonPublicClassMethodTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -13,6 +12,7 @@ class StubbingNonPublicClassMethodTest < Mocha::TestCase
|
|
13
12
|
teardown_acceptance_test
|
14
13
|
end
|
15
14
|
|
15
|
+
# rubocop:disable Lint/DuplicateMethods
|
16
16
|
def test_should_allow_stubbing_private_class_method
|
17
17
|
Mocha::Configuration.allow(:stubbing_non_public_method)
|
18
18
|
klass = Class.new do
|
@@ -144,12 +144,13 @@ class StubbingNonPublicClassMethodTest < Mocha::TestCase
|
|
144
144
|
end
|
145
145
|
assert_passed(test_result)
|
146
146
|
end
|
147
|
+
# rubocop:enable Lint/DuplicateMethods
|
147
148
|
|
148
149
|
def test_should_allow_stubbing_method_to_which_class_responds
|
149
150
|
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
150
151
|
klass = Class.new do
|
151
152
|
class << self
|
152
|
-
def respond_to?(method,
|
153
|
+
def respond_to?(method, _include_private_methods = false)
|
153
154
|
(method == :method_to_which_class_responds)
|
154
155
|
end
|
155
156
|
end
|
@@ -159,5 +160,4 @@ class StubbingNonPublicClassMethodTest < Mocha::TestCase
|
|
159
160
|
end
|
160
161
|
assert_passed(test_result)
|
161
162
|
end
|
162
|
-
|
163
163
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingNonPublicInstanceMethodTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -130,7 +129,7 @@ class StubbingNonPublicInstanceMethodTest < Mocha::TestCase
|
|
130
129
|
def test_should_allow_stubbing_method_to_which_instance_responds
|
131
130
|
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
132
131
|
instance = Class.new do
|
133
|
-
def respond_to?(method,
|
132
|
+
def respond_to?(method, _include_private_methods = false)
|
134
133
|
(method == :method_to_which_instance_responds)
|
135
134
|
end
|
136
135
|
end.new
|
@@ -139,5 +138,4 @@ class StubbingNonPublicInstanceMethodTest < Mocha::TestCase
|
|
139
138
|
end
|
140
139
|
assert_passed(test_result)
|
141
140
|
end
|
142
|
-
|
143
141
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingOnNonMockObjectTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -16,8 +15,7 @@ class StubbingOnNonMockObjectTest < Mocha::TestCase
|
|
16
15
|
def test_should_allow_stubbing_method_on_non_mock_object
|
17
16
|
Mocha::Configuration.allow(:stubbing_method_on_non_mock_object)
|
18
17
|
non_mock_object = Class.new do
|
19
|
-
def existing_method
|
20
|
-
end
|
18
|
+
def existing_method; end
|
21
19
|
end
|
22
20
|
test_result = run_as_test do
|
23
21
|
non_mock_object.stubs(:existing_method)
|
@@ -29,8 +27,7 @@ class StubbingOnNonMockObjectTest < Mocha::TestCase
|
|
29
27
|
def test_should_warn_on_stubbing_method_on_non_mock_object
|
30
28
|
Mocha::Configuration.warn_when(:stubbing_method_on_non_mock_object)
|
31
29
|
non_mock_object = Class.new do
|
32
|
-
def existing_method
|
33
|
-
end
|
30
|
+
def existing_method; end
|
34
31
|
end
|
35
32
|
test_result = run_as_test do
|
36
33
|
non_mock_object.stubs(:existing_method)
|
@@ -42,8 +39,7 @@ class StubbingOnNonMockObjectTest < Mocha::TestCase
|
|
42
39
|
def test_should_prevent_stubbing_method_on_non_mock_object
|
43
40
|
Mocha::Configuration.prevent(:stubbing_method_on_non_mock_object)
|
44
41
|
non_mock_object = Class.new do
|
45
|
-
def existing_method
|
46
|
-
end
|
42
|
+
def existing_method; end
|
47
43
|
end
|
48
44
|
test_result = run_as_test do
|
49
45
|
non_mock_object.stubs(:existing_method)
|
@@ -54,8 +50,7 @@ class StubbingOnNonMockObjectTest < Mocha::TestCase
|
|
54
50
|
|
55
51
|
def test_should_default_to_allow_stubbing_method_on_non_mock_object
|
56
52
|
non_mock_object = Class.new do
|
57
|
-
def existing_method
|
58
|
-
end
|
53
|
+
def existing_method; end
|
59
54
|
end
|
60
55
|
test_result = run_as_test do
|
61
56
|
non_mock_object.stubs(:existing_method)
|
@@ -72,5 +67,4 @@ class StubbingOnNonMockObjectTest < Mocha::TestCase
|
|
72
67
|
end
|
73
68
|
assert_passed(test_result)
|
74
69
|
end
|
75
|
-
|
76
70
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class StubbingSameClassMethodOnParentAndChildClassTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -16,14 +15,14 @@ class StubbingSameClassMethodOnParentAndChildClassTest < Mocha::TestCase
|
|
16
15
|
def test_stubbing_same_method_on_parent_and_child_classes
|
17
16
|
parent_class = Class.new do
|
18
17
|
def self.foo
|
19
|
-
|
18
|
+
'Parent.foo'
|
20
19
|
end
|
21
20
|
end
|
22
21
|
child_class = Class.new(parent_class)
|
23
22
|
test_result = run_as_tests(
|
24
23
|
:test_1 => lambda {
|
25
|
-
parent_class.stubs(:foo).returns(
|
26
|
-
child_class.stubs(:foo).returns(
|
24
|
+
parent_class.stubs(:foo).returns('stubbed Parent.foo')
|
25
|
+
child_class.stubs(:foo).returns('stubbed Child.foo')
|
27
26
|
},
|
28
27
|
:test_2 => lambda {
|
29
28
|
parent_class.foo
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class ThrowTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -41,5 +40,4 @@ class ThrowTest < Mocha::TestCase
|
|
41
40
|
end
|
42
41
|
assert_passed(test_result)
|
43
42
|
end
|
44
|
-
|
45
43
|
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class UnexpectedInvocationTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -20,6 +19,6 @@ class UnexpectedInvocationTest < Mocha::TestCase
|
|
20
19
|
instance.inspect(1, 2, 'foo')
|
21
20
|
end
|
22
21
|
assert_failed(test_result)
|
23
|
-
assert_equal
|
22
|
+
assert_equal 'unexpected invocation: inspect(1, 2, foo)', test_result.failure_message_lines[0]
|
24
23
|
end
|
25
|
-
end
|
24
|
+
end
|
@@ -2,7 +2,6 @@ require File.expand_path('../acceptance_test_helper', __FILE__)
|
|
2
2
|
require 'mocha/setup'
|
3
3
|
|
4
4
|
class UnstubbingTest < Mocha::TestCase
|
5
|
-
|
6
5
|
include AcceptanceTest
|
7
6
|
|
8
7
|
def setup
|
@@ -15,7 +14,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
15
14
|
|
16
15
|
def test_unstubbing_an_instance_method_should_restore_original_behaviour
|
17
16
|
klass = Class.new do
|
18
|
-
def my_instance_method
|
17
|
+
def my_instance_method
|
18
|
+
:original_return_value
|
19
|
+
end
|
19
20
|
end
|
20
21
|
test_result = run_as_test do
|
21
22
|
object = klass.new
|
@@ -28,7 +29,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
28
29
|
|
29
30
|
def test_unstubbing_a_class_method_should_restore_original_behaviour
|
30
31
|
klass = Class.new do
|
31
|
-
def self.my_class_method
|
32
|
+
def self.my_class_method
|
33
|
+
:original_return_value
|
34
|
+
end
|
32
35
|
end
|
33
36
|
test_result = run_as_test do
|
34
37
|
klass.stubs(:my_class_method).returns(:new_return_value)
|
@@ -40,7 +43,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
40
43
|
|
41
44
|
def test_unstubbing_a_module_method_should_restore_original_behaviour
|
42
45
|
mod = Module.new do
|
43
|
-
def self.my_module_method
|
46
|
+
def self.my_module_method
|
47
|
+
:original_return_value
|
48
|
+
end
|
44
49
|
end
|
45
50
|
test_result = run_as_test do
|
46
51
|
mod.stubs(:my_module_method).returns(:new_return_value)
|
@@ -52,7 +57,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
52
57
|
|
53
58
|
def test_unstubbing_a_module_method_defined_like_fileutils_in_ruby_2_0_should_restore_original_behaviour
|
54
59
|
mod = Module.new do
|
55
|
-
def my_module_method
|
60
|
+
def my_module_method
|
61
|
+
:original_return_value
|
62
|
+
end
|
56
63
|
private :my_module_method
|
57
64
|
extend self
|
58
65
|
class << self
|
@@ -69,7 +76,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
69
76
|
|
70
77
|
def test_unstubbing_an_any_instance_method_should_restore_original_behaviour
|
71
78
|
klass = Class.new do
|
72
|
-
def my_instance_method
|
79
|
+
def my_instance_method
|
80
|
+
:original_return_value
|
81
|
+
end
|
73
82
|
end
|
74
83
|
test_result = run_as_test do
|
75
84
|
object = klass.new
|
@@ -82,8 +91,13 @@ class UnstubbingTest < Mocha::TestCase
|
|
82
91
|
|
83
92
|
def test_unstubbing_multiple_methods_should_restore_original_behaviour
|
84
93
|
klass = Class.new do
|
85
|
-
def my_first_instance_method
|
86
|
-
|
94
|
+
def my_first_instance_method
|
95
|
+
:original_return_value
|
96
|
+
end
|
97
|
+
|
98
|
+
def my_second_instance_method
|
99
|
+
:original_return_value
|
100
|
+
end
|
87
101
|
end
|
88
102
|
test_result = run_as_test do
|
89
103
|
object = klass.new
|
@@ -98,7 +112,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
98
112
|
|
99
113
|
def test_unstubbing_a_method_multiple_times_should_restore_original_behaviour
|
100
114
|
klass = Class.new do
|
101
|
-
def my_instance_method
|
115
|
+
def my_instance_method
|
116
|
+
:original_return_value
|
117
|
+
end
|
102
118
|
end
|
103
119
|
test_result = run_as_test do
|
104
120
|
object = klass.new
|
@@ -112,7 +128,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
112
128
|
|
113
129
|
def test_unstubbing_a_non_stubbed_method_should_do_nothing
|
114
130
|
klass = Class.new do
|
115
|
-
def my_instance_method
|
131
|
+
def my_instance_method
|
132
|
+
:original_return_value
|
133
|
+
end
|
116
134
|
end
|
117
135
|
test_result = run_as_test do
|
118
136
|
object = klass.new
|
@@ -124,7 +142,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
124
142
|
|
125
143
|
def test_unstubbing_a_method_which_was_stubbed_multiple_times_should_restore_orginal_behaviour
|
126
144
|
klass = Class.new do
|
127
|
-
def my_instance_method
|
145
|
+
def my_instance_method
|
146
|
+
:original_return_value
|
147
|
+
end
|
128
148
|
end
|
129
149
|
test_result = run_as_test do
|
130
150
|
object = klass.new
|
@@ -138,8 +158,13 @@ class UnstubbingTest < Mocha::TestCase
|
|
138
158
|
|
139
159
|
def test_unstubbing_a_method_should_not_unstub_other_stubbed_methods
|
140
160
|
klass = Class.new do
|
141
|
-
def my_first_instance_method
|
142
|
-
|
161
|
+
def my_first_instance_method
|
162
|
+
:first_return_value
|
163
|
+
end
|
164
|
+
|
165
|
+
def my_second_instance_method
|
166
|
+
:second_return_value
|
167
|
+
end
|
143
168
|
end
|
144
169
|
|
145
170
|
test_result = run_as_test do
|
@@ -155,7 +180,9 @@ class UnstubbingTest < Mocha::TestCase
|
|
155
180
|
|
156
181
|
def test_unstubbing_a_method_should_remove_all_expectations_for_that_method
|
157
182
|
klass = Class.new do
|
158
|
-
def my_instance_method
|
183
|
+
def my_instance_method
|
184
|
+
:original_return_value
|
185
|
+
end
|
159
186
|
end
|
160
187
|
test_result = run_as_test do
|
161
188
|
object = klass.new
|
data/test/execution_point.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
class ExecutionPoint
|
2
|
-
|
3
2
|
attr_reader :backtrace
|
4
3
|
|
5
4
|
def self.current
|
@@ -11,7 +10,7 @@ class ExecutionPoint
|
|
11
10
|
end
|
12
11
|
|
13
12
|
def first_relevant_line_of_backtrace
|
14
|
-
@backtrace && (@backtrace.reject { |l|
|
13
|
+
@backtrace && (@backtrace.reject { |l| %r{\Aorg/jruby/}.match(l) }.first || 'unknown:0')
|
15
14
|
end
|
16
15
|
|
17
16
|
def file_name
|
@@ -24,7 +23,7 @@ class ExecutionPoint
|
|
24
23
|
|
25
24
|
def ==(other)
|
26
25
|
return false unless other.is_a?(ExecutionPoint)
|
27
|
-
(file_name == other.file_name)
|
26
|
+
(file_name == other.file_name) && (line_number == other.line_number)
|
28
27
|
end
|
29
28
|
|
30
29
|
def to_s
|
@@ -34,5 +33,4 @@ class ExecutionPoint
|
|
34
33
|
def inspect
|
35
34
|
to_s
|
36
35
|
end
|
37
|
-
|
38
36
|
end
|
@@ -11,6 +11,7 @@ module SharedTests
|
|
11
11
|
assert_passed(test_result)
|
12
12
|
end
|
13
13
|
|
14
|
+
# rubocop:disable Style/Semicolon
|
14
15
|
def test_assertion_unsatisfied
|
15
16
|
execution_point = nil
|
16
17
|
test_result = run_as_test do
|
@@ -24,19 +25,19 @@ module SharedTests
|
|
24
25
|
def test_mock_object_unexpected_invocation
|
25
26
|
execution_point = nil
|
26
27
|
test_result = run_as_test do
|
27
|
-
mock = mock(
|
28
|
+
mock = mock('not expecting invocation')
|
28
29
|
execution_point = ExecutionPoint.current; mock.unexpected
|
29
30
|
end
|
30
31
|
assert_failed(test_result)
|
31
32
|
failure = test_result.failures.first
|
32
33
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
33
|
-
assert_equal [
|
34
|
+
assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
|
34
35
|
end
|
35
36
|
|
36
37
|
def test_mock_object_explicitly_unexpected_invocation
|
37
38
|
execution_point = nil
|
38
39
|
test_result = run_as_test do
|
39
|
-
mock = mock(
|
40
|
+
mock = mock('not expecting invocation')
|
40
41
|
mock.expects(:unexpected).never
|
41
42
|
execution_point = ExecutionPoint.current; mock.unexpected
|
42
43
|
end
|
@@ -44,25 +45,25 @@ module SharedTests
|
|
44
45
|
failure = test_result.failures.first
|
45
46
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
46
47
|
assert_equal [
|
47
|
-
|
48
|
-
|
49
|
-
|
48
|
+
'unexpected invocation: #<Mock:not expecting invocation>.unexpected()',
|
49
|
+
'unsatisfied expectations:',
|
50
|
+
'- expected never, invoked once: #<Mock:not expecting invocation>.unexpected(any_parameters)'
|
50
51
|
], test_result.failure_message_lines
|
51
52
|
end
|
52
53
|
|
53
54
|
def test_mock_object_unsatisfied_expectation
|
54
55
|
execution_point = nil
|
55
56
|
test_result = run_as_test do
|
56
|
-
mock = mock(
|
57
|
+
mock = mock('expecting invocation')
|
57
58
|
execution_point = ExecutionPoint.current; mock.expects(:expected)
|
58
59
|
end
|
59
60
|
assert_failed(test_result)
|
60
61
|
failure = test_result.failures.first
|
61
62
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
62
63
|
assert_equal [
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
'not all expectations were satisfied',
|
65
|
+
'unsatisfied expectations:',
|
66
|
+
'- expected exactly once, not yet invoked: #<Mock:expecting invocation>.expected(any_parameters)'
|
66
67
|
], test_result.failure_message_lines
|
67
68
|
end
|
68
69
|
|
@@ -70,7 +71,7 @@ module SharedTests
|
|
70
71
|
execution_point = nil
|
71
72
|
test_result = run_as_tests(
|
72
73
|
:setup => lambda {
|
73
|
-
mock = mock(
|
74
|
+
mock = mock('not expecting invocation')
|
74
75
|
execution_point = ExecutionPoint.current; mock.unexpected
|
75
76
|
},
|
76
77
|
:test_me => lambda {
|
@@ -80,14 +81,14 @@ module SharedTests
|
|
80
81
|
assert_failed(test_result)
|
81
82
|
failure = test_result.failures.first
|
82
83
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
83
|
-
assert_equal [
|
84
|
+
assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
|
84
85
|
end
|
85
86
|
|
86
87
|
def test_mock_object_unsatisfied_expectation_in_setup
|
87
88
|
execution_point = nil
|
88
89
|
test_result = run_as_tests(
|
89
90
|
:setup => lambda {
|
90
|
-
mock = mock(
|
91
|
+
mock = mock('expecting invocation')
|
91
92
|
execution_point = ExecutionPoint.current; mock.expects(:expected)
|
92
93
|
},
|
93
94
|
:test_me => lambda {
|
@@ -98,9 +99,9 @@ module SharedTests
|
|
98
99
|
failure = test_result.failures.first
|
99
100
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
100
101
|
assert_equal [
|
101
|
-
|
102
|
-
|
103
|
-
|
102
|
+
'not all expectations were satisfied',
|
103
|
+
'unsatisfied expectations:',
|
104
|
+
'- expected exactly once, not yet invoked: #<Mock:expecting invocation>.expected(any_parameters)'
|
104
105
|
], test_result.failure_message_lines
|
105
106
|
end
|
106
107
|
|
@@ -111,14 +112,14 @@ module SharedTests
|
|
111
112
|
assert true
|
112
113
|
},
|
113
114
|
:teardown => lambda {
|
114
|
-
mock = mock(
|
115
|
+
mock = mock('not expecting invocation')
|
115
116
|
execution_point = ExecutionPoint.current; mock.unexpected
|
116
117
|
}
|
117
118
|
)
|
118
119
|
assert_failed(test_result)
|
119
120
|
failure = test_result.failures.first
|
120
121
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
121
|
-
assert_equal [
|
122
|
+
assert_equal ['unexpected invocation: #<Mock:not expecting invocation>.unexpected()'], test_result.failure_message_lines
|
122
123
|
end
|
123
124
|
|
124
125
|
def test_real_object_explicitly_unexpected_invocation
|
@@ -133,7 +134,7 @@ module SharedTests
|
|
133
134
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
134
135
|
assert_equal [
|
135
136
|
"unexpected invocation: #{object.mocha_inspect}.unexpected()",
|
136
|
-
|
137
|
+
'unsatisfied expectations:',
|
137
138
|
"- expected never, invoked once: #{object.mocha_inspect}.unexpected(any_parameters)"
|
138
139
|
], test_result.failure_message_lines
|
139
140
|
end
|
@@ -148,8 +149,8 @@ module SharedTests
|
|
148
149
|
failure = test_result.failures.first
|
149
150
|
assert_equal execution_point, ExecutionPoint.new(failure.location)
|
150
151
|
assert_equal [
|
151
|
-
|
152
|
-
|
152
|
+
'not all expectations were satisfied',
|
153
|
+
'unsatisfied expectations:',
|
153
154
|
"- expected exactly once, not yet invoked: #{object.mocha_inspect}.expected(any_parameters)"
|
154
155
|
], test_result.failure_message_lines
|
155
156
|
end
|
@@ -169,6 +170,7 @@ module SharedTests
|
|
169
170
|
assert_failed(test_result)
|
170
171
|
exception = test_result.errors.first.exception
|
171
172
|
assert_equal execution_point, ExecutionPoint.new(exception.backtrace)
|
172
|
-
assert_match
|
173
|
+
assert_match(/undefined method `foo'/, exception.message)
|
173
174
|
end
|
175
|
+
# rubocop:enable Style/Semicolon
|
174
176
|
end
|
data/test/method_definer.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
require 'metaclass'
|
2
2
|
|
3
3
|
module Mocha
|
4
|
-
|
5
4
|
module ObjectMethods
|
6
5
|
def define_instance_method(method_symbol, &block)
|
7
6
|
__metaclass__.send(:define_method, method_symbol, block)
|
8
7
|
end
|
9
8
|
|
10
9
|
def replace_instance_method(method_symbol, &block)
|
11
|
-
raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless
|
10
|
+
raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless respond_to?(method_symbol)
|
12
11
|
define_instance_method(method_symbol, &block)
|
13
12
|
end
|
14
13
|
|
@@ -16,7 +15,6 @@ module Mocha
|
|
16
15
|
symbols.each { |symbol| __metaclass__.send(:attr_accessor, symbol) }
|
17
16
|
end
|
18
17
|
end
|
19
|
-
|
20
18
|
end
|
21
19
|
|
22
20
|
class Object
|