mocha 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +58 -0
  3. data/.rubocop_todo.yml +50 -0
  4. data/RELEASE.md +7 -0
  5. data/Rakefile +35 -28
  6. data/bin/build-matrix +17 -18
  7. data/lib/mocha/any_instance_method.rb +19 -25
  8. data/lib/mocha/api.rb +1 -5
  9. data/lib/mocha/argument_iterator.rb +4 -8
  10. data/lib/mocha/backtrace_filter.rb +1 -5
  11. data/lib/mocha/cardinality.rb +20 -27
  12. data/lib/mocha/central.rb +7 -15
  13. data/lib/mocha/change_state_side_effect.rb +0 -4
  14. data/lib/mocha/class_method.rb +31 -37
  15. data/lib/mocha/class_methods.rb +5 -13
  16. data/lib/mocha/configuration.rb +3 -9
  17. data/lib/mocha/debug.rb +3 -2
  18. data/lib/mocha/deprecation.rb +4 -11
  19. data/lib/mocha/detection/mini_test.rb +0 -2
  20. data/lib/mocha/detection/test_unit.rb +4 -4
  21. data/lib/mocha/error_with_filtered_backtrace.rb +0 -4
  22. data/lib/mocha/exception_raiser.rb +2 -5
  23. data/lib/mocha/expectation.rb +15 -18
  24. data/lib/mocha/expectation_error.rb +2 -0
  25. data/lib/mocha/expectation_error_factory.rb +0 -1
  26. data/lib/mocha/expectation_list.rb +2 -6
  27. data/lib/mocha/hooks.rb +0 -1
  28. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  29. data/lib/mocha/inspect.rb +3 -5
  30. data/lib/mocha/instance_method.rb +0 -2
  31. data/lib/mocha/integration.rb +3 -4
  32. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  33. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  34. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  35. data/lib/mocha/integration/mini_test/version_13.rb +3 -1
  36. data/lib/mocha/integration/mini_test/version_140.rb +3 -1
  37. data/lib/mocha/integration/mini_test/version_141.rb +3 -1
  38. data/lib/mocha/integration/mini_test/version_142_to_172.rb +3 -1
  39. data/lib/mocha/integration/mini_test/version_200.rb +3 -1
  40. data/lib/mocha/integration/mini_test/version_201_to_222.rb +3 -1
  41. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +3 -1
  42. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +3 -1
  43. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +3 -1
  44. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  45. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  46. data/lib/mocha/integration/test_unit/gem_version_200.rb +4 -2
  47. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +4 -2
  48. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +4 -2
  49. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +4 -2
  50. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  51. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +3 -1
  52. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +3 -1
  53. data/lib/mocha/is_a.rb +0 -2
  54. data/lib/mocha/logger.rb +0 -4
  55. data/lib/mocha/method_matcher.rb +1 -5
  56. data/lib/mocha/minitest.rb +1 -1
  57. data/lib/mocha/mock.rb +25 -30
  58. data/lib/mocha/mockery.rb +27 -43
  59. data/lib/mocha/module_method.rb +0 -2
  60. data/lib/mocha/module_methods.rb +0 -4
  61. data/lib/mocha/multiple_yields.rb +0 -5
  62. data/lib/mocha/names.rb +1 -11
  63. data/lib/mocha/no_yields.rb +1 -7
  64. data/lib/mocha/not_initialized_error.rb +0 -2
  65. data/lib/mocha/object_methods.rb +10 -14
  66. data/lib/mocha/parameter_matchers.rb +0 -2
  67. data/lib/mocha/parameter_matchers/all_of.rb +1 -7
  68. data/lib/mocha/parameter_matchers/any_of.rb +1 -7
  69. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  70. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  71. data/lib/mocha/parameter_matchers/base.rb +6 -12
  72. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  73. data/lib/mocha/parameter_matchers/equivalent_uri.rb +6 -6
  74. data/lib/mocha/parameter_matchers/has_entries.rb +2 -6
  75. data/lib/mocha/parameter_matchers/has_entry.rb +8 -11
  76. data/lib/mocha/parameter_matchers/has_key.rb +2 -6
  77. data/lib/mocha/parameter_matchers/has_value.rb +2 -6
  78. data/lib/mocha/parameter_matchers/includes.rb +2 -6
  79. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  80. data/lib/mocha/parameter_matchers/is_a.rb +2 -6
  81. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  82. data/lib/mocha/parameter_matchers/not.rb +2 -6
  83. data/lib/mocha/parameter_matchers/object.rb +0 -2
  84. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  85. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  86. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  87. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  88. data/lib/mocha/parameters_matcher.rb +6 -9
  89. data/lib/mocha/pretty_parameters.rb +0 -4
  90. data/lib/mocha/receivers.rb +6 -12
  91. data/lib/mocha/return_values.rb +3 -7
  92. data/lib/mocha/sequence.rb +4 -9
  93. data/lib/mocha/single_return_value.rb +0 -4
  94. data/lib/mocha/single_yield.rb +0 -5
  95. data/lib/mocha/state_machine.rb +6 -10
  96. data/lib/mocha/stubbing_error.rb +0 -2
  97. data/lib/mocha/test_unit.rb +1 -1
  98. data/lib/mocha/thrower.rb +2 -5
  99. data/lib/mocha/unexpected_invocation.rb +3 -5
  100. data/lib/mocha/version.rb +1 -1
  101. data/lib/mocha/yield_parameters.rb +3 -7
  102. data/mocha.gemspec +34 -58
  103. data/test/acceptance/acceptance_test_helper.rb +0 -4
  104. data/test/acceptance/bug_18914_test.rb +7 -12
  105. data/test/acceptance/bug_21465_test.rb +0 -2
  106. data/test/acceptance/bug_21563_test.rb +0 -2
  107. data/test/acceptance/exception_rescue_test.rb +7 -8
  108. data/test/acceptance/expectations_on_multiple_methods_test.rb +2 -1
  109. data/test/acceptance/expected_invocation_count_test.rb +27 -29
  110. data/test/acceptance/failure_messages_test.rb +3 -5
  111. data/test/acceptance/issue_272_test.rb +0 -1
  112. data/test/acceptance/issue_65_test.rb +15 -13
  113. data/test/acceptance/issue_70_test.rb +0 -1
  114. data/test/acceptance/mocha_example_test.rb +5 -6
  115. data/test/acceptance/mocha_test_result_test.rb +7 -7
  116. data/test/acceptance/mock_test.rb +2 -4
  117. data/test/acceptance/mock_with_initializer_block_test.rb +0 -2
  118. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -2
  119. data/test/acceptance/multiple_expectations_failure_message_test.rb +16 -17
  120. data/test/acceptance/optional_parameters_test.rb +0 -2
  121. data/test/acceptance/parameter_matcher_test.rb +2 -3
  122. data/test/acceptance/partial_mocks_test.rb +4 -6
  123. data/test/acceptance/prepend_test.rb +14 -16
  124. data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -2
  125. data/test/acceptance/raise_exception_test.rb +2 -4
  126. data/test/acceptance/return_value_test.rb +0 -2
  127. data/test/acceptance/sequence_test.rb +9 -11
  128. data/test/acceptance/states_test.rb +6 -4
  129. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +5 -4
  130. data/test/acceptance/stub_any_instance_method_test.rb +19 -17
  131. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +8 -8
  132. data/test/acceptance/stub_class_method_defined_on_class_test.rb +2 -1
  133. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -1
  134. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +7 -4
  135. data/test/acceptance/stub_everything_test.rb +1 -3
  136. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +6 -7
  137. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -1
  138. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -1
  139. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -1
  140. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -1
  141. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +2 -1
  142. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -2
  143. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -1
  144. data/test/acceptance/stub_module_method_test.rb +13 -13
  145. data/test/acceptance/stub_test.rb +1 -3
  146. data/test/acceptance/stubba_example_test.rb +6 -14
  147. data/test/acceptance/stubba_test_result_test.rb +5 -8
  148. data/test/acceptance/stubbing_error_backtrace_test.rb +2 -2
  149. data/test/acceptance/stubbing_frozen_object_test.rb +2 -1
  150. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +12 -7
  151. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -2
  152. data/test/acceptance/stubbing_nil_test.rb +4 -5
  153. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -3
  154. data/test/acceptance/stubbing_non_existent_class_method_test.rb +3 -3
  155. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -3
  156. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -2
  157. data/test/acceptance/stubbing_non_public_class_method_test.rb +3 -3
  158. data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -3
  159. data/test/acceptance/stubbing_on_non_mock_object_test.rb +4 -10
  160. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -4
  161. data/test/acceptance/throw_test.rb +0 -2
  162. data/test/acceptance/unexpected_invocation_test.rb +2 -3
  163. data/test/acceptance/unstubbing_test.rb +41 -14
  164. data/test/deprecation_disabler.rb +0 -1
  165. data/test/execution_point.rb +2 -4
  166. data/test/integration/mini_test_test.rb +2 -2
  167. data/test/integration/shared_tests.rb +24 -22
  168. data/test/integration/test_unit_test.rb +2 -2
  169. data/test/method_definer.rb +1 -3
  170. data/test/mini_test_result.rb +17 -11
  171. data/test/minitest_result.rb +0 -1
  172. data/test/simple_counter.rb +0 -2
  173. data/test/test_helper.rb +13 -5
  174. data/test/test_runner.rb +2 -4
  175. data/test/test_unit_result.rb +4 -2
  176. data/test/unit/any_instance_method_test.rb +31 -17
  177. data/test/unit/array_inspect_test.rb +2 -4
  178. data/test/unit/backtrace_filter_test.rb +3 -5
  179. data/test/unit/cardinality_test.rb +0 -2
  180. data/test/unit/central_test.rb +26 -27
  181. data/test/unit/change_state_side_effect_test.rb +0 -4
  182. data/test/unit/class_method_test.rb +59 -34
  183. data/test/unit/class_methods_test.rb +9 -11
  184. data/test/unit/configuration_test.rb +1 -2
  185. data/test/unit/date_time_inspect_test.rb +1 -3
  186. data/test/unit/exception_raiser_test.rb +0 -2
  187. data/test/unit/expectation_list_test.rb +0 -2
  188. data/test/unit/expectation_test.rb +41 -46
  189. data/test/unit/hash_inspect_test.rb +3 -5
  190. data/test/unit/hooks_test.rb +9 -4
  191. data/test/unit/in_state_ordering_constraint_test.rb +0 -4
  192. data/test/unit/method_matcher_test.rb +1 -3
  193. data/test/unit/mock_test.rb +35 -22
  194. data/test/unit/mockery_test.rb +28 -26
  195. data/test/unit/module_methods_test.rb +0 -2
  196. data/test/unit/multiple_yields_test.rb +0 -2
  197. data/test/unit/no_yields_test.rb +0 -2
  198. data/test/unit/object_inspect_test.rb +16 -7
  199. data/test/unit/object_methods_test.rb +6 -8
  200. data/test/unit/parameter_matchers/all_of_test.rb +0 -2
  201. data/test/unit/parameter_matchers/any_of_test.rb +0 -2
  202. data/test/unit/parameter_matchers/anything_test.rb +2 -4
  203. data/test/unit/parameter_matchers/equals_test.rb +1 -3
  204. data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -1
  205. data/test/unit/parameter_matchers/has_entries_test.rb +2 -2
  206. data/test/unit/parameter_matchers/has_entry_test.rb +13 -14
  207. data/test/unit/parameter_matchers/has_key_test.rb +0 -1
  208. data/test/unit/parameter_matchers/has_value_test.rb +0 -2
  209. data/test/unit/parameter_matchers/includes_test.rb +8 -9
  210. data/test/unit/parameter_matchers/instance_of_test.rb +1 -3
  211. data/test/unit/parameter_matchers/is_a_test.rb +1 -3
  212. data/test/unit/parameter_matchers/kind_of_test.rb +1 -3
  213. data/test/unit/parameter_matchers/not_test.rb +0 -2
  214. data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -2
  215. data/test/unit/parameter_matchers/responds_with_test.rb +9 -3
  216. data/test/unit/parameter_matchers/stub_matcher.rb +0 -4
  217. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +1 -3
  218. data/test/unit/parameters_matcher_test.rb +2 -4
  219. data/test/unit/receivers_test.rb +8 -6
  220. data/test/unit/return_values_test.rb +3 -5
  221. data/test/unit/sequence_test.rb +1 -5
  222. data/test/unit/single_return_value_test.rb +0 -2
  223. data/test/unit/single_yield_test.rb +0 -2
  224. data/test/unit/state_machine_test.rb +1 -3
  225. data/test/unit/string_inspect_test.rb +2 -4
  226. data/test/unit/thrower_test.rb +0 -2
  227. data/test/unit/yield_parameters_test.rb +0 -2
  228. data/yard-templates/default/layout/html/setup.rb +2 -3
  229. metadata +22 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c4c3e82b675148ae87d3cb16bd97816bc04b04b3
4
- data.tar.gz: 888491a9247d93053283fbfa0b7a59d073beb760
2
+ SHA256:
3
+ metadata.gz: 6a4829127b1767afd658a5e520e345b8ec4fcef1dd34c3ca5fb719aea017d1a4
4
+ data.tar.gz: 2d37035d149af5d3bc3cfed12879ec4656cec21dd7145041be83df95ca86e694
5
5
  SHA512:
6
- metadata.gz: dc6cbdc1710ee63e7d627fa2b73e62fc6a175d743a9d57c81d314a7c86d167ba4b719d7f5345438eb3b10d159b8b6a9e2a4126592919a7d057bf38e5118b9a62
7
- data.tar.gz: 3745c02ad5e63009a05279b610a96fcfecb79b42b789c617d609ef38aaa30e54a3941e040c650a26e0179353dcd7ef6b48dc5401a1ea69a77a31585a0eac0c40
6
+ metadata.gz: 01b91e4eae791aea7ad59d9170ad532ce610f2abd038594347e125f29e8e25614f0036a90690b15a3ffbf7ef603ca379f07507238f3820e315b9cec72bd3a730
7
+ data.tar.gz: 7cc96b39e8d553c69afcf4fc9186b2c2fbe38006f4bd0cee621e00eae81ed8621a3aac2f2e2b977ab36d8fd328b7297957d861bba2ad2a02f27113a2539c5472
@@ -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
@@ -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 "bundler"
1
+ require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
- require "bundler/setup"
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 "Run all tests"
9
+ desc 'Run all tests'
10
10
  task 'default' => ['test', 'test:performance']
11
11
 
12
- desc "Run tests"
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 "Run unit tests"
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 "Run acceptance tests"
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 >= "1.8.7")
41
- t.test_files = all_acceptance_tests
42
- else
43
- t.test_files = ruby186_compatible_acceptance_tests
44
- end
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 "Run MiniTest integration tests (intended to be run in its own process)"
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 "Run Test::Unit integration tests (intended to be run in its own process)"
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 "Run performance tests"
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 { |i| klass.run(MiniTest::CompositeReporter.new) } }
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 { |i| MiniTest::Unit.new.run([klass]) } }
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 $silent_option
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
- $silent_option = { :output_level => Test::Unit::UI::Console::OutputLevel::SILENT }
116
+ @silent_option = { :output_level => Test::Unit::UI::Console::OutputLevel::SILENT }
110
117
  rescue LoadError
111
- $silent_option = Test::Unit::UI::SILENT
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, $silent_option) } }
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["MOCHA_GENERATE_DOCS"]
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 = ["--title", "Mocha #{Mocha::VERSION}"]
141
+ task.options = ['--title', "Mocha #{Mocha::VERSION}"]
135
142
  end
136
143
 
137
- desc "Generate documentation"
138
- task 'generate_docs' => ['clobber_yardoc', 'yardoc']
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 = "/home/freerange/docs/mocha"
143
- system %{ssh #{MOCHA_DOCS_HOST} "sudo rm -fr #{path} && mkdir -p #{path}" && scp -r doc/* #{MOCHA_DOCS_HOST}:#{path}}
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
 
@@ -5,23 +5,22 @@ require 'yaml'
5
5
  def execute(*commands)
6
6
  commands.each do |command|
7
7
  system(command)
8
- unless $?.success?
9
- message = [
10
- "Executing shell command failed.",
11
- " Command: #{command}",
12
- " Status: #{$?.exitstatus}"
13
- ].join("\n")
14
- raise message
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
- "rm -rf .bundle/gems",
22
- "rm -rf gemfiles/.bundle/gems",
23
- "rm -f *.lock",
24
- "rm -f gemfiles/*.lock"
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 = "test")
33
- ENV["RBENV_VERSION"] = ruby_version
34
- ENV["BUNDLE_GEMFILE"] = gemfile
35
- ENV["MOCHA_OPTIONS"] = "debug"
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.load(File.read('.travis.yml'))
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
- if @original_visibility = method_visibility(method)
18
- begin
19
- if RUBY_V2_PLUS
20
- @definition_target = PrependedModule.new
21
- stubbee.__send__ :prepend, @definition_target
22
- else
23
- @original_method = stubbee.instance_method(method)
24
- if @original_method && @original_method.owner == stubbee
25
- stubbee.send(:remove_method, method)
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
- if @original_visibility
41
- Module.instance_method(@original_visibility).bind(definition_target).call(method)
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
- 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
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
@@ -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(mod)
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