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
@@ -11,7 +11,7 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for MiniTest gem v2.0.0'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run runner
|
23
24
|
trap 'INFO' do
|
24
25
|
time = Time.now - runner.start_time
|
@@ -57,6 +58,7 @@ module Mocha
|
|
57
58
|
end
|
58
59
|
result
|
59
60
|
end
|
61
|
+
# rubocop:enable all
|
60
62
|
end
|
61
63
|
end
|
62
64
|
end
|
@@ -11,7 +11,7 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for MiniTest gem >= v2.0.1 <= v2.2.2'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run runner
|
23
24
|
trap 'INFO' do
|
24
25
|
time = runner.start_time ? Time.now - runner.start_time : 0
|
@@ -57,6 +58,7 @@ module Mocha
|
|
57
58
|
end
|
58
59
|
result
|
59
60
|
end
|
61
|
+
# rubocop:enable all
|
60
62
|
end
|
61
63
|
end
|
62
64
|
end
|
@@ -11,7 +11,7 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for MiniTest gem >= v2.11.0 <= v2.11.1'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run runner
|
23
24
|
trap 'INFO' do
|
24
25
|
time = runner.start_time ? Time.now - runner.start_time : 0
|
@@ -61,6 +62,7 @@ module Mocha
|
|
61
62
|
end
|
62
63
|
result
|
63
64
|
end
|
65
|
+
# rubocop:enable all
|
64
66
|
end
|
65
67
|
end
|
66
68
|
end
|
@@ -11,7 +11,7 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for MiniTest gem >= v2.11.2 <= v3.2.0'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run runner
|
23
24
|
trap "INFO" do
|
24
25
|
runner.report.each_with_index do |msg, i|
|
@@ -64,6 +65,7 @@ module Mocha
|
|
64
65
|
end
|
65
66
|
result
|
66
67
|
end
|
68
|
+
# rubocop:enable all
|
67
69
|
end
|
68
70
|
end
|
69
71
|
end
|
@@ -11,7 +11,7 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for MiniTest gem >= v2.3.0 <= v2.10.1'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run runner
|
23
24
|
trap 'INFO' do
|
24
25
|
time = runner.start_time ? Time.now - runner.start_time : 0
|
@@ -59,6 +60,7 @@ module Mocha
|
|
59
60
|
end
|
60
61
|
result
|
61
62
|
end
|
63
|
+
# rubocop:enable all
|
62
64
|
end
|
63
65
|
end
|
64
66
|
end
|
@@ -11,14 +11,12 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
if mod.method_defined?(:run_before_mocha)
|
13
13
|
Debug.puts "#{mod}#run_before_mocha method already defined"
|
14
|
+
elsif mod.method_defined?(:run)
|
15
|
+
mod.send(:alias_method, :run_before_mocha, :run)
|
16
|
+
mod.send(:remove_method, :run)
|
17
|
+
mod.send(:include, run_method_patch)
|
14
18
|
else
|
15
|
-
|
16
|
-
mod.send(:alias_method, :run_before_mocha, :run)
|
17
|
-
mod.send(:remove_method, :run)
|
18
|
-
mod.send(:include, run_method_patch)
|
19
|
-
else
|
20
|
-
raise "Unable to monkey-patch #{mod}, because it does not define a `#run` method"
|
21
|
-
end
|
19
|
+
raise "Unable to monkey-patch #{mod}, because it does not define a `#run` method"
|
22
20
|
end
|
23
21
|
end
|
24
22
|
end
|
@@ -5,7 +5,6 @@ require 'mocha/expectation_error'
|
|
5
5
|
module Mocha
|
6
6
|
module Integration
|
7
7
|
module TestUnit
|
8
|
-
|
9
8
|
# Integrates Mocha into recent versions of Test::Unit.
|
10
9
|
#
|
11
10
|
# See the source code for an example of how to integrate Mocha into a test library.
|
@@ -13,13 +12,13 @@ module Mocha
|
|
13
12
|
include Mocha::API
|
14
13
|
|
15
14
|
# @private
|
16
|
-
def self.applicable_to?(test_unit_version,
|
15
|
+
def self.applicable_to?(test_unit_version, _ruby_version = nil)
|
17
16
|
Gem::Requirement.new('>= 2.5.1').satisfied_by?(test_unit_version)
|
18
17
|
end
|
19
18
|
|
20
19
|
# @private
|
21
20
|
def self.description
|
22
|
-
|
21
|
+
'adapter for Test::Unit gem >= v2.5.1'
|
23
22
|
end
|
24
23
|
|
25
24
|
# @private
|
@@ -39,10 +38,10 @@ module Mocha
|
|
39
38
|
private
|
40
39
|
|
41
40
|
# @private
|
42
|
-
def handle_mocha_expectation_error(
|
43
|
-
return false unless
|
41
|
+
def handle_mocha_expectation_error(exception)
|
42
|
+
return false unless exception.is_a?(Mocha::ExpectationError)
|
44
43
|
problem_occurred
|
45
|
-
add_failure(
|
44
|
+
add_failure(exception.message, exception.backtrace)
|
46
45
|
true
|
47
46
|
end
|
48
47
|
end
|
@@ -6,12 +6,12 @@ module Mocha
|
|
6
6
|
module Integration
|
7
7
|
module TestUnit
|
8
8
|
module GemVersion200
|
9
|
-
def self.applicable_to?(test_unit_version,
|
9
|
+
def self.applicable_to?(test_unit_version, _ruby_version = nil)
|
10
10
|
Gem::Requirement.new('2.0.0').satisfied_by?(test_unit_version)
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for Test::Unit gem v2.0.0'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run(result)
|
23
24
|
assertion_counter = AssertionCounter.new(self)
|
24
25
|
begin
|
@@ -53,6 +54,7 @@ module Mocha
|
|
53
54
|
@_result = nil
|
54
55
|
end
|
55
56
|
end
|
57
|
+
# rubocop:enable all
|
56
58
|
end
|
57
59
|
end
|
58
60
|
end
|
@@ -6,12 +6,12 @@ module Mocha
|
|
6
6
|
module Integration
|
7
7
|
module TestUnit
|
8
8
|
module GemVersion201To202
|
9
|
-
def self.applicable_to?(test_unit_version,
|
9
|
+
def self.applicable_to?(test_unit_version, _ruby_version = nil)
|
10
10
|
Gem::Requirement.new('>= 2.0.1', '<= 2.0.2').satisfied_by?(test_unit_version)
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for Test::Unit gem >= v2.0.1 and <= v2.0.2'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run(result)
|
23
24
|
assertion_counter = AssertionCounter.new(self)
|
24
25
|
begin
|
@@ -53,6 +54,7 @@ module Mocha
|
|
53
54
|
@_result = nil
|
54
55
|
end
|
55
56
|
end
|
57
|
+
# rubocop:enable all
|
56
58
|
end
|
57
59
|
end
|
58
60
|
end
|
@@ -6,12 +6,12 @@ module Mocha
|
|
6
6
|
module Integration
|
7
7
|
module TestUnit
|
8
8
|
module GemVersion203To220
|
9
|
-
def self.applicable_to?(test_unit_version,
|
9
|
+
def self.applicable_to?(test_unit_version, _ruby_version = nil)
|
10
10
|
Gem::Requirement.new('>= 2.0.3', '<= 2.2.0').satisfied_by?(test_unit_version)
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for Test::Unit gem >= v2.0.3 and <= v2.2.0'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run(result)
|
23
24
|
assertion_counter = AssertionCounter.new(self)
|
24
25
|
begin
|
@@ -53,6 +54,7 @@ module Mocha
|
|
53
54
|
# @_result = nil # For test-spec's after_all :<
|
54
55
|
end
|
55
56
|
end
|
57
|
+
# rubocop:enable all
|
56
58
|
end
|
57
59
|
end
|
58
60
|
end
|
@@ -6,12 +6,12 @@ module Mocha
|
|
6
6
|
module Integration
|
7
7
|
module TestUnit
|
8
8
|
module GemVersion230To250
|
9
|
-
def self.applicable_to?(test_unit_version,
|
9
|
+
def self.applicable_to?(test_unit_version, _ruby_version = nil)
|
10
10
|
Gem::Requirement.new('>= 2.3.0', '<= 2.5.0').satisfied_by?(test_unit_version)
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for Test::Unit gem >= v2.3.0 and <= v2.5.0'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run(result)
|
23
24
|
assertion_counter = AssertionCounter.new(self)
|
24
25
|
begin
|
@@ -59,6 +60,7 @@ module Mocha
|
|
59
60
|
# @_result = nil # For test-spec's after_all :<
|
60
61
|
end
|
61
62
|
end
|
63
|
+
# rubocop:enable all
|
62
64
|
end
|
63
65
|
end
|
64
66
|
end
|
@@ -2,16 +2,16 @@ module Mocha
|
|
2
2
|
module Integration
|
3
3
|
module TestUnit
|
4
4
|
module Nothing
|
5
|
-
def self.applicable_to?(
|
5
|
+
def self.applicable_to?(_test_unit_version, _ruby_version = nil)
|
6
6
|
true
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.description
|
10
|
-
|
10
|
+
'nothing (no Test::Unit integration available)'
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.included(
|
14
|
-
raise
|
13
|
+
def self.included(_mod)
|
14
|
+
raise 'No Test::Unit integration available'
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -11,7 +11,7 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for standard library in Ruby <= v1.8.5'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run(result)
|
23
24
|
assertion_counter = AssertionCounter.new(self)
|
24
25
|
yield(Test::Unit::TestCase::STARTED, name)
|
@@ -52,6 +53,7 @@ module Mocha
|
|
52
53
|
result.add_run
|
53
54
|
yield(Test::Unit::TestCase::FINISHED, name)
|
54
55
|
end
|
56
|
+
# rubocop:enable all
|
55
57
|
end
|
56
58
|
end
|
57
59
|
end
|
@@ -11,7 +11,7 @@ module Mocha
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.description
|
14
|
-
|
14
|
+
'monkey patch for standard library Test::Unit in Ruby >= v1.8.6'
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.included(mod)
|
@@ -19,6 +19,7 @@ module Mocha
|
|
19
19
|
end
|
20
20
|
|
21
21
|
module RunMethodPatch
|
22
|
+
# rubocop:disable all
|
22
23
|
def run(result)
|
23
24
|
assertion_counter = AssertionCounter.new(self)
|
24
25
|
yield(Test::Unit::TestCase::STARTED, name)
|
@@ -54,6 +55,7 @@ module Mocha
|
|
54
55
|
result.add_run
|
55
56
|
yield(Test::Unit::TestCase::FINISHED, name)
|
56
57
|
end
|
58
|
+
# rubocop:enable all
|
57
59
|
end
|
58
60
|
end
|
59
61
|
end
|
data/lib/mocha/is_a.rb
CHANGED
data/lib/mocha/logger.rb
CHANGED
data/lib/mocha/method_matcher.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
module Mocha
|
2
|
-
|
3
2
|
class MethodMatcher
|
4
|
-
|
5
3
|
attr_reader :expected_method_name
|
6
4
|
|
7
5
|
def initialize(expected_method_name)
|
@@ -13,9 +11,7 @@ module Mocha
|
|
13
11
|
end
|
14
12
|
|
15
13
|
def mocha_inspect
|
16
|
-
|
14
|
+
@expected_method_name.to_s
|
17
15
|
end
|
18
|
-
|
19
16
|
end
|
20
|
-
|
21
17
|
end
|
data/lib/mocha/minitest.rb
CHANGED
data/lib/mocha/mock.rb
CHANGED
@@ -12,7 +12,6 @@ require 'mocha/deprecation'
|
|
12
12
|
require 'mocha/ruby_version'
|
13
13
|
|
14
14
|
module Mocha
|
15
|
-
|
16
15
|
# Traditional mock object.
|
17
16
|
#
|
18
17
|
# All methods return an {Expectation} which can be further modified by
|
@@ -69,7 +68,6 @@ module Mocha
|
|
69
68
|
# different mock objects, use the {Expectation#in_sequence} method to
|
70
69
|
# explicitly define a total or partial ordering of invocations.
|
71
70
|
class Mock
|
72
|
-
|
73
71
|
# Adds an expectation that the specified method must be called exactly once with any parameters.
|
74
72
|
#
|
75
73
|
# @param [Symbol,String] method_name name of expected method
|
@@ -106,13 +104,13 @@ module Mocha
|
|
106
104
|
# object.expects(:expected_method_two).returns(:result_two)
|
107
105
|
def expects(method_name_or_hash, backtrace = nil)
|
108
106
|
iterator = ArgumentIterator.new(method_name_or_hash)
|
109
|
-
iterator.each
|
107
|
+
iterator.each do |*args|
|
110
108
|
method_name = args.shift
|
111
109
|
ensure_method_not_already_defined(method_name)
|
112
110
|
expectation = Expectation.new(self, method_name, backtrace)
|
113
|
-
expectation.returns(args.shift)
|
111
|
+
expectation.returns(args.shift) unless args.empty?
|
114
112
|
@expectations.add(expectation)
|
115
|
-
|
113
|
+
end
|
116
114
|
end
|
117
115
|
|
118
116
|
# Adds an expectation that the specified method may be called any number of times with any parameters.
|
@@ -142,14 +140,14 @@ module Mocha
|
|
142
140
|
# object.stubs(:stubbed_method_two).returns(:result_two)
|
143
141
|
def stubs(method_name_or_hash, backtrace = nil)
|
144
142
|
iterator = ArgumentIterator.new(method_name_or_hash)
|
145
|
-
iterator.each
|
143
|
+
iterator.each do |*args|
|
146
144
|
method_name = args.shift
|
147
145
|
ensure_method_not_already_defined(method_name)
|
148
146
|
expectation = Expectation.new(self, method_name, backtrace)
|
149
147
|
expectation.at_least(0)
|
150
|
-
expectation.returns(args.shift)
|
148
|
+
expectation.returns(args.shift) unless args.empty?
|
151
149
|
@expectations.add(expectation)
|
152
|
-
|
150
|
+
end
|
153
151
|
end
|
154
152
|
|
155
153
|
# Removes the specified stubbed method (added by calls to {#expects} or {#stubs}) and all expectations associated with it.
|
@@ -261,10 +259,9 @@ module Mocha
|
|
261
259
|
@everything_stubbed = false
|
262
260
|
@responder = nil
|
263
261
|
@unexpected_invocation = nil
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
end
|
262
|
+
return unless block
|
263
|
+
Deprecation.warning('Passing a block is deprecated. Use Object#tap or define stubs/expectations with an explicit receiver instead.')
|
264
|
+
instance_eval(&block)
|
268
265
|
end
|
269
266
|
|
270
267
|
# @private
|
@@ -293,30 +290,30 @@ module Mocha
|
|
293
290
|
end
|
294
291
|
|
295
292
|
# @private
|
293
|
+
# rubocop:disable Style/MethodMissingSuper
|
296
294
|
def method_missing(symbol, *arguments, &block)
|
297
|
-
if @responder
|
298
|
-
raise NoMethodError, "undefined method `#{symbol}' for #{
|
295
|
+
if @responder && !@responder.respond_to?(symbol)
|
296
|
+
raise NoMethodError, "undefined method `#{symbol}' for #{mocha_inspect} which responds like #{@responder.mocha_inspect}"
|
299
297
|
end
|
300
|
-
if matching_expectation_allowing_invocation = all_expectations.match_allowing_invocation(symbol, *arguments)
|
298
|
+
if (matching_expectation_allowing_invocation = all_expectations.match_allowing_invocation(symbol, *arguments))
|
301
299
|
matching_expectation_allowing_invocation.invoke(&block)
|
302
|
-
|
303
|
-
if
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
message = @unexpected_invocation.short_description
|
311
|
-
end
|
312
|
-
raise ExpectationErrorFactory.build(message, caller)
|
300
|
+
elsif (matching_expectation = all_expectations.match(symbol, *arguments)) || (!matching_expectation && !@everything_stubbed)
|
301
|
+
if @unexpected_invocation.nil?
|
302
|
+
@unexpected_invocation = UnexpectedInvocation.new(self, symbol, *arguments)
|
303
|
+
matching_expectation.invoke(&block) if matching_expectation
|
304
|
+
message = @unexpected_invocation.full_description
|
305
|
+
message << @mockery.mocha_inspect
|
306
|
+
else
|
307
|
+
message = @unexpected_invocation.short_description
|
313
308
|
end
|
309
|
+
raise ExpectationErrorFactory.build(message, caller)
|
314
310
|
end
|
315
311
|
end
|
312
|
+
# rubocop:enable Style/MethodMissingSuper
|
316
313
|
|
317
314
|
# @private
|
318
315
|
def respond_to_missing?(symbol, include_private = false)
|
319
|
-
if @responder
|
316
|
+
if @responder
|
320
317
|
if @responder.method(:respond_to?).arity > 1
|
321
318
|
@responder.respond_to?(symbol, include_private)
|
322
319
|
else
|
@@ -351,14 +348,12 @@ module Mocha
|
|
351
348
|
|
352
349
|
# @private
|
353
350
|
def ensure_method_not_already_defined(method_name)
|
354
|
-
|
351
|
+
__metaclass__.send(:undef_method, method_name) if __metaclass__.method_defined?(method_name) || __metaclass__.private_method_defined?(method_name)
|
355
352
|
end
|
356
353
|
|
357
354
|
# @private
|
358
355
|
def any_expectations?
|
359
356
|
@expectations.any?
|
360
357
|
end
|
361
|
-
|
362
358
|
end
|
363
|
-
|
364
359
|
end
|