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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6a4829127b1767afd658a5e520e345b8ec4fcef1dd34c3ca5fb719aea017d1a4
|
4
|
+
data.tar.gz: 2d37035d149af5d3bc3cfed12879ec4656cec21dd7145041be83df95ca86e694
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01b91e4eae791aea7ad59d9170ad532ce610f2abd038594347e125f29e8e25614f0036a90690b15a3ffbf7ef603ca379f07507238f3820e315b9cec72bd3a730
|
7
|
+
data.tar.gz: 7cc96b39e8d553c69afcf4fc9186b2c2fbe38006f4bd0cee621e00eae81ed8621a3aac2f2e2b977ab36d8fd328b7297957d861bba2ad2a02f27113a2539c5472
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
AllCops:
|
4
|
+
TargetRubyVersion: 2.2 # closest to required_ruby_version of '>= 1.8.6'
|
5
|
+
|
6
|
+
# Even the reference in the documentation suggests that you should prefer
|
7
|
+
# `alias_method` vs `alias`, so I don't understand why that isn't the default.
|
8
|
+
Style/Alias:
|
9
|
+
EnforcedStyle: prefer_alias_method
|
10
|
+
|
11
|
+
# Enumerable#each_with_object only available since Ruby v1.9
|
12
|
+
Style/EachWithObject:
|
13
|
+
Enabled: false
|
14
|
+
|
15
|
+
# Kernel#__dir__ has only been available since Ruby v2.0
|
16
|
+
Style/ExpandPathArguments:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
# Kernel#format has only supported named references since Ruby v1.9
|
20
|
+
Style/FormatStringToken:
|
21
|
+
EnforcedStyle: unannotated
|
22
|
+
|
23
|
+
# ruby19 style has only been supported since Ruby v1.9
|
24
|
+
Style/HashSyntax:
|
25
|
+
EnforcedStyle: hash_rockets
|
26
|
+
|
27
|
+
# I'm not keen on this cop, because it's easy to miss the conditional
|
28
|
+
# I think the results are particularly unhelpful when Metrics/LineLength is big
|
29
|
+
Style/IfUnlessModifier:
|
30
|
+
Enabled: false
|
31
|
+
|
32
|
+
# Lambda literal syntax has only been supported since Ruby v2.0
|
33
|
+
Style/Lambda:
|
34
|
+
EnforcedStyle: lambda
|
35
|
+
|
36
|
+
# Symbol array literal syntax has only been supported since Ruby v2.0
|
37
|
+
Style/SymbolArray:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
# I'm not keen on this cop, because it's easy to miss the while/until
|
41
|
+
Style/WhileUntilModifier:
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
# This recently introduced cop seems to have stirred up some controversy
|
45
|
+
Style/AccessModifierDeclarations:
|
46
|
+
Enabled: false
|
47
|
+
|
48
|
+
# Enabling this cop results in an "Infinite loop detected" exception
|
49
|
+
Layout/AccessModifierIndentation:
|
50
|
+
Enabled: false
|
51
|
+
|
52
|
+
# Allow long comment lines, e.g. YARD documentation
|
53
|
+
Metrics/LineLength:
|
54
|
+
IgnoredPatterns: ['\A\s*#']
|
55
|
+
|
56
|
+
# It's not possible to set TargetRubyVersion to Ruby < v2.2
|
57
|
+
Gemspec/RequiredRubyVersion:
|
58
|
+
Enabled: false
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2018-07-26 12:42:35 +0100 using RuboCop version 0.58.2.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 53
|
10
|
+
Metrics/AbcSize:
|
11
|
+
Max: 39
|
12
|
+
|
13
|
+
# Offense count: 2
|
14
|
+
# Configuration parameters: CountComments, ExcludedMethods.
|
15
|
+
# ExcludedMethods: refine
|
16
|
+
Metrics/BlockLength:
|
17
|
+
Max: 48
|
18
|
+
|
19
|
+
# Offense count: 22
|
20
|
+
# Configuration parameters: CountComments.
|
21
|
+
Metrics/ClassLength:
|
22
|
+
Max: 368
|
23
|
+
|
24
|
+
# Offense count: 4
|
25
|
+
Metrics/CyclomaticComplexity:
|
26
|
+
Max: 9
|
27
|
+
|
28
|
+
# Offense count: 173
|
29
|
+
# Configuration parameters: CountComments.
|
30
|
+
Metrics/MethodLength:
|
31
|
+
Max: 31
|
32
|
+
|
33
|
+
# Offense count: 1
|
34
|
+
# Configuration parameters: CountComments.
|
35
|
+
Metrics/ModuleLength:
|
36
|
+
Max: 158
|
37
|
+
|
38
|
+
# Offense count: 5
|
39
|
+
Metrics/PerceivedComplexity:
|
40
|
+
Max: 11
|
41
|
+
|
42
|
+
# Offense count: 105
|
43
|
+
Style/Documentation:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
# Offense count: 501
|
47
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
48
|
+
# URISchemes: http, https
|
49
|
+
Metrics/LineLength:
|
50
|
+
Max: 180
|
data/RELEASE.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Release Notes
|
2
2
|
|
3
|
+
## 1.7.0
|
4
|
+
|
5
|
+
* Update Ruby & JRuby versions in Travis CI config (9bf55631 & 3883af7e)
|
6
|
+
* Simplify gemspec (63744f86)
|
7
|
+
* Add rubocop and fix most cop violations (#341)
|
8
|
+
* Use Kernel#warn for deprecations - thanks to @etiennebarrie (#333, 196970a)
|
9
|
+
|
3
10
|
## 1.6.0
|
4
11
|
|
5
12
|
* Fix subtle bug in setting correct visibility of stubbed module methods on `Kernel` or `Object` - thanks to @chrisroos (#295)
|
data/Rakefile
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler'
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
4
|
|
5
5
|
MOCHA_DOCS_HOST = ENV['MOCHA_DOCS_HOST'] || 'gofreerange.com'
|
6
6
|
|
7
7
|
require 'rake/testtask'
|
8
8
|
|
9
|
-
desc
|
9
|
+
desc 'Run all tests'
|
10
10
|
task 'default' => ['test', 'test:performance']
|
11
11
|
|
12
|
-
desc
|
12
|
+
desc 'Run tests'
|
13
13
|
task 'test' do
|
14
|
-
if test_library = ENV['MOCHA_RUN_INTEGRATION_TESTS']
|
14
|
+
if (test_library = ENV['MOCHA_RUN_INTEGRATION_TESTS'])
|
15
15
|
Rake::Task["test:integration:#{test_library}"].invoke
|
16
16
|
else
|
17
17
|
Rake::Task['test:units'].invoke
|
@@ -20,13 +20,12 @@ task 'test' do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
namespace 'test' do
|
23
|
-
|
24
23
|
unit_tests = FileList['test/unit/**/*_test.rb']
|
25
24
|
all_acceptance_tests = FileList['test/acceptance/*_test.rb']
|
26
25
|
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
26
|
ruby186_compatible_acceptance_tests = all_acceptance_tests - ruby186_incompatible_acceptance_tests
|
28
27
|
|
29
|
-
desc
|
28
|
+
desc 'Run unit tests'
|
30
29
|
Rake::TestTask.new('units') do |t|
|
31
30
|
t.libs << 'test'
|
32
31
|
t.test_files = unit_tests
|
@@ -34,20 +33,20 @@ namespace 'test' do
|
|
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
|
-
if defined?(RUBY_VERSION) && (RUBY_VERSION >=
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
t.test_files = if defined?(RUBY_VERSION) && (RUBY_VERSION >= '1.8.7')
|
40
|
+
all_acceptance_tests
|
41
|
+
else
|
42
|
+
ruby186_compatible_acceptance_tests
|
43
|
+
end
|
45
44
|
t.verbose = true
|
46
45
|
t.warning = true
|
47
46
|
end
|
48
47
|
|
49
48
|
namespace 'integration' do
|
50
|
-
desc
|
49
|
+
desc 'Run MiniTest integration tests (intended to be run in its own process)'
|
51
50
|
Rake::TestTask.new('minitest') do |t|
|
52
51
|
t.libs << 'test'
|
53
52
|
t.test_files = FileList['test/integration/mini_test_test.rb']
|
@@ -55,7 +54,7 @@ namespace 'test' do
|
|
55
54
|
t.warning = true
|
56
55
|
end
|
57
56
|
|
58
|
-
desc
|
57
|
+
desc 'Run Test::Unit integration tests (intended to be run in its own process)'
|
59
58
|
Rake::TestTask.new('test-unit') do |t|
|
60
59
|
t.libs << 'test'
|
61
60
|
t.test_files = FileList['test/integration/test_unit_test.rb']
|
@@ -74,7 +73,7 @@ namespace 'test' do
|
|
74
73
|
# t.rcov_opts << '--xref'
|
75
74
|
# end
|
76
75
|
|
77
|
-
desc
|
76
|
+
desc 'Run performance tests'
|
78
77
|
task 'performance' do
|
79
78
|
require File.join(File.dirname(__FILE__), 'test', 'acceptance', 'stubba_example_test')
|
80
79
|
require File.join(File.dirname(__FILE__), 'test', 'acceptance', 'mocha_example_test')
|
@@ -84,7 +83,15 @@ namespace 'test' do
|
|
84
83
|
puts "#{test_case}: #{benchmark_test_case(test_case, iterations)} seconds."
|
85
84
|
end
|
86
85
|
end
|
86
|
+
end
|
87
87
|
|
88
|
+
begin
|
89
|
+
require 'rubocop/rake_task'
|
90
|
+
if RUBY_VERSION >= '2.2.0'
|
91
|
+
RuboCop::RakeTask.new
|
92
|
+
task 'test' => 'rubocop'
|
93
|
+
end
|
94
|
+
rescue LoadError # rubocop:disable Lint/HandleExceptions
|
88
95
|
end
|
89
96
|
|
90
97
|
def benchmark_test_case(klass, iterations)
|
@@ -94,28 +101,28 @@ def benchmark_test_case(klass, iterations)
|
|
94
101
|
if defined?(MiniTest)
|
95
102
|
minitest_version = Gem::Version.new(Mocha::Detection::MiniTest.version)
|
96
103
|
if Gem::Requirement.new('>= 5.0.0').satisfied_by?(minitest_version)
|
97
|
-
result = Benchmark.realtime { iterations.times { |
|
104
|
+
result = Benchmark.realtime { iterations.times { |_i| klass.run(MiniTest::CompositeReporter.new) } }
|
98
105
|
MiniTest::Runnable.runnables.delete(klass)
|
99
106
|
result
|
100
107
|
else
|
101
108
|
MiniTest::Unit.output = StringIO.new
|
102
|
-
Benchmark.realtime { iterations.times { |
|
109
|
+
Benchmark.realtime { iterations.times { |_i| MiniTest::Unit.new.run([klass]) } }
|
103
110
|
end
|
104
111
|
else
|
105
112
|
load 'test/unit/ui/console/testrunner.rb' unless defined?(Test::Unit::UI::Console::TestRunner)
|
106
|
-
unless
|
113
|
+
unless @silent_option
|
107
114
|
begin
|
108
115
|
load 'test/unit/ui/console/outputlevel.rb' unless defined?(Test::Unit::UI::Console::OutputLevel::SILENT)
|
109
|
-
|
116
|
+
@silent_option = { :output_level => Test::Unit::UI::Console::OutputLevel::SILENT }
|
110
117
|
rescue LoadError
|
111
|
-
|
118
|
+
@silent_option = Test::Unit::UI::SILENT
|
112
119
|
end
|
113
120
|
end
|
114
|
-
Benchmark.realtime { iterations.times { Test::Unit::UI::Console::TestRunner.run(klass,
|
121
|
+
Benchmark.realtime { iterations.times { Test::Unit::UI::Console::TestRunner.run(klass, @silent_option) } }
|
115
122
|
end
|
116
123
|
end
|
117
124
|
|
118
|
-
if ENV[
|
125
|
+
if ENV['MOCHA_GENERATE_DOCS']
|
119
126
|
require 'yard'
|
120
127
|
|
121
128
|
desc 'Remove generated documentation'
|
@@ -131,16 +138,16 @@ if ENV["MOCHA_GENERATE_DOCS"]
|
|
131
138
|
|
132
139
|
desc 'Generate documentation'
|
133
140
|
YARD::Rake::YardocTask.new('yardoc' => 'docs_environment') do |task|
|
134
|
-
task.options = [
|
141
|
+
task.options = ['--title', "Mocha #{Mocha::VERSION}"]
|
135
142
|
end
|
136
143
|
|
137
|
-
desc
|
138
|
-
task 'generate_docs' => [
|
144
|
+
desc 'Generate documentation'
|
145
|
+
task 'generate_docs' => %w[clobber_yardoc yardoc]
|
139
146
|
|
140
147
|
desc "Publish docs to #{MOCHA_DOCS_HOST}/docs/mocha"
|
141
148
|
task 'publish_docs' => 'generate_docs' do
|
142
|
-
path =
|
143
|
-
system %
|
149
|
+
path = '/home/freerange/docs/mocha'
|
150
|
+
system %(ssh #{MOCHA_DOCS_HOST} "sudo rm -fr #{path} && mkdir -p #{path}" && scp -r doc/* #{MOCHA_DOCS_HOST}:#{path})
|
144
151
|
end
|
145
152
|
end
|
146
153
|
|
data/bin/build-matrix
CHANGED
@@ -5,23 +5,22 @@ require 'yaml'
|
|
5
5
|
def execute(*commands)
|
6
6
|
commands.each do |command|
|
7
7
|
system(command)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
8
|
+
next if $CHILD_STATUS.success?
|
9
|
+
message = [
|
10
|
+
'Executing shell command failed.',
|
11
|
+
" Command: #{command}",
|
12
|
+
" Status: #{$CHILD_STATUS.exitstatus}"
|
13
|
+
].join("\n")
|
14
|
+
raise message
|
16
15
|
end
|
17
16
|
end
|
18
17
|
|
19
18
|
def reset_bundle
|
20
19
|
execute(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
'rm -rf .bundle/gems',
|
21
|
+
'rm -rf gemfiles/.bundle/gems',
|
22
|
+
'rm -f *.lock',
|
23
|
+
'rm -f gemfiles/*.lock'
|
25
24
|
)
|
26
25
|
end
|
27
26
|
|
@@ -29,18 +28,18 @@ def with_rbenv(command)
|
|
29
28
|
%{export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; #{command}}
|
30
29
|
end
|
31
30
|
|
32
|
-
def run(ruby_version, gemfile, task =
|
33
|
-
ENV[
|
34
|
-
ENV[
|
35
|
-
ENV[
|
31
|
+
def run(ruby_version, gemfile, task = 'test')
|
32
|
+
ENV['RBENV_VERSION'] = ruby_version
|
33
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
34
|
+
ENV['MOCHA_OPTIONS'] = 'debug'
|
36
35
|
reset_bundle
|
37
36
|
execute(
|
38
37
|
with_rbenv("bundle install --gemfile=#{gemfile}"),
|
39
|
-
with_rbenv("bundle exec rake #{task}")
|
38
|
+
with_rbenv("bundle exec rake #{task}")
|
40
39
|
)
|
41
40
|
end
|
42
41
|
|
43
|
-
travis_config = YAML.
|
42
|
+
travis_config = YAML.safe_load(File.read('.travis.yml'))
|
44
43
|
build_configs = travis_config['matrix']['include']
|
45
44
|
travis_config['rvm'].each do |ruby_version|
|
46
45
|
travis_config['gemfile'].each do |gemfile|
|
@@ -2,9 +2,7 @@ require 'mocha/ruby_version'
|
|
2
2
|
require 'mocha/class_method'
|
3
3
|
|
4
4
|
module Mocha
|
5
|
-
|
6
5
|
class AnyInstanceMethod < ClassMethod
|
7
|
-
|
8
6
|
def mock
|
9
7
|
stubbee.any_instance.mocha
|
10
8
|
end
|
@@ -14,21 +12,22 @@ module Mocha
|
|
14
12
|
end
|
15
13
|
|
16
14
|
def hide_original_method
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
15
|
+
return unless (@original_visibility = method_visibility(method))
|
16
|
+
begin
|
17
|
+
if RUBY_V2_PLUS
|
18
|
+
@definition_target = PrependedModule.new
|
19
|
+
stubbee.__send__ :prepend, @definition_target
|
20
|
+
else
|
21
|
+
@original_method = stubbee.instance_method(method)
|
22
|
+
if @original_method && @original_method.owner == stubbee
|
23
|
+
stubbee.send(:remove_method, method)
|
27
24
|
end
|
28
|
-
rescue NameError
|
29
|
-
# deal with nasties like ActiveRecord::Associations::AssociationProxy
|
30
25
|
end
|
26
|
+
# rubocop:disable Lint/HandleExceptions
|
27
|
+
rescue NameError
|
28
|
+
# deal with nasties like ActiveRecord::Associations::AssociationProxy
|
31
29
|
end
|
30
|
+
# rubocop:enable Lint/HandleExceptions
|
32
31
|
end
|
33
32
|
|
34
33
|
def define_new_method
|
@@ -37,9 +36,8 @@ module Mocha
|
|
37
36
|
self.class.any_instance.mocha.method_missing(:#{method}, *args, &block)
|
38
37
|
end
|
39
38
|
CODE
|
40
|
-
|
41
|
-
|
42
|
-
end
|
39
|
+
return unless @original_visibility
|
40
|
+
Module.instance_method(@original_visibility).bind(definition_target).call(method)
|
43
41
|
end
|
44
42
|
|
45
43
|
def remove_new_method
|
@@ -47,12 +45,10 @@ module Mocha
|
|
47
45
|
end
|
48
46
|
|
49
47
|
def restore_original_method
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
48
|
+
return if RUBY_V2_PLUS
|
49
|
+
return unless @original_method && @original_method.owner == stubbee
|
50
|
+
stubbee.send(:define_method, method, @original_method)
|
51
|
+
Module.instance_method(@original_visibility).bind(stubbee).call(method)
|
56
52
|
end
|
57
53
|
|
58
54
|
def method_visibility(method)
|
@@ -66,7 +62,5 @@ module Mocha
|
|
66
62
|
def definition_target
|
67
63
|
@definition_target ||= stubbee
|
68
64
|
end
|
69
|
-
|
70
65
|
end
|
71
|
-
|
72
66
|
end
|
data/lib/mocha/api.rb
CHANGED
@@ -7,15 +7,13 @@ require 'mocha/module_methods'
|
|
7
7
|
require 'mocha/class_methods'
|
8
8
|
|
9
9
|
module Mocha
|
10
|
-
|
11
10
|
# Methods added to +Test::Unit::TestCase+, +MiniTest::Unit::TestCase+ or equivalent.
|
12
11
|
module API
|
13
|
-
|
14
12
|
include ParameterMatchers
|
15
13
|
include Hooks
|
16
14
|
|
17
15
|
# @private
|
18
|
-
def self.included(
|
16
|
+
def self.included(_mod)
|
19
17
|
Object.send(:include, Mocha::ObjectMethods)
|
20
18
|
Module.send(:include, Mocha::ModuleMethods)
|
21
19
|
Class.send(:include, Mocha::ClassMethods)
|
@@ -176,7 +174,5 @@ module Mocha
|
|
176
174
|
def states(name)
|
177
175
|
Mockery.instance.new_state_machine(name)
|
178
176
|
end
|
179
|
-
|
180
177
|
end
|
181
|
-
|
182
178
|
end
|