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/RELEASE.md
CHANGED
@@ -1,5 +1,310 @@
|
|
1
1
|
# Release Notes
|
2
2
|
|
3
|
+
## 2.0.0
|
4
|
+
|
5
|
+
### External changes
|
6
|
+
|
7
|
+
* Remove support for Ruby v1.9 - thanks to @wasabigeek (#552)
|
8
|
+
* Support strict keyword argument matching - see docs for `Expectation#with` & `Configuration#strict_keyword_argument_matching=` - thanks to @wasabigeek (#446,#535,#544,#562)
|
9
|
+
* Deprecate `Hash` args that don't strictly match (#563,981c31be)
|
10
|
+
* Drop support for older versions of test-unit - gem versions of test-unit earlier than v2.5.1 and versions of test-unit
|
11
|
+
from the Ruby v1.8 standard library are no longer supported (#540,969f4845)
|
12
|
+
* Drop support for older versions of minitest - versions of minitest earlier than v3.3.0 are no longer supported (#541,ca69dc9e)
|
13
|
+
* Remove deprecated `mocha/setup.rb` mechanism (642a0ff4)
|
14
|
+
* Add missing docs for `API#stub` parameter (257b4cb4)
|
15
|
+
* Remove optional reinstatement of v1.9 behaviour (#436,#438,#569,1473ee25)
|
16
|
+
* Remove deprecated methods in `Configuration` (#421,e7ff7528)
|
17
|
+
* Fail fast when mock receives invocations in another test (#440,#442,cb054d59)
|
18
|
+
* Improve docs re using matchers in `Expectation#with` (da7237cd)
|
19
|
+
* Expand `Expectation#with` docs re keyword arguments (fed6808d)
|
20
|
+
* Improve docs for `strict_keyword_argument_matching` (8d8f881d)
|
21
|
+
* Remove deprecated Rails plugin `init.rb` file (1c617175)
|
22
|
+
* Improve strict keyword argument matching deprecation warning by including the source location of the stub definition (77c0d4cc)
|
23
|
+
* Add README section re semantic versioning (00758246)
|
24
|
+
|
25
|
+
### Internal changes
|
26
|
+
|
27
|
+
* Separate linting from tests in terms of Rake tasks & CircleCI jobs - thanks to @wasabigeek (#556)
|
28
|
+
* Remove tests specific to Ruby v1.8 behaviour (46fca7ac, 3b369e99)
|
29
|
+
* Multi-line rubocop disable in `Mock#method_missing` (af2194c4)
|
30
|
+
* Remove unused arg for `HashMethods#mocha_inspect` (4f59e27f)
|
31
|
+
* Improve test runner assertions - failure vs error (eec7200a)
|
32
|
+
* Improve test coverage of `PositionalOrKeywordHash` (c294fe70)
|
33
|
+
* More consistent Test::Unit & Minitest integration (27dd3817)
|
34
|
+
* Remove redundant `require` statements (d82218a8,fa17b114)
|
35
|
+
* Add missing `require` statement (73493761)
|
36
|
+
* Disable Style/Semicolon cop globally (8cd0b705)
|
37
|
+
|
38
|
+
## 1.16.0
|
39
|
+
|
40
|
+
### External changes
|
41
|
+
|
42
|
+
* Default `Configuration#reinstate_undocumented_behaviour_from_v1_9=` to `false` (6fcaf947)
|
43
|
+
* Deprecate `Configuration#reinstate_undocumented_behaviour_from_v1_9=` (a797c5fd)
|
44
|
+
|
45
|
+
### Internal changes
|
46
|
+
|
47
|
+
* Remove redundant deprecation disabling in MockTest (dc8ca969)
|
48
|
+
|
49
|
+
## 1.15.0
|
50
|
+
|
51
|
+
### External changes
|
52
|
+
|
53
|
+
* Fix examples using mock constructor with block (1cc17667)
|
54
|
+
* Add another example for `API#sequence` (b7a7d233, #59)
|
55
|
+
* Remove support for Ruby v1.8 (ddb5d672)
|
56
|
+
* Deprecate support for Ruby versions earlier than v2.0 - thanks to @wasabigeek (#553, #555)
|
57
|
+
|
58
|
+
### Internal changes
|
59
|
+
|
60
|
+
* Update instructions for obtaining Rubygems API key (ed9c040a)
|
61
|
+
* Consistent definitions for `respond_to?` methods (#533)
|
62
|
+
* Run test tasks before release tasks (92a1bc6e, #447)
|
63
|
+
* Fix test:performance Rake task (#538, #539)
|
64
|
+
* Tidying following removal of support for Ruby v1.8 - thanks to @nitishr (#542)
|
65
|
+
* Remove `ParametersMatcher` from `Invocation#call_description` - thanks to @wasabigeek (#543)
|
66
|
+
* Remove unnecessary splatting in Invocation - thanks to @wasabigeek (#549)
|
67
|
+
* Extract `handle_method_call` from `method_missing` - thanks to @wasabigeek (#550)
|
68
|
+
|
69
|
+
## 1.14.0
|
70
|
+
|
71
|
+
### External changes
|
72
|
+
|
73
|
+
* Mock#expects,#stubs should return last expectation - thanks to @vlad-pisanov for #524 (b6b637db)
|
74
|
+
|
75
|
+
### Internal changes
|
76
|
+
|
77
|
+
* Avoid breaking change in psych v4 in ruby v3.1 (08b9f4ca)
|
78
|
+
* Remove broken Dependabot badge from README (d446657a)
|
79
|
+
* Add Ruby 3.0 to the CI matrix - thanks to @mishina2228 for #526 (65bc626e)
|
80
|
+
* Move development dependencies from gemspec to Gemfile - thanks to @mishina2228 for #527 (dd127f7b)
|
81
|
+
|
82
|
+
## 1.13.0
|
83
|
+
|
84
|
+
### External changes
|
85
|
+
|
86
|
+
* Add `ParameterMatchers#has_keys` - thanks to @cstyles for #512 (18d8104)
|
87
|
+
* Fix misleading exception message in `ParameterMatchers#has_entry` - thanks to @cstyles for #513 (9c4ef13)
|
88
|
+
* Only add dependency on rubocop if we're actually going to use it (f2f879f)
|
89
|
+
* Fix rake dependency constraints for older Ruby versions (7ce5f29)
|
90
|
+
|
91
|
+
### Internal changes
|
92
|
+
|
93
|
+
* Check documentation can be generated as part of CircleCI build (b30d9a9)
|
94
|
+
* Add --fail-on-warning option to yard rake task (53a6ee3)
|
95
|
+
* Add a weekly scheduled build to the CircleCI build (fd2a4c6)
|
96
|
+
* Add Ruby v1.8 to the CircleCI build matrix (818ca03)
|
97
|
+
* Add API token to fix CircleCI badge in README (607c5aa)
|
98
|
+
* Provide wrapped option for #mocha_inspect on hashes & arrays (d8f44bc)
|
99
|
+
* Use CircleCI instead of TravisCI for automated builds (c98c6ec)
|
100
|
+
* Switch to newer default Travis CI build env (c78f75c)
|
101
|
+
* Use latest Ruby versions in Travis CI builds (9e0043a)
|
102
|
+
* Use latest JRuby v9.2.18 in Travis CI builds (8c99a1b)
|
103
|
+
* Use consistent JRuby versions in Travis CI builds (0f849aa)
|
104
|
+
* Use more recent version of JRuby in Travis CI build matrix (58653db)
|
105
|
+
|
106
|
+
## 1.12.0
|
107
|
+
|
108
|
+
### External changes
|
109
|
+
|
110
|
+
* Various improvements to README inspired by #207 and #390 - thanks to @nitishr for his work on #390 (fed0eee6)
|
111
|
+
* Improve documentation related to `StateMachine` classes - thanks to @nitishr (#425 & #427)
|
112
|
+
* Fix regression in cardinality introduced in v1.10.0 (59454a8) and reported in #473 - thanks to @srvance for reporting and @nitishr for fixing (#474)
|
113
|
+
* Fix documentation for `Mocha::Expectation#when` - thanks to @olleolleolle (b4f59daa & #477)
|
114
|
+
* Remove `Mocha::Mock#respond_to?` from documentation - thanks to @nitishr (#480)
|
115
|
+
* Improvements to documentation for `Expectation#yields` & `#multiple_yields` - thanks to @andyw8 for reporting in #495 (1b6571c)
|
116
|
+
* Remove documentation & tests from gem to reduce its size by over 50% - thanks to @gabetax (#500)
|
117
|
+
* Update documentation to point to travis-ci.com instead of travis-ci.org
|
118
|
+
|
119
|
+
### Internal changes
|
120
|
+
|
121
|
+
* Refactor `StateMachine`-related classes - thanks to @nitishr (#425 & #427)
|
122
|
+
* Remove redundant test - thanks to @nitishr (8e4f1a7c)
|
123
|
+
* Add Ruby 2.7 to Travis CI matrix - thanks to @bastelfreak (fc5ea2f2)
|
124
|
+
* Simplify `Mockery` - thanks to @nitishr (#449)
|
125
|
+
* Update Travis CI badge to point to main vs master branch (bd8028f8)
|
126
|
+
* Generate docs using newer version of yard (v0.9.25) (c619afac)
|
127
|
+
* Manually upgrade jquery in docs from v1.7.1 -> v1.9.0 to fix CVE-2017-16011 (211098a5, dd5eeedb & 1b76e4d5; also see #492)
|
128
|
+
* Remove reference to non-existent jquery source map to fix error in Chrome developer tools (20156555)
|
129
|
+
* Temporarily ignore Ruby v1.8.7 build failures (e5b9feef)
|
130
|
+
|
131
|
+
## 1.11.2
|
132
|
+
|
133
|
+
### External changes
|
134
|
+
|
135
|
+
* Fix regression introduced in v1.10.0 that meant `Object#inspect` was called unnecessarily (368abd98)
|
136
|
+
* Warn when mock object receives invocations in another test - thanks to @nitishr (#442)
|
137
|
+
* Avoid rubocop comments appearing in YARD-generated docs (d8019eed)
|
138
|
+
|
139
|
+
### Internal changes
|
140
|
+
|
141
|
+
* Replace `StubbedMethod#original_method` & `#original_visibility` attribute reader methods with instance variables - thanks to @nitishr (d917f332)
|
142
|
+
* Set up `MochaExampleTest` & `StubbaExampleTest` as acceptance tests - thanks to @nitishr (4881cc58)
|
143
|
+
* Delete unused `PrettyParameters` class - thanks to @nitishr (314ea922)
|
144
|
+
|
145
|
+
## 1.11.1
|
146
|
+
|
147
|
+
### External changes
|
148
|
+
|
149
|
+
* The `reinstate_undocumented_behaviour_from_v1_9` configuration option is now enabled by default to give people a chance to see and fix the relevant deprecation warnings before the behaviour is removed in a future release (b91b1c9e)
|
150
|
+
|
151
|
+
## 1.11.0
|
152
|
+
|
153
|
+
### External changes
|
154
|
+
|
155
|
+
* Add `Expectation#with_block_given` & `Expectation#with_no_block_given` (#441).
|
156
|
+
* Allows non-deprecated solution for #382. Thanks to @yemartin for reporting and to @techbelly & @nitishr for feedback.
|
157
|
+
* Fix issue with non-Array arguments passed to `Expectation#multiple_yields` (#444).
|
158
|
+
* The undocumented behaviour is now properly supported and documented.
|
159
|
+
|
160
|
+
### Internal changes
|
161
|
+
|
162
|
+
* Move static YARD options from Rake task to `.yardopts` file - thanks to @nitishr (#429)
|
163
|
+
* Simplify implementation of yielding functionality - thanks to @nitishr (#439)
|
164
|
+
* Add missing require statement to `acceptance_test_helper.rb` (1070fc02)
|
165
|
+
* Add some baseline acceptance tests for yielding behaviour (c2cac911)
|
166
|
+
* Display a sponsor button on GitHub repo page (9fc5911b)
|
167
|
+
* Use new Deprecation.warning behaviour in `Invocation#call` (932d1166)
|
168
|
+
|
169
|
+
## 1.10.2
|
170
|
+
|
171
|
+
* Optionally reinstate undocumented behaviour from v1.9. This introduces a new configuration option (`reinstate_undocumented_behaviour_from_v1_9`) to reinstate a couple of bits of undocumented behaviour from v1.9 which were changed in v1.10 without any prior deprecation warning (#438):
|
172
|
+
* The behaviour of `API#mock`, `API#stub` and `API#stub_everything` when called with a symbol as the first argument.
|
173
|
+
* The behaviour of `Expectation#yields` and `Expectation#multiple_yields` when the stubbed method is called without a block.
|
174
|
+
|
175
|
+
## 1.10.1
|
176
|
+
|
177
|
+
* Ensure ObjectMethods & ClassMethods included when API extended (43778756)
|
178
|
+
* Fix regression in `any_instance` stubbing of methods on object which has an implementation of `#respond_to?` that depends on the object's internal state - thanks to @rafaelfranca for reporting & @nitishr for fixing (#432, #434, 469d4b17)
|
179
|
+
|
180
|
+
## 1.10.0
|
181
|
+
|
182
|
+
* Improve deprecation warning when requiring 'mocha/setup' (388f44d7)
|
183
|
+
* Add documentation for Cucumber integration (13ab797b)
|
184
|
+
* Add documentation about an undocumented feature of `API#mock`, `API#stub` & `API#stub_everything` being changed (7ed2e4e7, d30c1717)
|
185
|
+
|
186
|
+
## 1.10.0.beta.1
|
187
|
+
|
188
|
+
* Hide `ClassMethods#method_visibility` & `#method_exists?` methods to avoid clash with Rails (#428)
|
189
|
+
|
190
|
+
## 1.10.0.alpha
|
191
|
+
|
192
|
+
### External changes
|
193
|
+
|
194
|
+
* Remove dependency on metaclass gem (#49, #365)
|
195
|
+
* Accept symbol (as well as a string) as mock/stub name - thanks to @nitishr (#347, #353, #377)
|
196
|
+
* More realistic examples in documentation for `Expectation#yields` and `#multiple_yields` - thanks to @nitishr (#352, #383)
|
197
|
+
* Improve documentation for `Mock#responds_like` & `#responds_like_instance_of` - thanks to @nitishr (#337, #384)
|
198
|
+
* Make `Expectation#yields` & `Expectation#multiple_yields` fail when the caller of the stubbed method does not provide a block. This is a change to an undocumented aspect of the public API's behaviour. If this causes your tests to fail, then fix it by removing the unnecessary call to `Expectation#yields` or `Expectation#multiple_yields` - thanks to @nitishr (#382)
|
199
|
+
* Document `MOCHA_OPTIONS` in README - thanks to @nitishr (#311, #386)
|
200
|
+
* Add documentation to explain how Mocha is intended to be used - thanks to @nitishr (#330, #385)
|
201
|
+
* Deprecation warning if integration using 'mocha/test_unit' or 'mocha/minitest' fails - thanks to @nitishr (#229, #389, c6032d0b)
|
202
|
+
* Require at least one specified sequence for `Expectation#in_sequence` - thanks to @nitishr (#79, #396, 9020248a)
|
203
|
+
* Make signatures of `Mock#unstub` & `ObjectMethods#unstub` consistent - thanks to @nitishr (#397, f04d437)
|
204
|
+
* Deprecate requiring 'mocha/setup' (36adf880)
|
205
|
+
* Optionally display matching invocations alongside expectations - thanks to @nitishr (#178, #394, 00f0540, #410)
|
206
|
+
* Put deprecations into effect (#400, #418):
|
207
|
+
* Remove deprecated 'mocha_standalone.rb' & 'mocha/standalone.rb'
|
208
|
+
* Fail fast if no test library loaded
|
209
|
+
* Removed optional block for `Mocha::API#mock`, `#stub` & `#stub_everything`
|
210
|
+
* Remove deprecated `ParameterMatchers#has_equivalent_query_string` method
|
211
|
+
* Remove deprecated 'mocha/mini_test.rb'
|
212
|
+
* Fix typo in docs for `Mocha::Configuration.prevent` (266ce71c)
|
213
|
+
* New-style configuration (see documentation for `Mocha::Configuration`) (#407, #421)
|
214
|
+
* Deprecate support for Ruby versions earlier than v1.9 (#325, c5f8496d)
|
215
|
+
* Deprecate support for versions of test-unit & minitest which need monkey-patching (a34e1a88)
|
216
|
+
* Deprecate old-style Rails plugin (#403, 2df77134)
|
217
|
+
* Documentation fixes & improvements which also fix YARD warnings (472d5416, a2c0d64a)
|
218
|
+
|
219
|
+
### Internal changes
|
220
|
+
|
221
|
+
* Pin minitest to v5.11.3 for Ruby v1.8.7 to fix build; minitest no longer supports Ruby v1.8.7 (4a0a580)
|
222
|
+
* Upgrade JRuby to v9.2.8.0 in Travis CI builds (aa29b3f)
|
223
|
+
* Only run rubocop for MRI Ruby versions & non-integration test builds (8f1c6af)
|
224
|
+
* Reduce duplication in any instance method class - thanks to @nitishr (#378)
|
225
|
+
* Simplify `AnyInstanceMethod`, `ClassMethod`, `InstanceMethod`, `ModuleMethod` class hierarchy - thanks to @nitishr (#381)
|
226
|
+
* Simplify `ClassMethods#method_exists?` & `ObjectMethods#method_exists?` making them consistent - thanks to @nitishr (#270, #362, #370)
|
227
|
+
* Don't override definition of `singleton_class` in `ClassMethods` - thanks to @nitishr (#391, #392)
|
228
|
+
* Do not include 'method_definer' methods into all objects (#268, #402)
|
229
|
+
* Distinguish different `ObjectMethods` modules (#268, #404)
|
230
|
+
* Pass invocation to expectation list methods - thanks to @nitishr (#408, #409, #411)
|
231
|
+
* Consistently use `assert_raises` - thanks to @nitishr (#405, #412, a66b7bed)
|
232
|
+
* Update Ruby & JRuby versions in Travis CI config (18cb1a93, eb061c53)
|
233
|
+
* Rubocop improvements (aa16ea67...6f4db70b, 2a1240e6...e95716ae)
|
234
|
+
* Fix inconsistency in CardinalityTest (aa10e0a8)
|
235
|
+
* Fix test failures on Mac OSX Catalina - thanks to @nitishr (#413, #417, #419, 8a0f2535)
|
236
|
+
* Remove default argument in `Expectation#invoke` - thanks to @nitishr (#414, #420)
|
237
|
+
|
238
|
+
## 1.9.0
|
239
|
+
|
240
|
+
* Add TruffleRuby to Travis CI build matrix - thanks to @deepj (#354)
|
241
|
+
* Explicitly set Travis CI OS to Ubuntu Trusty 14.04 (ded1fa45)
|
242
|
+
* Expand explanation of thread-safety concerns - thanks to @techbelly (#357)
|
243
|
+
* Refactor class method and any instance method - thanks to @chrisroos (#358)
|
244
|
+
* Rely on default bundler version in Travis CI builds (3352e9c5)
|
245
|
+
* Fix local build-matrix script (11abe231)
|
246
|
+
* No need to install latest bundler in build-matrix script (8247a894)
|
247
|
+
|
248
|
+
## 1.8.0
|
249
|
+
|
250
|
+
* Constrain rubocop version to avoid breaking Travis CI builds (05e507f5)
|
251
|
+
* Avoid calling Kernel#format from ObjectMethods#mocha_inspect - thanks to @hoffmanilya (#345)
|
252
|
+
* Fix build matrix script (#346)
|
253
|
+
* Avoid deprecation warning in gemspec (4976e0bc)
|
254
|
+
* Removed link to documentation translation (ef428ea2)
|
255
|
+
* Don't use the new bundler v2 in builds (683ded9b)
|
256
|
+
* Moved documentation from https://gofreerange.com/mocha/docs to https://mocha.jamesmead.org/ [683ded...a17fde](https://github.com/freerange/mocha/compare/683ded...a17fde)
|
257
|
+
|
258
|
+
## 1.7.0
|
259
|
+
|
260
|
+
* Update Ruby & JRuby versions in Travis CI config (9bf55631 & 3883af7e)
|
261
|
+
* Simplify gemspec (63744f86)
|
262
|
+
* Add rubocop and fix most cop violations (#341)
|
263
|
+
* Use Kernel#warn for deprecations - thanks to @etiennebarrie (#333, 196970a)
|
264
|
+
|
265
|
+
## 1.6.0
|
266
|
+
|
267
|
+
* Fix subtle bug in setting correct visibility of stubbed module methods on `Kernel` or `Object` - thanks to @chrisroos (#295)
|
268
|
+
* Avoid mocks for partial mocking leaking into subsequent tests - thanks to @skliew for reporting (#331)
|
269
|
+
* Remove OpenCollective badge, backers & sponsors (a283a079)
|
270
|
+
* Change gem version badge to SVG format and add SemVer stability badge - thanks to @greysteil (#335)
|
271
|
+
* Improve documentation for Configuration (#236)
|
272
|
+
|
273
|
+
## 1.5.0
|
274
|
+
|
275
|
+
* Prevent use of Mocha outside the context of a test/example - thanks to @andyw8 & @lzap (#327)
|
276
|
+
|
277
|
+
## 1.4.0
|
278
|
+
|
279
|
+
* Fix deprecation warning for `assert_nil` in `ClassMethodTest` (#308 & #309)
|
280
|
+
* Display file and line number in deprecation warning - thanks to @chrisarcand (#310, #312 & #313)
|
281
|
+
* Rename `mocha/mini_test.rb` to `mocha/minitest.rb` - thanks to @grosser (#320 & #322)
|
282
|
+
* Fix warning when delegating to mock in Ruby 2.4 - thanks to @tjvc (#321 & #323)
|
283
|
+
* Updates to Travis CI configuration ([73af600..9732726](https://github.com/freerange/mocha/compare/73af600...9732726) & 0426e5e)
|
284
|
+
|
285
|
+
## 1.3.0
|
286
|
+
|
287
|
+
* Ensure all tests run individually - thanks to @chrisroos (#267)
|
288
|
+
* Update Travis CI build status badge to show master branch status (#264)
|
289
|
+
* Correct RSpec section of the README - thanks to @myronmarston (0cc039c8)
|
290
|
+
* Fix pretty printing of quotes in `String#mocha_inspect` (#215 & #223)
|
291
|
+
* Add release instructions to README - thanks to @chrisroos (70a5febd & 3c664df7)
|
292
|
+
* Require at least Ruby v1.8.7 in gemspec - thanks to @knappe (3e20be8e)
|
293
|
+
* Remove redundant InstanceMethod#method_exists? - thanks to @chrisroos (8f58eddf)
|
294
|
+
* Reduce risk of hitting bug 12832 in Ruby v2.3 - thanks to @chrisroos (#277 & eca7560c)
|
295
|
+
* Fix JRuby build - thanks to @headius (jruby/jruby#4250) & @chrisroos (#274)
|
296
|
+
* Add latest stable version of JRuby to Travis CI build matrix (#288)
|
297
|
+
* Fix Ruby v1.8.7 builds on Travis CI (928b5a40 & 460dce5b)
|
298
|
+
* Deprecate passing block to mock object constructor (#290)
|
299
|
+
* Add a known issue to README for Ruby bug 12876 (#276)
|
300
|
+
* Add Ruby 2.4 and ruby-head to Travis CI build matrix - thanks to @junaruga (#297)
|
301
|
+
* Fix `Mocha::ParameterMatchers#includes` for `Array` values - thanks to @timcraft (#302)
|
302
|
+
* Use faster container-based virtual environments for Travis CI builds (#305)
|
303
|
+
* Rename `Mocha::ParameterMatchers::QueryStringMatches` to `QueryString` (#306)
|
304
|
+
* Handle blank parameter value for query string matcher - thanks to @weynsee (#303 & #304)
|
305
|
+
* Rename `Mocha::ParameterMatchers::QueryString` -> `EquivalentUri` (#307)
|
306
|
+
* Use `do ... end` instead of `{ ... }` in acceptance tests - thanks to @chrisroos (#294)
|
307
|
+
|
3
308
|
## 1.2.1
|
4
309
|
|
5
310
|
* Fixed #272. Workaround Ruby bug 12832 which caused interpreter to hang. See https://bugs.ruby-lang.org/issues/12832. Thanks to @chrisroos & @petems (6f1c8b9b, #273).
|
@@ -395,7 +700,7 @@ Hash with wrong number of entries.
|
|
395
700
|
|
396
701
|
## 0.5.0
|
397
702
|
|
398
|
-
- Parameter Matchers - I
|
703
|
+
- Parameter Matchers - I've added a few Hamcrest-style parameter matchers which are designed to be used inside Expectation#with. The following matchers are currently available: anything(), includes(), has_key(), has_value(), has_entry(), all_of() & any_of(). More to follow soon. The idea is eventually to get rid of the nasty parameter_block option on Expectation#with.
|
399
704
|
|
400
705
|
object = mock()
|
401
706
|
object.expects(:method).with(has_key('key_1'))
|
data/Rakefile
CHANGED
@@ -1,17 +1,22 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
require 'bundler'
|
2
|
+
namespace 'rubygems' do
|
3
|
+
Bundler::GemHelper.install_tasks
|
4
|
+
end
|
5
|
+
require 'bundler/setup'
|
6
6
|
|
7
7
|
require 'rake/testtask'
|
8
|
+
begin
|
9
|
+
# Only available with default Gemfile and in Ruby >= v2.2
|
10
|
+
require 'rubocop/rake_task'
|
11
|
+
rescue LoadError # rubocop:disable Lint/HandleExceptions
|
12
|
+
end
|
8
13
|
|
9
|
-
desc
|
10
|
-
task 'default' => ['test', 'test:performance']
|
14
|
+
desc 'Run all linters and tests'
|
15
|
+
task 'default' => ['lint', 'test', 'test:performance']
|
11
16
|
|
12
|
-
desc
|
17
|
+
desc 'Run tests'
|
13
18
|
task 'test' do
|
14
|
-
if test_library = ENV['MOCHA_RUN_INTEGRATION_TESTS']
|
19
|
+
if (test_library = ENV['MOCHA_RUN_INTEGRATION_TESTS'])
|
15
20
|
Rake::Task["test:integration:#{test_library}"].invoke
|
16
21
|
else
|
17
22
|
Rake::Task['test:units'].invoke
|
@@ -19,35 +24,25 @@ task 'test' do
|
|
19
24
|
end
|
20
25
|
end
|
21
26
|
|
22
|
-
namespace 'test' do
|
23
|
-
|
24
|
-
unit_tests = FileList['test/unit/**/*_test.rb']
|
25
|
-
all_acceptance_tests = FileList['test/acceptance/*_test.rb']
|
26
|
-
ruby186_incompatible_acceptance_tests = FileList['test/acceptance/stub_class_method_defined_on_*_test.rb'] + FileList['test/acceptance/stub_instance_method_defined_on_*_test.rb']
|
27
|
-
ruby186_compatible_acceptance_tests = all_acceptance_tests - ruby186_incompatible_acceptance_tests
|
28
|
-
|
29
|
-
desc "Run unit tests"
|
27
|
+
namespace 'test' do # rubocop:disable Metrics/BlockLength
|
28
|
+
desc 'Run unit tests'
|
30
29
|
Rake::TestTask.new('units') do |t|
|
31
30
|
t.libs << 'test'
|
32
|
-
t.test_files =
|
31
|
+
t.test_files = FileList['test/unit/**/*_test.rb']
|
33
32
|
t.verbose = true
|
34
33
|
t.warning = true
|
35
34
|
end
|
36
35
|
|
37
|
-
desc
|
36
|
+
desc 'Run acceptance tests'
|
38
37
|
Rake::TestTask.new('acceptance') do |t|
|
39
38
|
t.libs << 'test'
|
40
|
-
|
41
|
-
t.test_files = all_acceptance_tests
|
42
|
-
else
|
43
|
-
t.test_files = ruby186_compatible_acceptance_tests
|
44
|
-
end
|
39
|
+
t.test_files = FileList['test/acceptance/*_test.rb']
|
45
40
|
t.verbose = true
|
46
41
|
t.warning = true
|
47
42
|
end
|
48
43
|
|
49
44
|
namespace 'integration' do
|
50
|
-
desc
|
45
|
+
desc 'Run MiniTest integration tests (intended to be run in its own process)'
|
51
46
|
Rake::TestTask.new('minitest') do |t|
|
52
47
|
t.libs << 'test'
|
53
48
|
t.test_files = FileList['test/integration/mini_test_test.rb']
|
@@ -55,7 +50,7 @@ namespace 'test' do
|
|
55
50
|
t.warning = true
|
56
51
|
end
|
57
52
|
|
58
|
-
desc
|
53
|
+
desc 'Run Test::Unit integration tests (intended to be run in its own process)'
|
59
54
|
Rake::TestTask.new('test-unit') do |t|
|
60
55
|
t.libs << 'test'
|
61
56
|
t.test_files = FileList['test/integration/test_unit_test.rb']
|
@@ -74,7 +69,7 @@ namespace 'test' do
|
|
74
69
|
# t.rcov_opts << '--xref'
|
75
70
|
# end
|
76
71
|
|
77
|
-
desc
|
72
|
+
desc 'Run performance tests'
|
78
73
|
task 'performance' do
|
79
74
|
require File.join(File.dirname(__FILE__), 'test', 'acceptance', 'stubba_example_test')
|
80
75
|
require File.join(File.dirname(__FILE__), 'test', 'acceptance', 'mocha_example_test')
|
@@ -84,9 +79,18 @@ namespace 'test' do
|
|
84
79
|
puts "#{test_case}: #{benchmark_test_case(test_case, iterations)} seconds."
|
85
80
|
end
|
86
81
|
end
|
82
|
+
end
|
87
83
|
|
84
|
+
task 'lint' do
|
85
|
+
if defined?(RuboCop::RakeTask)
|
86
|
+
RuboCop::RakeTask.new
|
87
|
+
Rake::Task['rubocop'].invoke
|
88
|
+
else
|
89
|
+
puts 'RuboCop not available - skipping linting'
|
90
|
+
end
|
88
91
|
end
|
89
92
|
|
93
|
+
# rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
90
94
|
def benchmark_test_case(klass, iterations)
|
91
95
|
require 'benchmark'
|
92
96
|
require 'mocha/detection/mini_test'
|
@@ -94,33 +98,35 @@ def benchmark_test_case(klass, iterations)
|
|
94
98
|
if defined?(MiniTest)
|
95
99
|
minitest_version = Gem::Version.new(Mocha::Detection::MiniTest.version)
|
96
100
|
if Gem::Requirement.new('>= 5.0.0').satisfied_by?(minitest_version)
|
97
|
-
|
101
|
+
Minitest.seed = 1
|
102
|
+
result = Benchmark.realtime { iterations.times { |_i| klass.run(MiniTest::CompositeReporter.new) } }
|
98
103
|
MiniTest::Runnable.runnables.delete(klass)
|
99
104
|
result
|
100
105
|
else
|
101
106
|
MiniTest::Unit.output = StringIO.new
|
102
|
-
Benchmark.realtime { iterations.times { |
|
107
|
+
Benchmark.realtime { iterations.times { |_i| MiniTest::Unit.new.run([klass]) } }
|
103
108
|
end
|
104
109
|
else
|
105
110
|
load 'test/unit/ui/console/testrunner.rb' unless defined?(Test::Unit::UI::Console::TestRunner)
|
106
|
-
unless
|
111
|
+
unless @silent_option
|
107
112
|
begin
|
108
113
|
load 'test/unit/ui/console/outputlevel.rb' unless defined?(Test::Unit::UI::Console::OutputLevel::SILENT)
|
109
|
-
|
114
|
+
@silent_option = { :output_level => Test::Unit::UI::Console::OutputLevel::SILENT }
|
110
115
|
rescue LoadError
|
111
|
-
|
116
|
+
@silent_option = Test::Unit::UI::SILENT
|
112
117
|
end
|
113
118
|
end
|
114
|
-
Benchmark.realtime { iterations.times { Test::Unit::UI::Console::TestRunner.run(klass,
|
119
|
+
Benchmark.realtime { iterations.times { Test::Unit::UI::Console::TestRunner.run(klass, @silent_option) } }
|
115
120
|
end
|
116
121
|
end
|
122
|
+
# rubocop:enable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
117
123
|
|
118
|
-
if ENV[
|
124
|
+
if ENV['MOCHA_GENERATE_DOCS']
|
119
125
|
require 'yard'
|
120
126
|
|
121
127
|
desc 'Remove generated documentation'
|
122
128
|
task 'clobber_yardoc' do
|
123
|
-
`rm -rf ./
|
129
|
+
`rm -rf ./docs`
|
124
130
|
end
|
125
131
|
|
126
132
|
task 'docs_environment' do
|
@@ -131,19 +137,20 @@ if ENV["MOCHA_GENERATE_DOCS"]
|
|
131
137
|
|
132
138
|
desc 'Generate documentation'
|
133
139
|
YARD::Rake::YardocTask.new('yardoc' => 'docs_environment') do |task|
|
134
|
-
task.options = [
|
140
|
+
task.options = ['--title', "Mocha #{Mocha::VERSION}", '--fail-on-warning']
|
135
141
|
end
|
136
142
|
|
137
|
-
|
138
|
-
|
143
|
+
task 'checkout_docs_cname' do
|
144
|
+
`git checkout docs/CNAME`
|
145
|
+
end
|
139
146
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
system %{ssh #{MOCHA_DOCS_HOST} "sudo rm -fr #{path} && mkdir -p #{path}" && scp -r doc/* #{MOCHA_DOCS_HOST}:#{path}}
|
147
|
+
task 'checkout_docs_js' do
|
148
|
+
`git checkout docs/js/app.js`
|
149
|
+
`git checkout docs/js/jquery.js`
|
144
150
|
end
|
145
|
-
end
|
146
151
|
|
147
|
-
|
148
|
-
|
152
|
+
desc 'Generate documentation'
|
153
|
+
task 'generate_docs' => %w[clobber_yardoc yardoc checkout_docs_cname checkout_docs_js]
|
149
154
|
end
|
155
|
+
|
156
|
+
task 'release' => ['default', 'rubygems:release']
|
@@ -1,72 +1,19 @@
|
|
1
|
-
require 'mocha/
|
2
|
-
require 'mocha/class_method'
|
1
|
+
require 'mocha/stubbed_method'
|
3
2
|
|
4
3
|
module Mocha
|
4
|
+
class AnyInstanceMethod < StubbedMethod
|
5
|
+
private
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
def mock
|
9
|
-
stubbee.any_instance.mocha
|
10
|
-
end
|
11
|
-
|
12
|
-
def reset_mocha
|
13
|
-
stubbee.any_instance.reset_mocha
|
14
|
-
end
|
15
|
-
|
16
|
-
def hide_original_method
|
17
|
-
if @original_visibility = method_visibility(method)
|
18
|
-
begin
|
19
|
-
@original_method = stubbee.instance_method(method)
|
20
|
-
if RUBY_V2_PLUS
|
21
|
-
@definition_target = PrependedModule.new
|
22
|
-
stubbee.__send__ :prepend, @definition_target
|
23
|
-
else
|
24
|
-
if @original_method && @original_method.owner == stubbee
|
25
|
-
stubbee.send(:remove_method, method)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
rescue NameError
|
29
|
-
# deal with nasties like ActiveRecord::Associations::AssociationProxy
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def define_new_method
|
35
|
-
definition_target.class_eval(<<-CODE, __FILE__, __LINE__ + 1)
|
36
|
-
def #{method}(*args, &block)
|
37
|
-
self.class.any_instance.mocha.method_missing(:#{method}, *args, &block)
|
38
|
-
end
|
39
|
-
CODE
|
40
|
-
if @original_visibility
|
41
|
-
Module.instance_method(@original_visibility).bind(definition_target).call(method)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def remove_new_method
|
46
|
-
definition_target.send(:remove_method, method)
|
47
|
-
end
|
48
|
-
|
49
|
-
def restore_original_method
|
50
|
-
unless RUBY_V2_PLUS
|
51
|
-
if @original_method && @original_method.owner == stubbee
|
52
|
-
stubbee.send(:define_method, method, @original_method)
|
53
|
-
Module.instance_method(@original_visibility).bind(stubbee).call(method)
|
54
|
-
end
|
55
|
-
end
|
7
|
+
def mock_owner
|
8
|
+
stubbee.any_instance
|
56
9
|
end
|
57
10
|
|
58
|
-
def
|
59
|
-
|
60
|
-
(stubbee.protected_instance_methods(true).include?(method) && :protected) ||
|
61
|
-
(stubbee.private_instance_methods(true).include?(method) && :private)
|
11
|
+
def stubbee_method(method_name)
|
12
|
+
stubbee.instance_method(method_name)
|
62
13
|
end
|
63
14
|
|
64
|
-
|
65
|
-
|
66
|
-
def definition_target
|
67
|
-
@definition_target ||= stubbee
|
15
|
+
def original_method_owner
|
16
|
+
stubbee
|
68
17
|
end
|
69
|
-
|
70
18
|
end
|
71
|
-
|
72
19
|
end
|