mocha 1.2.1 → 2.0.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/.github/FUNDING.yml +1 -0
- data/.rubocop.yml +65 -0
- data/.rubocop_todo.yml +27 -0
- data/.yardopts +1 -0
- data/CONTRIBUTING.md +4 -9
- data/Gemfile +29 -0
- data/README.md +110 -106
- data/RELEASE.md +306 -1
- data/Rakefile +52 -45
- data/gemfiles/Gemfile.minitest.latest +1 -0
- data/gemfiles/Gemfile.test-unit.latest +2 -5
- data/lib/mocha/any_instance_method.rb +9 -62
- data/lib/mocha/api.rb +84 -68
- data/lib/mocha/argument_iterator.rb +4 -8
- data/lib/mocha/backtrace_filter.rb +1 -5
- data/lib/mocha/block_matcher.rb +31 -0
- data/lib/mocha/cardinality.rb +60 -49
- data/lib/mocha/central.rb +21 -12
- data/lib/mocha/change_state_side_effect.rb +0 -4
- data/lib/mocha/class_methods.rb +19 -21
- data/lib/mocha/configuration.rb +312 -47
- data/lib/mocha/debug.rb +3 -2
- data/lib/mocha/deprecation.rb +8 -11
- data/lib/mocha/detection/mini_test.rb +0 -2
- data/lib/mocha/detection/test_unit.rb +3 -5
- data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
- data/lib/mocha/exception_raiser.rb +4 -6
- data/lib/mocha/expectation.rb +186 -95
- data/lib/mocha/expectation_error.rb +1 -1
- data/lib/mocha/expectation_error_factory.rb +0 -1
- data/lib/mocha/expectation_list.rb +7 -11
- data/lib/mocha/hooks.rb +1 -3
- data/lib/mocha/in_state_ordering_constraint.rb +0 -4
- data/lib/mocha/inspect.rb +30 -38
- data/lib/mocha/instance_method.rb +11 -8
- 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.rb +10 -31
- 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.rb +10 -26
- data/lib/mocha/invocation.rb +73 -0
- data/lib/mocha/is_a.rb +0 -2
- data/lib/mocha/logger.rb +0 -4
- data/lib/mocha/macos_version.rb +5 -0
- data/lib/mocha/method_matcher.rb +1 -5
- data/lib/mocha/minitest.rb +6 -0
- data/lib/mocha/mock.rb +99 -51
- data/lib/mocha/mockery.rb +70 -99
- data/lib/mocha/names.rb +2 -12
- data/lib/mocha/not_initialized_error.rb +7 -0
- data/lib/mocha/object_methods.rb +25 -31
- data/lib/mocha/parameter_matchers/all_of.rb +2 -8
- data/lib/mocha/parameter_matchers/any_of.rb +2 -8
- 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 +7 -13
- data/lib/mocha/parameter_matchers/equals.rb +0 -6
- data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +14 -15
- data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
- data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
- data/lib/mocha/parameter_matchers/has_key.rb +2 -7
- data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
- data/lib/mocha/parameter_matchers/has_value.rb +2 -7
- data/lib/mocha/parameter_matchers/includes.rb +6 -7
- data/lib/mocha/parameter_matchers/instance_methods.rb +27 -0
- data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
- data/lib/mocha/parameter_matchers/is_a.rb +2 -7
- data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
- data/lib/mocha/parameter_matchers/not.rb +2 -7
- data/lib/mocha/parameter_matchers/optionally.rb +4 -10
- data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +64 -0
- 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 +3 -4
- data/lib/mocha/parameters_matcher.rb +8 -11
- data/lib/mocha/raised_exception.rb +11 -0
- data/lib/mocha/receivers.rb +10 -14
- data/lib/mocha/return_values.rb +4 -8
- data/lib/mocha/ruby_version.rb +1 -2
- data/lib/mocha/sequence.rb +4 -9
- data/lib/mocha/single_return_value.rb +2 -5
- data/lib/mocha/state_machine.rb +33 -46
- data/lib/mocha/stubbed_method.rb +88 -0
- data/lib/mocha/stubbing_error.rb +2 -13
- data/lib/mocha/test_unit.rb +5 -2
- data/lib/mocha/thrower.rb +4 -6
- data/lib/mocha/thrown_object.rb +12 -0
- data/lib/mocha/version.rb +1 -1
- data/lib/mocha/yield_parameters.rb +7 -17
- data/mocha.gemspec +14 -65
- data/yard-templates/default/layout/html/google_analytics.erb +6 -9
- data/yard-templates/default/layout/html/setup.rb +2 -3
- metadata +26 -266
- data/bin/build-matrix +0 -70
- data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
- data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
- data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
- data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
- data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
- data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
- data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
- data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
- data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
- data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
- data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
- data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
- data/init.rb +0 -3
- data/lib/mocha/class_method.rb +0 -119
- data/lib/mocha/integration/mini_test/nothing.rb +0 -19
- data/lib/mocha/integration/mini_test/version_13.rb +0 -51
- data/lib/mocha/integration/mini_test/version_140.rb +0 -51
- data/lib/mocha/integration/mini_test/version_141.rb +0 -62
- data/lib/mocha/integration/mini_test/version_142_to_172.rb +0 -62
- data/lib/mocha/integration/mini_test/version_200.rb +0 -63
- data/lib/mocha/integration/mini_test/version_201_to_222.rb +0 -63
- data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +0 -67
- data/lib/mocha/integration/mini_test/version_2112_to_320.rb +0 -70
- data/lib/mocha/integration/mini_test/version_230_to_2101.rb +0 -65
- data/lib/mocha/integration/test_unit/gem_version_200.rb +0 -59
- data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +0 -59
- data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +0 -59
- data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +0 -65
- data/lib/mocha/integration/test_unit/nothing.rb +0 -19
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +0 -58
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +0 -60
- data/lib/mocha/integration.rb +0 -14
- data/lib/mocha/mini_test.rb +0 -3
- data/lib/mocha/module_method.rb +0 -16
- data/lib/mocha/module_methods.rb +0 -14
- data/lib/mocha/multiple_yields.rb +0 -20
- data/lib/mocha/no_yields.rb +0 -11
- data/lib/mocha/parameter_matchers/object.rb +0 -17
- data/lib/mocha/pretty_parameters.rb +0 -28
- data/lib/mocha/setup.rb +0 -9
- data/lib/mocha/single_yield.rb +0 -18
- data/lib/mocha/standalone.rb +0 -4
- data/lib/mocha/unexpected_invocation.rb +0 -26
- data/lib/mocha_standalone.rb +0 -4
- data/test/acceptance/acceptance_test_helper.rb +0 -41
- data/test/acceptance/bug_18914_test.rb +0 -43
- data/test/acceptance/bug_21465_test.rb +0 -34
- data/test/acceptance/bug_21563_test.rb +0 -25
- data/test/acceptance/exception_rescue_test.rb +0 -55
- data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
- data/test/acceptance/expected_invocation_count_test.rb +0 -232
- data/test/acceptance/failure_messages_test.rb +0 -64
- data/test/acceptance/issue_272_test.rb +0 -52
- data/test/acceptance/issue_65_test.rb +0 -63
- data/test/acceptance/issue_70_test.rb +0 -55
- data/test/acceptance/mocha_example_test.rb +0 -98
- data/test/acceptance/mocha_test_result_test.rb +0 -84
- data/test/acceptance/mock_test.rb +0 -100
- data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
- data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
- data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
- data/test/acceptance/optional_parameters_test.rb +0 -70
- data/test/acceptance/parameter_matcher_test.rb +0 -337
- data/test/acceptance/partial_mocks_test.rb +0 -47
- data/test/acceptance/prepend_test.rb +0 -89
- data/test/acceptance/raise_exception_test.rb +0 -39
- data/test/acceptance/return_value_test.rb +0 -52
- data/test/acceptance/sequence_test.rb +0 -192
- data/test/acceptance/states_test.rb +0 -70
- data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
- data/test/acceptance/stub_any_instance_method_test.rb +0 -280
- data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
- data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
- data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
- data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
- data/test/acceptance/stub_everything_test.rb +0 -56
- data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
- data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
- data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
- data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
- data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -78
- data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
- data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
- data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -39
- data/test/acceptance/stub_module_method_test.rb +0 -163
- data/test/acceptance/stub_test.rb +0 -52
- data/test/acceptance/stubba_example_test.rb +0 -102
- data/test/acceptance/stubba_test_result_test.rb +0 -66
- data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
- data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
- data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
- data/test/acceptance/stubbing_nil_test.rb +0 -61
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -143
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
- data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
- data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
- data/test/acceptance/throw_test.rb +0 -45
- data/test/acceptance/unexpected_invocation_test.rb +0 -25
- data/test/acceptance/unstubbing_test.rb +0 -168
- data/test/assertions.rb +0 -8
- data/test/deprecation_disabler.rb +0 -15
- data/test/execution_point.rb +0 -36
- data/test/integration/mini_test_test.rb +0 -8
- data/test/integration/shared_tests.rb +0 -174
- data/test/integration/test_unit_test.rb +0 -8
- data/test/method_definer.rb +0 -24
- data/test/mini_test_result.rb +0 -90
- data/test/minitest_result.rb +0 -49
- data/test/simple_counter.rb +0 -13
- data/test/test_helper.rb +0 -50
- data/test/test_runner.rb +0 -58
- data/test/test_unit_result.rb +0 -20
- data/test/unit/any_instance_method_test.rb +0 -134
- data/test/unit/array_inspect_test.rb +0 -16
- data/test/unit/backtrace_filter_test.rb +0 -19
- data/test/unit/cardinality_test.rb +0 -56
- data/test/unit/central_test.rb +0 -100
- data/test/unit/change_state_side_effect_test.rb +0 -41
- data/test/unit/class_method_test.rb +0 -225
- data/test/unit/class_methods_test.rb +0 -40
- data/test/unit/configuration_test.rb +0 -38
- data/test/unit/date_time_inspect_test.rb +0 -21
- data/test/unit/exception_raiser_test.rb +0 -42
- data/test/unit/expectation_list_test.rb +0 -82
- data/test/unit/expectation_test.rb +0 -497
- data/test/unit/hash_inspect_test.rb +0 -16
- data/test/unit/hooks_test.rb +0 -29
- data/test/unit/in_state_ordering_constraint_test.rb +0 -43
- data/test/unit/method_matcher_test.rb +0 -28
- data/test/unit/mock_test.rb +0 -342
- data/test/unit/mockery_test.rb +0 -151
- data/test/unit/module_methods_test.rb +0 -19
- data/test/unit/multiple_yields_test.rb +0 -18
- data/test/unit/no_yields_test.rb +0 -18
- data/test/unit/object_inspect_test.rb +0 -39
- data/test/unit/object_methods_test.rb +0 -46
- data/test/unit/parameter_matchers/all_of_test.rb +0 -26
- data/test/unit/parameter_matchers/any_of_test.rb +0 -26
- data/test/unit/parameter_matchers/anything_test.rb +0 -21
- data/test/unit/parameter_matchers/equals_test.rb +0 -25
- data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
- data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
- data/test/unit/parameter_matchers/has_key_test.rb +0 -55
- data/test/unit/parameter_matchers/has_value_test.rb +0 -57
- data/test/unit/parameter_matchers/includes_test.rb +0 -102
- data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
- data/test/unit/parameter_matchers/is_a_test.rb +0 -25
- data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
- data/test/unit/parameter_matchers/not_test.rb +0 -26
- data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
- data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
- data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
- data/test/unit/parameters_matcher_test.rb +0 -121
- data/test/unit/receivers_test.rb +0 -66
- data/test/unit/return_values_test.rb +0 -63
- data/test/unit/sequence_test.rb +0 -104
- data/test/unit/single_return_value_test.rb +0 -14
- data/test/unit/single_yield_test.rb +0 -18
- data/test/unit/state_machine_test.rb +0 -98
- data/test/unit/string_inspect_test.rb +0 -11
- data/test/unit/thrower_test.rb +0 -20
- data/test/unit/yield_parameters_test.rb +0 -93
data/lib/mocha/inspect.rb
CHANGED
@@ -1,67 +1,59 @@
|
|
1
1
|
require 'date'
|
2
2
|
|
3
3
|
module Mocha
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
module Inspect
|
5
|
+
module ObjectMethods
|
6
|
+
def mocha_inspect
|
7
|
+
address = __id__ * 2
|
8
|
+
address += 0x100000000 if address < 0
|
9
|
+
inspect =~ /#</ ? "#<#{self.class}:0x#{Kernel.format('%x', address)}>" : inspect
|
10
|
+
end
|
10
11
|
end
|
11
|
-
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
module ArrayMethods
|
14
|
+
def mocha_inspect(wrapped = true)
|
15
|
+
unwrapped = collect(&:mocha_inspect).join(', ')
|
16
|
+
wrapped ? "[#{unwrapped}]" : unwrapped
|
17
|
+
end
|
16
18
|
end
|
17
|
-
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
module HashMethods
|
21
|
+
def mocha_inspect
|
22
|
+
unwrapped = collect { |key, value| "#{key.mocha_inspect} => #{value.mocha_inspect}" }.join(', ')
|
23
|
+
Hash.ruby2_keywords_hash?(self) ? unwrapped : "{#{unwrapped}}"
|
24
|
+
end
|
22
25
|
end
|
23
|
-
end
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
module TimeMethods
|
28
|
+
def mocha_inspect
|
29
|
+
"#{inspect} (#{to_f} secs)"
|
30
|
+
end
|
28
31
|
end
|
29
|
-
end
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
33
|
+
module DateMethods
|
34
|
+
def mocha_inspect
|
35
|
+
to_s
|
36
|
+
end
|
34
37
|
end
|
35
38
|
end
|
36
|
-
|
37
|
-
module DateMethods
|
38
|
-
def mocha_inspect
|
39
|
-
to_s
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
39
|
end
|
44
40
|
|
45
41
|
class Object
|
46
|
-
include Mocha::ObjectMethods
|
47
|
-
end
|
48
|
-
|
49
|
-
class String
|
50
|
-
include Mocha::StringMethods
|
42
|
+
include Mocha::Inspect::ObjectMethods
|
51
43
|
end
|
52
44
|
|
53
45
|
class Array
|
54
|
-
include Mocha::ArrayMethods
|
46
|
+
include Mocha::Inspect::ArrayMethods
|
55
47
|
end
|
56
48
|
|
57
49
|
class Hash
|
58
|
-
include Mocha::HashMethods
|
50
|
+
include Mocha::Inspect::HashMethods
|
59
51
|
end
|
60
52
|
|
61
53
|
class Time
|
62
|
-
include Mocha::TimeMethods
|
54
|
+
include Mocha::Inspect::TimeMethods
|
63
55
|
end
|
64
56
|
|
65
57
|
class Date
|
66
|
-
include Mocha::DateMethods
|
58
|
+
include Mocha::Inspect::DateMethods
|
67
59
|
end
|
@@ -1,16 +1,19 @@
|
|
1
|
-
require 'mocha/
|
1
|
+
require 'mocha/stubbed_method'
|
2
2
|
|
3
3
|
module Mocha
|
4
|
+
class InstanceMethod < StubbedMethod
|
5
|
+
private
|
4
6
|
|
5
|
-
|
7
|
+
def mock_owner
|
8
|
+
stubbee
|
9
|
+
end
|
6
10
|
|
7
|
-
def
|
8
|
-
|
9
|
-
return true if stubbee.protected_methods(false).include?(method)
|
10
|
-
return true if stubbee.private_methods(false).include?(method)
|
11
|
-
return false
|
11
|
+
def stubbee_method(method_name)
|
12
|
+
stubbee._method(method_name)
|
12
13
|
end
|
13
14
|
|
15
|
+
def original_method_owner
|
16
|
+
stubbee.singleton_class
|
17
|
+
end
|
14
18
|
end
|
15
|
-
|
16
19
|
end
|
@@ -5,7 +5,6 @@ require 'mocha/expectation_error_factory'
|
|
5
5
|
module Mocha
|
6
6
|
module Integration
|
7
7
|
module MiniTest
|
8
|
-
|
9
8
|
# Integrates Mocha into recent versions of MiniTest.
|
10
9
|
#
|
11
10
|
# See the source code for an example of how to integrate Mocha into a test library.
|
@@ -19,11 +18,11 @@ module Mocha
|
|
19
18
|
|
20
19
|
# @private
|
21
20
|
def self.description
|
22
|
-
|
21
|
+
'adapter for MiniTest gem >= v3.3.0'
|
23
22
|
end
|
24
23
|
|
25
24
|
# @private
|
26
|
-
def self.included(
|
25
|
+
def self.included(_mod)
|
27
26
|
Mocha::ExpectationErrorFactory.exception_class = ::MiniTest::Assertion
|
28
27
|
end
|
29
28
|
|
@@ -51,4 +50,3 @@ module Mocha
|
|
51
50
|
end
|
52
51
|
end
|
53
52
|
end
|
54
|
-
|
@@ -4,7 +4,7 @@ module Mocha
|
|
4
4
|
module Integration
|
5
5
|
module MiniTest
|
6
6
|
def self.translate(exception)
|
7
|
-
return exception unless exception.
|
7
|
+
return exception unless exception.is_a?(::Mocha::ExpectationError)
|
8
8
|
translated_exception = ::MiniTest::Assertion.new(exception.message)
|
9
9
|
translated_exception.set_backtrace(exception.backtrace)
|
10
10
|
translated_exception
|
@@ -1,47 +1,26 @@
|
|
1
1
|
require 'mocha/debug'
|
2
|
-
|
3
2
|
require 'mocha/detection/mini_test'
|
4
|
-
|
5
|
-
require 'mocha/integration/mini_test/nothing'
|
6
|
-
require 'mocha/integration/mini_test/version_13'
|
7
|
-
require 'mocha/integration/mini_test/version_140'
|
8
|
-
require 'mocha/integration/mini_test/version_141'
|
9
|
-
require 'mocha/integration/mini_test/version_142_to_172'
|
10
|
-
require 'mocha/integration/mini_test/version_200'
|
11
|
-
require 'mocha/integration/mini_test/version_201_to_222'
|
12
|
-
require 'mocha/integration/mini_test/version_230_to_2101'
|
13
|
-
require 'mocha/integration/mini_test/version_2110_to_2111'
|
14
|
-
require 'mocha/integration/mini_test/version_2112_to_320'
|
15
3
|
require 'mocha/integration/mini_test/adapter'
|
16
4
|
|
17
5
|
module Mocha
|
18
6
|
module Integration
|
19
7
|
module MiniTest
|
20
8
|
def self.activate
|
21
|
-
|
22
|
-
|
9
|
+
target = Detection::MiniTest.testcase
|
10
|
+
return false unless target
|
23
11
|
|
12
|
+
mini_test_version = Gem::Version.new(Detection::MiniTest.version)
|
24
13
|
Debug.puts "Detected MiniTest version: #{mini_test_version}"
|
25
14
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
MiniTest::Version2110To2111,
|
30
|
-
MiniTest::Version230To2101,
|
31
|
-
MiniTest::Version201To222,
|
32
|
-
MiniTest::Version200,
|
33
|
-
MiniTest::Version142To172,
|
34
|
-
MiniTest::Version141,
|
35
|
-
MiniTest::Version140,
|
36
|
-
MiniTest::Version13,
|
37
|
-
MiniTest::Nothing
|
38
|
-
].detect { |m| m.applicable_to?(mini_test_version) }
|
15
|
+
unless MiniTest::Adapter.applicable_to?(mini_test_version)
|
16
|
+
raise 'Versions of minitest earlier than v3.3.0 are not supported.'
|
17
|
+
end
|
39
18
|
|
40
|
-
target
|
41
|
-
|
42
|
-
|
43
|
-
target.send(:include, integration_module)
|
19
|
+
unless target < MiniTest::Adapter
|
20
|
+
Debug.puts "Applying #{MiniTest::Adapter.description}"
|
21
|
+
target.send(:include, MiniTest::Adapter)
|
44
22
|
end
|
23
|
+
|
45
24
|
true
|
46
25
|
end
|
47
26
|
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)
|
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
|
@@ -1,42 +1,26 @@
|
|
1
1
|
require 'mocha/debug'
|
2
|
-
|
3
2
|
require 'mocha/detection/test_unit'
|
4
|
-
|
5
|
-
require 'mocha/integration/test_unit/nothing'
|
6
|
-
require 'mocha/integration/test_unit/ruby_version_185_and_below'
|
7
|
-
require 'mocha/integration/test_unit/ruby_version_186_and_above'
|
8
|
-
require 'mocha/integration/test_unit/gem_version_200'
|
9
|
-
require 'mocha/integration/test_unit/gem_version_201_to_202'
|
10
|
-
require 'mocha/integration/test_unit/gem_version_203_to_220'
|
11
|
-
require 'mocha/integration/test_unit/gem_version_230_to_250'
|
12
3
|
require 'mocha/integration/test_unit/adapter'
|
13
4
|
|
14
5
|
module Mocha
|
15
6
|
module Integration
|
16
7
|
module TestUnit
|
17
8
|
def self.activate
|
18
|
-
|
19
|
-
|
20
|
-
ruby_version = Gem::Version.new(RUBY_VERSION.dup)
|
9
|
+
target = Detection::TestUnit.testcase
|
10
|
+
return false unless target
|
21
11
|
|
22
|
-
|
12
|
+
test_unit_version = Gem::Version.new(Detection::TestUnit.version)
|
23
13
|
Debug.puts "Detected Test::Unit version: #{test_unit_version}"
|
24
14
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
TestUnit::GemVersion203To220,
|
29
|
-
TestUnit::GemVersion201To202,
|
30
|
-
TestUnit::GemVersion200,
|
31
|
-
TestUnit::RubyVersion186AndAbove,
|
32
|
-
TestUnit::RubyVersion185AndBelow,
|
33
|
-
TestUnit::Nothing
|
34
|
-
].detect { |m| m.applicable_to?(test_unit_version, ruby_version) }
|
15
|
+
unless TestUnit::Adapter.applicable_to?(test_unit_version)
|
16
|
+
raise 'Versions of test-unit earlier than v2.5.1 are not supported.'
|
17
|
+
end
|
35
18
|
|
36
|
-
unless
|
37
|
-
Debug.puts "Applying #{
|
38
|
-
|
19
|
+
unless target < TestUnit::Adapter
|
20
|
+
Debug.puts "Applying #{TestUnit::Adapter.description}"
|
21
|
+
target.send(:include, TestUnit::Adapter)
|
39
22
|
end
|
23
|
+
|
40
24
|
true
|
41
25
|
end
|
42
26
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'mocha/parameters_matcher'
|
2
|
+
require 'mocha/raised_exception'
|
3
|
+
require 'mocha/return_values'
|
4
|
+
require 'mocha/thrown_object'
|
5
|
+
require 'mocha/yield_parameters'
|
6
|
+
|
7
|
+
module Mocha
|
8
|
+
class Invocation
|
9
|
+
attr_reader :method_name, :block
|
10
|
+
|
11
|
+
def initialize(mock, method_name, arguments = [], block = nil)
|
12
|
+
@mock = mock
|
13
|
+
@method_name = method_name
|
14
|
+
@arguments = arguments
|
15
|
+
@block = block
|
16
|
+
@yields = []
|
17
|
+
@result = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def call(yield_parameters = YieldParameters.new, return_values = ReturnValues.new)
|
21
|
+
yield_parameters.next_invocation.each do |yield_args|
|
22
|
+
@yields << ParametersMatcher.new(yield_args)
|
23
|
+
raise LocalJumpError unless @block
|
24
|
+
@block.call(*yield_args)
|
25
|
+
end
|
26
|
+
return_values.next(self)
|
27
|
+
end
|
28
|
+
|
29
|
+
def returned(value)
|
30
|
+
@result = value
|
31
|
+
end
|
32
|
+
|
33
|
+
def raised(exception)
|
34
|
+
@result = RaisedException.new(exception)
|
35
|
+
end
|
36
|
+
|
37
|
+
def threw(tag, value)
|
38
|
+
@result = ThrownObject.new(tag, value)
|
39
|
+
end
|
40
|
+
|
41
|
+
def arguments
|
42
|
+
@arguments.dup
|
43
|
+
end
|
44
|
+
|
45
|
+
def call_description
|
46
|
+
description = "#{@mock.mocha_inspect}.#{@method_name}#{argument_description}"
|
47
|
+
description << ' { ... }' unless @block.nil?
|
48
|
+
description
|
49
|
+
end
|
50
|
+
|
51
|
+
def short_call_description
|
52
|
+
"#{@method_name}(#{@arguments.join(', ')})"
|
53
|
+
end
|
54
|
+
|
55
|
+
def result_description
|
56
|
+
desc = "# => #{@result.mocha_inspect}"
|
57
|
+
desc << " after yielding #{@yields.map(&:mocha_inspect).join(', then ')}" if @yields.any?
|
58
|
+
desc
|
59
|
+
end
|
60
|
+
|
61
|
+
def full_description
|
62
|
+
"\n - #{call_description} #{result_description}"
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def argument_description
|
68
|
+
signature = arguments.mocha_inspect
|
69
|
+
signature = signature.gsub(/^\[|\]$/, '')
|
70
|
+
"(#{signature})"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
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
|