mocha 1.1.0 → 1.13.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.
Files changed (263) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +61 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/README.md +114 -28
  8. data/RELEASE.md +248 -1
  9. data/Rakefile +53 -35
  10. data/gemfiles/Gemfile.test-unit.latest +5 -1
  11. data/init.rb +1 -3
  12. data/lib/mocha/any_instance_method.rb +12 -72
  13. data/lib/mocha/api.rb +121 -56
  14. data/lib/mocha/argument_iterator.rb +4 -8
  15. data/lib/mocha/backtrace_filter.rb +1 -5
  16. data/lib/mocha/block_matcher.rb +31 -0
  17. data/lib/mocha/cardinality.rb +60 -49
  18. data/lib/mocha/central.rb +21 -12
  19. data/lib/mocha/change_state_side_effect.rb +0 -4
  20. data/lib/mocha/class_methods.rb +19 -20
  21. data/lib/mocha/configuration.rb +361 -18
  22. data/lib/mocha/debug.rb +3 -2
  23. data/lib/mocha/deprecation.rb +8 -11
  24. data/lib/mocha/detection/mini_test.rb +0 -2
  25. data/lib/mocha/detection/test_unit.rb +3 -5
  26. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  27. data/lib/mocha/exception_raiser.rb +4 -6
  28. data/lib/mocha/expectation.rb +125 -89
  29. data/lib/mocha/expectation_error.rb +1 -1
  30. data/lib/mocha/expectation_error_factory.rb +0 -1
  31. data/lib/mocha/expectation_list.rb +7 -11
  32. data/lib/mocha/hooks.rb +1 -3
  33. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  34. data/lib/mocha/inspect.rb +30 -38
  35. data/lib/mocha/instance_method.rb +15 -8
  36. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  37. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  38. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  39. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  40. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  41. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  48. data/lib/mocha/integration/mini_test.rb +7 -0
  49. data/lib/mocha/integration/monkey_patcher.rb +8 -2
  50. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  51. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  52. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  53. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  55. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  56. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
  57. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  58. data/lib/mocha/integration/test_unit.rb +7 -0
  59. data/lib/mocha/integration.rb +2 -5
  60. data/lib/mocha/invocation.rb +77 -0
  61. data/lib/mocha/is_a.rb +0 -2
  62. data/lib/mocha/logger.rb +0 -4
  63. data/lib/mocha/macos_version.rb +5 -0
  64. data/lib/mocha/method_matcher.rb +1 -5
  65. data/lib/mocha/minitest.rb +8 -0
  66. data/lib/mocha/mock.rb +94 -46
  67. data/lib/mocha/mockery.rb +72 -98
  68. data/lib/mocha/names.rb +2 -12
  69. data/lib/mocha/not_initialized_error.rb +7 -0
  70. data/lib/mocha/object_methods.rb +25 -31
  71. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  72. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  74. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  75. data/lib/mocha/parameter_matchers/base.rb +6 -12
  76. data/lib/mocha/parameter_matchers/equals.rb +1 -7
  77. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  78. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  79. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  80. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  81. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  82. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  83. data/lib/mocha/parameter_matchers/includes.rb +50 -8
  84. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  85. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  86. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  87. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  88. data/lib/mocha/parameter_matchers/not.rb +2 -7
  89. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  90. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  91. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  92. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  93. data/lib/mocha/parameter_matchers.rb +3 -4
  94. data/lib/mocha/parameters_matcher.rb +6 -9
  95. data/lib/mocha/raised_exception.rb +11 -0
  96. data/lib/mocha/receivers.rb +10 -14
  97. data/lib/mocha/return_values.rb +4 -8
  98. data/lib/mocha/ruby_version.rb +4 -0
  99. data/lib/mocha/sequence.rb +4 -9
  100. data/lib/mocha/setup.rb +5 -0
  101. data/lib/mocha/single_return_value.rb +2 -5
  102. data/lib/mocha/singleton_class.rb +9 -0
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +125 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +7 -2
  107. data/lib/mocha/thrower.rb +4 -6
  108. data/lib/mocha/thrown_object.rb +12 -0
  109. data/lib/mocha/version.rb +1 -1
  110. data/lib/mocha/yield_parameters.rb +7 -17
  111. data/lib/mocha.rb +8 -0
  112. data/mocha.gemspec +42 -40
  113. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  114. data/yard-templates/default/layout/html/setup.rb +2 -3
  115. metadata +45 -191
  116. data/bin/build-matrix +0 -71
  117. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  120. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  125. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  128. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  129. data/lib/mocha/class_method.rb +0 -127
  130. data/lib/mocha/mini_test.rb +0 -3
  131. data/lib/mocha/module_method.rb +0 -16
  132. data/lib/mocha/module_methods.rb +0 -14
  133. data/lib/mocha/multiple_yields.rb +0 -20
  134. data/lib/mocha/no_yields.rb +0 -11
  135. data/lib/mocha/parameter_matchers/object.rb +0 -17
  136. data/lib/mocha/pretty_parameters.rb +0 -28
  137. data/lib/mocha/single_yield.rb +0 -18
  138. data/lib/mocha/standalone.rb +0 -4
  139. data/lib/mocha/unexpected_invocation.rb +0 -26
  140. data/lib/mocha_standalone.rb +0 -4
  141. data/test/acceptance/acceptance_test_helper.rb +0 -41
  142. data/test/acceptance/bug_18914_test.rb +0 -43
  143. data/test/acceptance/bug_21465_test.rb +0 -34
  144. data/test/acceptance/bug_21563_test.rb +0 -25
  145. data/test/acceptance/exception_rescue_test.rb +0 -55
  146. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  147. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  148. data/test/acceptance/failure_messages_test.rb +0 -64
  149. data/test/acceptance/issue_65_test.rb +0 -63
  150. data/test/acceptance/issue_70_test.rb +0 -55
  151. data/test/acceptance/mocha_example_test.rb +0 -98
  152. data/test/acceptance/mocha_test_result_test.rb +0 -84
  153. data/test/acceptance/mock_test.rb +0 -100
  154. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  155. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  156. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  157. data/test/acceptance/optional_parameters_test.rb +0 -70
  158. data/test/acceptance/parameter_matcher_test.rb +0 -337
  159. data/test/acceptance/partial_mocks_test.rb +0 -47
  160. data/test/acceptance/prepend_test.rb +0 -88
  161. data/test/acceptance/raise_exception_test.rb +0 -39
  162. data/test/acceptance/return_value_test.rb +0 -52
  163. data/test/acceptance/sequence_test.rb +0 -192
  164. data/test/acceptance/states_test.rb +0 -70
  165. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  166. data/test/acceptance/stub_any_instance_method_test.rb +0 -238
  167. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  168. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  169. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  170. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  171. data/test/acceptance/stub_everything_test.rb +0 -56
  172. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  173. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  174. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  176. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  179. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  180. data/test/acceptance/stub_module_method_test.rb +0 -163
  181. data/test/acceptance/stub_test.rb +0 -52
  182. data/test/acceptance/stubba_example_test.rb +0 -102
  183. data/test/acceptance/stubba_test_result_test.rb +0 -66
  184. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  185. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  186. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  187. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  188. data/test/acceptance/stubbing_nil_test.rb +0 -59
  189. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -130
  190. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  191. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  192. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  193. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  194. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  195. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  196. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  197. data/test/acceptance/throw_test.rb +0 -45
  198. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  199. data/test/acceptance/unstubbing_test.rb +0 -168
  200. data/test/assertions.rb +0 -6
  201. data/test/deprecation_disabler.rb +0 -15
  202. data/test/execution_point.rb +0 -36
  203. data/test/integration/mini_test_test.rb +0 -8
  204. data/test/integration/shared_tests.rb +0 -174
  205. data/test/integration/test_unit_test.rb +0 -8
  206. data/test/method_definer.rb +0 -24
  207. data/test/mini_test_result.rb +0 -90
  208. data/test/minitest_result.rb +0 -49
  209. data/test/simple_counter.rb +0 -13
  210. data/test/test_helper.rb +0 -50
  211. data/test/test_runner.rb +0 -58
  212. data/test/test_unit_result.rb +0 -20
  213. data/test/unit/any_instance_method_test.rb +0 -132
  214. data/test/unit/array_inspect_test.rb +0 -16
  215. data/test/unit/backtrace_filter_test.rb +0 -19
  216. data/test/unit/cardinality_test.rb +0 -56
  217. data/test/unit/central_test.rb +0 -100
  218. data/test/unit/change_state_side_effect_test.rb +0 -41
  219. data/test/unit/class_method_test.rb +0 -223
  220. data/test/unit/class_methods_test.rb +0 -40
  221. data/test/unit/configuration_test.rb +0 -38
  222. data/test/unit/date_time_inspect_test.rb +0 -21
  223. data/test/unit/exception_raiser_test.rb +0 -42
  224. data/test/unit/expectation_list_test.rb +0 -82
  225. data/test/unit/expectation_test.rb +0 -497
  226. data/test/unit/hash_inspect_test.rb +0 -16
  227. data/test/unit/hooks_test.rb +0 -29
  228. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  229. data/test/unit/method_matcher_test.rb +0 -28
  230. data/test/unit/mock_test.rb +0 -341
  231. data/test/unit/mockery_test.rb +0 -151
  232. data/test/unit/module_methods_test.rb +0 -19
  233. data/test/unit/multiple_yields_test.rb +0 -18
  234. data/test/unit/no_yields_test.rb +0 -18
  235. data/test/unit/object_inspect_test.rb +0 -38
  236. data/test/unit/object_methods_test.rb +0 -46
  237. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  238. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  239. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  240. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  241. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  242. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  243. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  244. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  245. data/test/unit/parameter_matchers/includes_test.rb +0 -59
  246. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  247. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  248. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/not_test.rb +0 -26
  250. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  251. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  252. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  253. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  254. data/test/unit/parameters_matcher_test.rb +0 -121
  255. data/test/unit/receivers_test.rb +0 -66
  256. data/test/unit/return_values_test.rb +0 -63
  257. data/test/unit/sequence_test.rb +0 -104
  258. data/test/unit/single_return_value_test.rb +0 -14
  259. data/test/unit/single_yield_test.rb +0 -18
  260. data/test/unit/state_machine_test.rb +0 -98
  261. data/test/unit/string_inspect_test.rb +0 -11
  262. data/test/unit/thrower_test.rb +0 -20
  263. data/test/unit/yield_parameters_test.rb +0 -93
@@ -2,16 +2,16 @@ module Mocha
2
2
  module Integration
3
3
  module MiniTest
4
4
  module Nothing
5
- def self.applicable_to?(test_unit_version, ruby_version = nil)
5
+ def self.applicable_to?(_test_unit_version, _ruby_version = nil)
6
6
  true
7
7
  end
8
8
 
9
9
  def self.description
10
- "nothing (no MiniTest integration available)"
10
+ 'nothing (no MiniTest integration available)'
11
11
  end
12
12
 
13
- def self.included(mod)
14
- raise "No MiniTest integration available"
13
+ def self.included(_mod)
14
+ raise 'No MiniTest integration available'
15
15
  end
16
16
  end
17
17
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem v1.3"
14
+ 'monkey patch for MiniTest gem v1.3'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,12 +19,14 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  result = '.'
25
26
  begin
26
27
  begin
27
28
  @passed = nil
29
+ mocha_setup
28
30
  self.setup
29
31
  self.__send__ self.name
30
32
  mocha_verify(assertion_counter)
@@ -44,6 +46,7 @@ module Mocha
44
46
  end
45
47
  result
46
48
  end
49
+ # rubocop:enable all
47
50
  end
48
51
  end
49
52
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem v1.4.0"
14
+ 'monkey patch for MiniTest gem v1.4.0'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,12 +19,14 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  result = '.'
25
26
  begin
26
27
  begin
27
28
  @passed = nil
29
+ mocha_setup
28
30
  self.setup
29
31
  self.__send__ self.__name__
30
32
  mocha_verify(assertion_counter)
@@ -44,6 +46,7 @@ module Mocha
44
46
  end
45
47
  result
46
48
  end
49
+ # rubocop:enable all
47
50
  end
48
51
  end
49
52
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem v1.4.1"
14
+ 'monkey patch for MiniTest gem v1.4.1'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  trap 'INFO' do
24
25
  warn '%s#%s %.2fs' % [self.class, self.__name__,
@@ -31,6 +32,7 @@ module Mocha
31
32
  begin
32
33
  begin
33
34
  @passed = nil
35
+ mocha_setup
34
36
  self.setup
35
37
  self.__send__ self.__name__
36
38
  mocha_verify(assertion_counter)
@@ -55,6 +57,7 @@ module Mocha
55
57
  end
56
58
  result
57
59
  end
60
+ # rubocop:enable all
58
61
  end
59
62
  end
60
63
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem >= v1.4.2 and <= v1.7.2"
14
+ 'monkey patch for MiniTest gem >= v1.4.2 and <= v1.7.2'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  trap 'INFO' do
24
25
  warn '%s#%s %.2fs' % [self.class, self.__name__,
@@ -31,6 +32,7 @@ module Mocha
31
32
  begin
32
33
  begin
33
34
  @passed = nil
35
+ mocha_setup
34
36
  self.setup
35
37
  self.__send__ self.__name__
36
38
  mocha_verify(assertion_counter)
@@ -55,6 +57,7 @@ module Mocha
55
57
  end
56
58
  result
57
59
  end
60
+ # rubocop:enable all
58
61
  end
59
62
  end
60
63
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem v2.0.0"
14
+ 'monkey patch for MiniTest gem v2.0.0'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  trap 'INFO' do
24
25
  time = Time.now - runner.start_time
@@ -31,6 +32,7 @@ module Mocha
31
32
  begin
32
33
  begin
33
34
  @passed = nil
35
+ mocha_setup
34
36
  self.setup
35
37
  self.__send__ self.__name__
36
38
  mocha_verify(assertion_counter)
@@ -56,6 +58,7 @@ module Mocha
56
58
  end
57
59
  result
58
60
  end
61
+ # rubocop:enable all
59
62
  end
60
63
  end
61
64
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem >= v2.0.1 <= v2.2.2"
14
+ 'monkey patch for MiniTest gem >= v2.0.1 <= v2.2.2'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  trap 'INFO' do
24
25
  time = runner.start_time ? Time.now - runner.start_time : 0
@@ -31,6 +32,7 @@ module Mocha
31
32
  begin
32
33
  begin
33
34
  @passed = nil
35
+ mocha_setup
34
36
  self.setup
35
37
  self.__send__ self.__name__
36
38
  mocha_verify(assertion_counter)
@@ -56,6 +58,7 @@ module Mocha
56
58
  end
57
59
  result
58
60
  end
61
+ # rubocop:enable all
59
62
  end
60
63
  end
61
64
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem >= v2.11.0 <= v2.11.1"
14
+ 'monkey patch for MiniTest gem >= v2.11.0 <= v2.11.1'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  trap 'INFO' do
24
25
  time = runner.start_time ? Time.now - runner.start_time : 0
@@ -32,6 +33,7 @@ module Mocha
32
33
  begin
33
34
  @passed = nil
34
35
  self.before_setup
36
+ mocha_setup
35
37
  self.setup
36
38
  self.after_setup
37
39
  self.run_test self.__name__
@@ -60,6 +62,7 @@ module Mocha
60
62
  end
61
63
  result
62
64
  end
65
+ # rubocop:enable all
63
66
  end
64
67
  end
65
68
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem >= v2.11.2 <= v3.2.0"
14
+ 'monkey patch for MiniTest gem >= v2.11.2 <= v3.2.0'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  trap "INFO" do
24
25
  runner.report.each_with_index do |msg, i|
@@ -35,6 +36,7 @@ module Mocha
35
36
  begin
36
37
  @passed = nil
37
38
  self.before_setup
39
+ mocha_setup
38
40
  self.setup
39
41
  self.after_setup
40
42
  self.run_test self.__name__
@@ -63,6 +65,7 @@ module Mocha
63
65
  end
64
66
  result
65
67
  end
68
+ # rubocop:enable all
66
69
  end
67
70
  end
68
71
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for MiniTest gem >= v2.3.0 <= v2.10.1"
14
+ 'monkey patch for MiniTest gem >= v2.3.0 <= v2.10.1'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run runner
23
24
  trap 'INFO' do
24
25
  time = runner.start_time ? Time.now - runner.start_time : 0
@@ -31,6 +32,7 @@ module Mocha
31
32
  begin
32
33
  begin
33
34
  @passed = nil
35
+ mocha_setup
34
36
  self.setup
35
37
  self.run_setup_hooks
36
38
  self.__send__ self.__name__
@@ -58,6 +60,7 @@ module Mocha
58
60
  end
59
61
  result
60
62
  end
63
+ # rubocop:enable all
61
64
  end
62
65
  end
63
66
  end
@@ -14,6 +14,8 @@ require 'mocha/integration/mini_test/version_2110_to_2111'
14
14
  require 'mocha/integration/mini_test/version_2112_to_320'
15
15
  require 'mocha/integration/mini_test/adapter'
16
16
 
17
+ require 'mocha/deprecation'
18
+
17
19
  module Mocha
18
20
  module Integration
19
21
  module MiniTest
@@ -39,6 +41,11 @@ module Mocha
39
41
 
40
42
  target = Detection::MiniTest.testcase
41
43
  unless target < integration_module
44
+ unless integration_module == MiniTest::Adapter
45
+ Deprecation.warning(
46
+ 'Versions of minitest earlier than v3.3.0 will not be supported in future versions of Mocha.'
47
+ )
48
+ end
42
49
  Debug.puts "Applying #{integration_module.description}"
43
50
  target.send(:include, integration_module)
44
51
  end
@@ -4,13 +4,19 @@ module Mocha
4
4
  module Integration
5
5
  module MonkeyPatcher
6
6
  def self.apply(mod, run_method_patch)
7
- unless mod < Mocha::API
7
+ if mod < Mocha::API
8
+ Debug.puts "Mocha::API already included in #{mod}"
9
+ else
8
10
  mod.send(:include, Mocha::API)
9
11
  end
10
- unless mod.method_defined?(:run_before_mocha)
12
+ if mod.method_defined?(:run_before_mocha)
13
+ Debug.puts "#{mod}#run_before_mocha method already defined"
14
+ elsif mod.method_defined?(:run)
11
15
  mod.send(:alias_method, :run_before_mocha, :run)
12
16
  mod.send(:remove_method, :run)
13
17
  mod.send(:include, run_method_patch)
18
+ else
19
+ raise "Unable to monkey-patch #{mod}, because it does not define a `#run` method"
14
20
  end
15
21
  end
16
22
  end
@@ -5,7 +5,6 @@ require 'mocha/expectation_error'
5
5
  module Mocha
6
6
  module Integration
7
7
  module TestUnit
8
-
9
8
  # Integrates Mocha into recent versions of Test::Unit.
10
9
  #
11
10
  # See the source code for an example of how to integrate Mocha into a test library.
@@ -13,13 +12,13 @@ module Mocha
13
12
  include Mocha::API
14
13
 
15
14
  # @private
16
- def self.applicable_to?(test_unit_version, ruby_version = nil)
15
+ def self.applicable_to?(test_unit_version, _ruby_version = nil)
17
16
  Gem::Requirement.new('>= 2.5.1').satisfied_by?(test_unit_version)
18
17
  end
19
18
 
20
19
  # @private
21
20
  def self.description
22
- "adapter for Test::Unit gem >= v2.5.1"
21
+ 'adapter for Test::Unit gem >= v2.5.1'
23
22
  end
24
23
 
25
24
  # @private
@@ -39,10 +38,10 @@ module Mocha
39
38
  private
40
39
 
41
40
  # @private
42
- def handle_mocha_expectation_error(e)
43
- return false unless e.is_a?(Mocha::ExpectationError)
41
+ def handle_mocha_expectation_error(exception)
42
+ return false unless exception.is_a?(Mocha::ExpectationError)
44
43
  problem_occurred
45
- add_failure(e.message, e.backtrace)
44
+ add_failure(exception.message, exception.backtrace)
46
45
  true
47
46
  end
48
47
  end
@@ -6,12 +6,12 @@ module Mocha
6
6
  module Integration
7
7
  module TestUnit
8
8
  module GemVersion200
9
- def self.applicable_to?(test_unit_version, ruby_version = nil)
9
+ def self.applicable_to?(test_unit_version, _ruby_version = nil)
10
10
  Gem::Requirement.new('2.0.0').satisfied_by?(test_unit_version)
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for Test::Unit gem v2.0.0"
14
+ 'monkey patch for Test::Unit gem v2.0.0'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run(result)
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  begin
@@ -26,6 +27,7 @@ module Mocha
26
27
  yield(Test::Unit::TestCase::STARTED, name)
27
28
  begin
28
29
  begin
30
+ mocha_setup
29
31
  run_setup
30
32
  __send__(@method_name)
31
33
  mocha_verify(assertion_counter)
@@ -52,6 +54,7 @@ module Mocha
52
54
  @_result = nil
53
55
  end
54
56
  end
57
+ # rubocop:enable all
55
58
  end
56
59
  end
57
60
  end
@@ -6,12 +6,12 @@ module Mocha
6
6
  module Integration
7
7
  module TestUnit
8
8
  module GemVersion201To202
9
- def self.applicable_to?(test_unit_version, ruby_version = nil)
9
+ def self.applicable_to?(test_unit_version, _ruby_version = nil)
10
10
  Gem::Requirement.new('>= 2.0.1', '<= 2.0.2').satisfied_by?(test_unit_version)
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for Test::Unit gem >= v2.0.1 and <= v2.0.2"
14
+ 'monkey patch for Test::Unit gem >= v2.0.1 and <= v2.0.2'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run(result)
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  begin
@@ -26,6 +27,7 @@ module Mocha
26
27
  yield(Test::Unit::TestCase::STARTED, name)
27
28
  begin
28
29
  begin
30
+ mocha_setup
29
31
  run_setup
30
32
  run_test
31
33
  mocha_verify(assertion_counter)
@@ -52,6 +54,7 @@ module Mocha
52
54
  @_result = nil
53
55
  end
54
56
  end
57
+ # rubocop:enable all
55
58
  end
56
59
  end
57
60
  end
@@ -6,12 +6,12 @@ module Mocha
6
6
  module Integration
7
7
  module TestUnit
8
8
  module GemVersion203To220
9
- def self.applicable_to?(test_unit_version, ruby_version = nil)
9
+ def self.applicable_to?(test_unit_version, _ruby_version = nil)
10
10
  Gem::Requirement.new('>= 2.0.3', '<= 2.2.0').satisfied_by?(test_unit_version)
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for Test::Unit gem >= v2.0.3 and <= v2.2.0"
14
+ 'monkey patch for Test::Unit gem >= v2.0.3 and <= v2.2.0'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run(result)
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  begin
@@ -26,6 +27,7 @@ module Mocha
26
27
  yield(Test::Unit::TestCase::STARTED, name)
27
28
  begin
28
29
  begin
30
+ mocha_setup
29
31
  run_setup
30
32
  run_test
31
33
  mocha_verify(assertion_counter)
@@ -52,6 +54,7 @@ module Mocha
52
54
  # @_result = nil # For test-spec's after_all :<
53
55
  end
54
56
  end
57
+ # rubocop:enable all
55
58
  end
56
59
  end
57
60
  end
@@ -6,12 +6,12 @@ module Mocha
6
6
  module Integration
7
7
  module TestUnit
8
8
  module GemVersion230To250
9
- def self.applicable_to?(test_unit_version, ruby_version = nil)
9
+ def self.applicable_to?(test_unit_version, _ruby_version = nil)
10
10
  Gem::Requirement.new('>= 2.3.0', '<= 2.5.0').satisfied_by?(test_unit_version)
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for Test::Unit gem >= v2.3.0 and <= v2.5.0"
14
+ 'monkey patch for Test::Unit gem >= v2.3.0 and <= v2.5.0'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,6 +19,7 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run(result)
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  begin
@@ -28,6 +29,7 @@ module Mocha
28
29
  yield(Test::Unit::TestCase::STARTED_OBJECT, self)
29
30
  begin
30
31
  begin
32
+ mocha_setup
31
33
  run_setup
32
34
  run_test
33
35
  run_cleanup
@@ -58,6 +60,7 @@ module Mocha
58
60
  # @_result = nil # For test-spec's after_all :<
59
61
  end
60
62
  end
63
+ # rubocop:enable all
61
64
  end
62
65
  end
63
66
  end
@@ -2,16 +2,16 @@ module Mocha
2
2
  module Integration
3
3
  module TestUnit
4
4
  module Nothing
5
- def self.applicable_to?(test_unit_version, ruby_version = nil)
5
+ def self.applicable_to?(_test_unit_version, _ruby_version = nil)
6
6
  true
7
7
  end
8
8
 
9
9
  def self.description
10
- "nothing (no Test::Unit integration available)"
10
+ 'nothing (no Test::Unit integration available)'
11
11
  end
12
12
 
13
- def self.included(mod)
14
- raise "No Test::Unit integration available"
13
+ def self.included(_mod)
14
+ raise 'No Test::Unit integration available'
15
15
  end
16
16
  end
17
17
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for standard library in Ruby <= v1.8.5"
14
+ 'monkey patch for standard library in Ruby <= v1.8.5'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,12 +19,14 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run(result)
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  yield(Test::Unit::TestCase::STARTED, name)
25
26
  @_result = result
26
27
  begin
27
28
  begin
29
+ mocha_setup
28
30
  setup
29
31
  __send__(@method_name)
30
32
  mocha_verify(assertion_counter)
@@ -51,6 +53,7 @@ module Mocha
51
53
  result.add_run
52
54
  yield(Test::Unit::TestCase::FINISHED, name)
53
55
  end
56
+ # rubocop:enable all
54
57
  end
55
58
  end
56
59
  end
@@ -11,7 +11,7 @@ module Mocha
11
11
  end
12
12
 
13
13
  def self.description
14
- "monkey patch for standard library Test::Unit in Ruby >= v1.8.6"
14
+ 'monkey patch for standard library Test::Unit in Ruby >= v1.8.6'
15
15
  end
16
16
 
17
17
  def self.included(mod)
@@ -19,12 +19,14 @@ module Mocha
19
19
  end
20
20
 
21
21
  module RunMethodPatch
22
+ # rubocop:disable all
22
23
  def run(result)
23
24
  assertion_counter = AssertionCounter.new(self)
24
25
  yield(Test::Unit::TestCase::STARTED, name)
25
26
  @_result = result
26
27
  begin
27
28
  begin
29
+ mocha_setup
28
30
  setup
29
31
  __send__(@method_name)
30
32
  mocha_verify(assertion_counter)
@@ -53,6 +55,7 @@ module Mocha
53
55
  result.add_run
54
56
  yield(Test::Unit::TestCase::FINISHED, name)
55
57
  end
58
+ # rubocop:enable all
56
59
  end
57
60
  end
58
61
  end
@@ -11,6 +11,8 @@ require 'mocha/integration/test_unit/gem_version_203_to_220'
11
11
  require 'mocha/integration/test_unit/gem_version_230_to_250'
12
12
  require 'mocha/integration/test_unit/adapter'
13
13
 
14
+ require 'mocha/deprecation'
15
+
14
16
  module Mocha
15
17
  module Integration
16
18
  module TestUnit
@@ -34,6 +36,11 @@ module Mocha
34
36
  ].detect { |m| m.applicable_to?(test_unit_version, ruby_version) }
35
37
 
36
38
  unless ::Test::Unit::TestCase < integration_module
39
+ unless integration_module == TestUnit::Adapter
40
+ Deprecation.warning(
41
+ 'Versions of test-unit earlier than v2.5.1 will not be supported in future versions of Mocha.'
42
+ )
43
+ end
37
44
  Debug.puts "Applying #{integration_module.description}"
38
45
  ::Test::Unit::TestCase.send(:include, integration_module)
39
46
  end
@@ -1,14 +1,11 @@
1
- require 'mocha/deprecation'
2
1
  require 'mocha/integration/test_unit'
3
2
  require 'mocha/integration/mini_test'
4
3
 
5
4
  module Mocha
6
5
  module Integration
7
6
  def self.activate
8
- if [Integration::TestUnit, Integration::MiniTest].map(&:activate).none?
9
- Deprecation.warning("Test::Unit or MiniTest must be loaded *before* `require 'mocha/setup'`.")
10
- Deprecation.warning("If you're integrating with a test library other than Test::Unit or MiniTest, you should use `require 'mocha/api'` instead of `require 'mocha/setup'`.")
11
- end
7
+ return unless [Integration::TestUnit, Integration::MiniTest].map(&:activate).none?
8
+ raise "Test::Unit or Minitest must be loaded *before* `require 'mocha/setup'`."
12
9
  end
13
10
  end
14
11
  end