mocha 1.4.0 → 2.1.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 (269) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +53 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -1
  6. data/CONTRIBUTING.md +4 -9
  7. data/COPYING.md +2 -2
  8. data/Gemfile +27 -0
  9. data/MIT-LICENSE.md +1 -1
  10. data/README.md +88 -117
  11. data/RELEASE.md +340 -0
  12. data/Rakefile +53 -52
  13. data/gemfiles/Gemfile.minitest.latest +1 -0
  14. data/gemfiles/Gemfile.test-unit.latest +2 -5
  15. data/lib/mocha/any_instance_method.rb +9 -62
  16. data/lib/mocha/api.rb +84 -74
  17. data/lib/mocha/argument_iterator.rb +4 -8
  18. data/lib/mocha/backtrace_filter.rb +3 -7
  19. data/lib/mocha/block_matcher.rb +31 -0
  20. data/lib/mocha/cardinality.rb +60 -49
  21. data/lib/mocha/central.rb +21 -12
  22. data/lib/mocha/change_state_side_effect.rb +0 -4
  23. data/lib/mocha/class_methods.rb +19 -21
  24. data/lib/mocha/configuration.rb +317 -52
  25. data/lib/mocha/debug.rb +2 -4
  26. data/lib/mocha/deprecation.rb +6 -12
  27. data/lib/mocha/detection/mini_test.rb +0 -2
  28. data/lib/mocha/detection/test_unit.rb +3 -5
  29. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  30. data/lib/mocha/exception_raiser.rb +4 -6
  31. data/lib/mocha/expectation.rb +186 -95
  32. data/lib/mocha/expectation_error.rb +1 -1
  33. data/lib/mocha/expectation_error_factory.rb +0 -1
  34. data/lib/mocha/expectation_list.rb +7 -11
  35. data/lib/mocha/hooks.rb +1 -3
  36. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  37. data/lib/mocha/inspect.rb +30 -28
  38. data/lib/mocha/instance_method.rb +14 -3
  39. data/lib/mocha/integration/mini_test/adapter.rb +3 -5
  40. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  41. data/lib/mocha/integration/mini_test.rb +10 -31
  42. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  43. data/lib/mocha/integration/test_unit/adapter.rb +8 -9
  44. data/lib/mocha/integration/test_unit.rb +10 -26
  45. data/lib/mocha/invocation.rb +73 -0
  46. data/lib/mocha/is_a.rb +0 -2
  47. data/lib/mocha/logger.rb +0 -4
  48. data/lib/mocha/macos_version.rb +5 -0
  49. data/lib/mocha/method_matcher.rb +1 -5
  50. data/lib/mocha/minitest.rb +5 -2
  51. data/lib/mocha/mock.rb +104 -68
  52. data/lib/mocha/mockery.rb +70 -99
  53. data/lib/mocha/names.rb +2 -12
  54. data/lib/mocha/not_initialized_error.rb +7 -0
  55. data/lib/mocha/object_methods.rb +25 -31
  56. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  57. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  58. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  59. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  60. data/lib/mocha/parameter_matchers/base.rb +7 -13
  61. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  62. data/lib/mocha/parameter_matchers/equivalent_uri.rb +3 -13
  63. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  64. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  65. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  66. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  67. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  68. data/lib/mocha/parameter_matchers/includes.rb +4 -6
  69. data/lib/mocha/parameter_matchers/instance_methods.rb +27 -0
  70. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  71. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  72. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  73. data/lib/mocha/parameter_matchers/not.rb +2 -7
  74. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  75. data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +64 -0
  76. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  77. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  78. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  79. data/lib/mocha/parameter_matchers.rb +2 -3
  80. data/lib/mocha/parameters_matcher.rb +8 -11
  81. data/lib/mocha/raised_exception.rb +11 -0
  82. data/lib/mocha/receivers.rb +10 -14
  83. data/lib/mocha/return_values.rb +4 -8
  84. data/lib/mocha/ruby_version.rb +1 -2
  85. data/lib/mocha/sequence.rb +4 -9
  86. data/lib/mocha/single_return_value.rb +2 -5
  87. data/lib/mocha/state_machine.rb +33 -46
  88. data/lib/mocha/stubbed_method.rb +88 -0
  89. data/lib/mocha/stubbing_error.rb +2 -13
  90. data/lib/mocha/test_unit.rb +5 -2
  91. data/lib/mocha/thrower.rb +4 -6
  92. data/lib/mocha/thrown_object.rb +12 -0
  93. data/lib/mocha/version.rb +1 -1
  94. data/lib/mocha/yield_parameters.rb +7 -17
  95. data/mocha.gemspec +15 -65
  96. metadata +27 -257
  97. data/bin/build-matrix +0 -70
  98. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  99. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  100. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  101. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  102. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  103. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  104. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  105. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  106. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  107. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  108. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  109. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  110. data/init.rb +0 -3
  111. data/lib/mocha/class_method.rb +0 -119
  112. data/lib/mocha/integration/mini_test/nothing.rb +0 -19
  113. data/lib/mocha/integration/mini_test/version_13.rb +0 -51
  114. data/lib/mocha/integration/mini_test/version_140.rb +0 -51
  115. data/lib/mocha/integration/mini_test/version_141.rb +0 -62
  116. data/lib/mocha/integration/mini_test/version_142_to_172.rb +0 -62
  117. data/lib/mocha/integration/mini_test/version_200.rb +0 -63
  118. data/lib/mocha/integration/mini_test/version_201_to_222.rb +0 -63
  119. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +0 -67
  120. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +0 -70
  121. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +0 -65
  122. data/lib/mocha/integration/test_unit/gem_version_200.rb +0 -59
  123. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +0 -59
  124. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +0 -59
  125. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +0 -65
  126. data/lib/mocha/integration/test_unit/nothing.rb +0 -19
  127. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +0 -58
  128. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +0 -60
  129. data/lib/mocha/integration.rb +0 -14
  130. data/lib/mocha/mini_test.rb +0 -5
  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/setup.rb +0 -9
  138. data/lib/mocha/single_yield.rb +0 -18
  139. data/lib/mocha/standalone.rb +0 -4
  140. data/lib/mocha/unexpected_invocation.rb +0 -26
  141. data/lib/mocha_standalone.rb +0 -4
  142. data/test/acceptance/acceptance_test_helper.rb +0 -41
  143. data/test/acceptance/bug_18914_test.rb +0 -43
  144. data/test/acceptance/bug_21465_test.rb +0 -34
  145. data/test/acceptance/bug_21563_test.rb +0 -25
  146. data/test/acceptance/exception_rescue_test.rb +0 -55
  147. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  148. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  149. data/test/acceptance/failure_messages_test.rb +0 -64
  150. data/test/acceptance/issue_272_test.rb +0 -52
  151. data/test/acceptance/issue_65_test.rb +0 -63
  152. data/test/acceptance/issue_70_test.rb +0 -55
  153. data/test/acceptance/mocha_example_test.rb +0 -98
  154. data/test/acceptance/mocha_test_result_test.rb +0 -84
  155. data/test/acceptance/mock_test.rb +0 -100
  156. data/test/acceptance/mock_with_initializer_block_test.rb +0 -58
  157. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  158. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  159. data/test/acceptance/optional_parameters_test.rb +0 -70
  160. data/test/acceptance/parameter_matcher_test.rb +0 -301
  161. data/test/acceptance/partial_mocks_test.rb +0 -47
  162. data/test/acceptance/prepend_test.rb +0 -89
  163. data/test/acceptance/raise_exception_test.rb +0 -39
  164. data/test/acceptance/return_value_test.rb +0 -52
  165. data/test/acceptance/sequence_test.rb +0 -192
  166. data/test/acceptance/states_test.rb +0 -70
  167. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  168. data/test/acceptance/stub_any_instance_method_test.rb +0 -280
  169. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  170. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  171. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  172. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  173. data/test/acceptance/stub_everything_test.rb +0 -56
  174. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  175. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  176. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  177. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -78
  179. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  180. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  181. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  182. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -39
  183. data/test/acceptance/stub_module_method_test.rb +0 -201
  184. data/test/acceptance/stub_test.rb +0 -52
  185. data/test/acceptance/stubba_example_test.rb +0 -102
  186. data/test/acceptance/stubba_test_result_test.rb +0 -75
  187. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  188. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  189. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  190. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  191. data/test/acceptance/stubbing_nil_test.rb +0 -61
  192. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -143
  193. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  194. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  195. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  196. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  197. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  198. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -76
  199. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  200. data/test/acceptance/throw_test.rb +0 -45
  201. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  202. data/test/acceptance/unstubbing_test.rb +0 -168
  203. data/test/assertions.rb +0 -8
  204. data/test/deprecation_disabler.rb +0 -16
  205. data/test/execution_point.rb +0 -38
  206. data/test/integration/mini_test_test.rb +0 -8
  207. data/test/integration/shared_tests.rb +0 -174
  208. data/test/integration/test_unit_test.rb +0 -8
  209. data/test/method_definer.rb +0 -24
  210. data/test/mini_test_result.rb +0 -90
  211. data/test/minitest_result.rb +0 -49
  212. data/test/simple_counter.rb +0 -13
  213. data/test/test_helper.rb +0 -50
  214. data/test/test_runner.rb +0 -58
  215. data/test/test_unit_result.rb +0 -20
  216. data/test/unit/any_instance_method_test.rb +0 -136
  217. data/test/unit/array_inspect_test.rb +0 -16
  218. data/test/unit/backtrace_filter_test.rb +0 -19
  219. data/test/unit/cardinality_test.rb +0 -56
  220. data/test/unit/central_test.rb +0 -100
  221. data/test/unit/change_state_side_effect_test.rb +0 -41
  222. data/test/unit/class_method_test.rb +0 -229
  223. data/test/unit/class_methods_test.rb +0 -40
  224. data/test/unit/configuration_test.rb +0 -38
  225. data/test/unit/date_time_inspect_test.rb +0 -21
  226. data/test/unit/exception_raiser_test.rb +0 -42
  227. data/test/unit/expectation_list_test.rb +0 -82
  228. data/test/unit/expectation_test.rb +0 -497
  229. data/test/unit/hash_inspect_test.rb +0 -16
  230. data/test/unit/hooks_test.rb +0 -29
  231. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  232. data/test/unit/method_matcher_test.rb +0 -28
  233. data/test/unit/mock_test.rb +0 -350
  234. data/test/unit/mockery_test.rb +0 -157
  235. data/test/unit/module_methods_test.rb +0 -19
  236. data/test/unit/multiple_yields_test.rb +0 -18
  237. data/test/unit/no_yields_test.rb +0 -18
  238. data/test/unit/object_inspect_test.rb +0 -39
  239. data/test/unit/object_methods_test.rb +0 -46
  240. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  241. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  242. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  243. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  244. data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -51
  245. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  246. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  247. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  248. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  249. data/test/unit/parameter_matchers/includes_test.rb +0 -107
  250. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  251. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  252. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  253. data/test/unit/parameter_matchers/not_test.rb +0 -26
  254. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  255. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  256. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  257. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  258. data/test/unit/parameters_matcher_test.rb +0 -121
  259. data/test/unit/receivers_test.rb +0 -66
  260. data/test/unit/return_values_test.rb +0 -63
  261. data/test/unit/sequence_test.rb +0 -104
  262. data/test/unit/single_return_value_test.rb +0 -14
  263. data/test/unit/single_yield_test.rb +0 -18
  264. data/test/unit/state_machine_test.rb +0 -98
  265. data/test/unit/string_inspect_test.rb +0 -11
  266. data/test/unit/thrower_test.rb +0 -20
  267. data/test/unit/yield_parameters_test.rb +0 -93
  268. data/yard-templates/default/layout/html/google_analytics.erb +0 -11
  269. data/yard-templates/default/layout/html/setup.rb +0 -6
data/lib/mocha/inspect.rb CHANGED
@@ -1,57 +1,59 @@
1
1
  require 'date'
2
2
 
3
3
  module Mocha
4
-
5
- module ObjectMethods
6
- def mocha_inspect
7
- address = self.__id__ * 2
8
- address += 0x100000000 if address < 0
9
- inspect =~ /#</ ? "#<#{self.class}:0x#{'%x' % address}>" : inspect
4
+ module Inspect
5
+ module ObjectMethods
6
+ def mocha_inspect
7
+ address = __id__ * 2
8
+ address += 0x100000000 if address < 0
9
+ inspect =~ /#</ ? "#<#{self.class}:0x#{Kernel.format('%<address>x', address: address)}>" : inspect
10
+ end
10
11
  end
11
- end
12
12
 
13
- module ArrayMethods
14
- def mocha_inspect
15
- "[#{collect { |member| member.mocha_inspect }.join(', ')}]"
13
+ module ArrayMethods
14
+ def mocha_inspect(wrapped = true)
15
+ unwrapped = collect(&:mocha_inspect).join(', ')
16
+ wrapped ? "[#{unwrapped}]" : unwrapped
17
+ end
16
18
  end
17
- end
18
19
 
19
- module HashMethods
20
- def mocha_inspect
21
- "{#{collect { |key, value| "#{key.mocha_inspect} => #{value.mocha_inspect}" }.join(', ')}}"
20
+ module HashMethods
21
+ def mocha_inspect
22
+ unwrapped = collect { |key, value| "#{key.mocha_inspect} => #{value.mocha_inspect}" }.join(', ')
23
+ Hash.ruby2_keywords_hash?(self) ? unwrapped : "{#{unwrapped}}"
24
+ end
22
25
  end
23
- end
24
26
 
25
- module TimeMethods
26
- def mocha_inspect
27
- "#{inspect} (#{to_f} secs)"
27
+ module TimeMethods
28
+ def mocha_inspect
29
+ "#{inspect} (#{to_f} secs)"
30
+ end
28
31
  end
29
- end
30
32
 
31
- module DateMethods
32
- def mocha_inspect
33
- to_s
33
+ module DateMethods
34
+ def mocha_inspect
35
+ to_s
36
+ end
34
37
  end
35
38
  end
36
-
37
39
  end
38
40
 
39
41
  class Object
40
- include Mocha::ObjectMethods
42
+ include Mocha::Inspect::ObjectMethods
41
43
  end
42
44
 
43
45
  class Array
44
- include Mocha::ArrayMethods
46
+ include Mocha::Inspect::ArrayMethods
45
47
  end
46
48
 
47
49
  class Hash
48
- include Mocha::HashMethods
50
+ include Mocha::Inspect::HashMethods
49
51
  end
50
52
 
51
53
  class Time
52
- include Mocha::TimeMethods
54
+ include Mocha::Inspect::TimeMethods
53
55
  end
54
56
 
55
57
  class Date
56
- include Mocha::DateMethods
58
+ include Mocha::Inspect::DateMethods
57
59
  end
@@ -1,8 +1,19 @@
1
- require 'mocha/class_method'
1
+ require 'mocha/stubbed_method'
2
2
 
3
3
  module Mocha
4
+ class InstanceMethod < StubbedMethod
5
+ private
4
6
 
5
- class InstanceMethod < ClassMethod
6
- end
7
+ def mock_owner
8
+ stubbee
9
+ end
10
+
11
+ def stubbee_method(method_name)
12
+ stubbee._method(method_name)
13
+ end
7
14
 
15
+ def original_method_owner
16
+ stubbee.singleton_class
17
+ end
18
+ end
8
19
  end
@@ -5,7 +5,6 @@ require 'mocha/expectation_error_factory'
5
5
  module Mocha
6
6
  module Integration
7
7
  module MiniTest
8
-
9
8
  # Integrates Mocha into recent versions of MiniTest.
10
9
  #
11
10
  # See the source code for an example of how to integrate Mocha into a test library.
@@ -19,12 +18,12 @@ module Mocha
19
18
 
20
19
  # @private
21
20
  def self.description
22
- "adapter for MiniTest gem >= v3.3.0"
21
+ 'adapter for MiniTest gem >= v3.3.0'
23
22
  end
24
23
 
25
24
  # @private
26
- def self.included(mod)
27
- Mocha::ExpectationErrorFactory.exception_class = ::MiniTest::Assertion
25
+ def self.included(_mod)
26
+ Mocha::ExpectationErrorFactory.exception_class = ::Minitest::Assertion
28
27
  end
29
28
 
30
29
  # @private
@@ -51,4 +50,3 @@ module Mocha
51
50
  end
52
51
  end
53
52
  end
54
-
@@ -4,7 +4,7 @@ module Mocha
4
4
  module Integration
5
5
  module MiniTest
6
6
  def self.translate(exception)
7
- return exception unless exception.kind_of?(::Mocha::ExpectationError)
7
+ return exception unless exception.is_a?(::Mocha::ExpectationError)
8
8
  translated_exception = ::MiniTest::Assertion.new(exception.message)
9
9
  translated_exception.set_backtrace(exception.backtrace)
10
10
  translated_exception
@@ -1,47 +1,26 @@
1
1
  require 'mocha/debug'
2
-
3
2
  require 'mocha/detection/mini_test'
4
-
5
- require 'mocha/integration/mini_test/nothing'
6
- require 'mocha/integration/mini_test/version_13'
7
- require 'mocha/integration/mini_test/version_140'
8
- require 'mocha/integration/mini_test/version_141'
9
- require 'mocha/integration/mini_test/version_142_to_172'
10
- require 'mocha/integration/mini_test/version_200'
11
- require 'mocha/integration/mini_test/version_201_to_222'
12
- require 'mocha/integration/mini_test/version_230_to_2101'
13
- require 'mocha/integration/mini_test/version_2110_to_2111'
14
- require 'mocha/integration/mini_test/version_2112_to_320'
15
3
  require 'mocha/integration/mini_test/adapter'
16
4
 
17
5
  module Mocha
18
6
  module Integration
19
7
  module MiniTest
20
8
  def self.activate
21
- return false unless Detection::MiniTest.testcase
22
- mini_test_version = Gem::Version.new(Detection::MiniTest.version)
9
+ target = Detection::MiniTest.testcase
10
+ return false unless target
23
11
 
12
+ mini_test_version = Gem::Version.new(Detection::MiniTest.version)
24
13
  Debug.puts "Detected MiniTest version: #{mini_test_version}"
25
14
 
26
- integration_module = [
27
- MiniTest::Adapter,
28
- MiniTest::Version2112To320,
29
- MiniTest::Version2110To2111,
30
- MiniTest::Version230To2101,
31
- MiniTest::Version201To222,
32
- MiniTest::Version200,
33
- MiniTest::Version142To172,
34
- MiniTest::Version141,
35
- MiniTest::Version140,
36
- MiniTest::Version13,
37
- MiniTest::Nothing
38
- ].detect { |m| m.applicable_to?(mini_test_version) }
15
+ unless MiniTest::Adapter.applicable_to?(mini_test_version)
16
+ raise 'Versions of minitest earlier than v3.3.0 are not supported.'
17
+ end
39
18
 
40
- target = Detection::MiniTest.testcase
41
- unless target < integration_module
42
- Debug.puts "Applying #{integration_module.description}"
43
- target.send(:include, integration_module)
19
+ unless target < MiniTest::Adapter
20
+ Debug.puts "Applying #{MiniTest::Adapter.description}"
21
+ target.send(:include, MiniTest::Adapter)
44
22
  end
23
+
45
24
  true
46
25
  end
47
26
  end
@@ -11,14 +11,12 @@ module Mocha
11
11
  end
12
12
  if mod.method_defined?(:run_before_mocha)
13
13
  Debug.puts "#{mod}#run_before_mocha method already defined"
14
+ elsif mod.method_defined?(:run)
15
+ mod.send(:alias_method, :run_before_mocha, :run)
16
+ mod.send(:remove_method, :run)
17
+ mod.send(:include, run_method_patch)
14
18
  else
15
- if mod.method_defined?(:run)
16
- mod.send(:alias_method, :run_before_mocha, :run)
17
- mod.send(:remove_method, :run)
18
- mod.send(:include, run_method_patch)
19
- else
20
- raise "Unable to monkey-patch #{mod}, because it does not define a `#run` method"
21
- end
19
+ raise "Unable to monkey-patch #{mod}, because it does not define a `#run` method"
22
20
  end
23
21
  end
24
22
  end
@@ -5,7 +5,6 @@ require 'mocha/expectation_error'
5
5
  module Mocha
6
6
  module Integration
7
7
  module TestUnit
8
-
9
8
  # Integrates Mocha into recent versions of Test::Unit.
10
9
  #
11
10
  # See the source code for an example of how to integrate Mocha into a test library.
@@ -13,36 +12,36 @@ 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)
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
26
25
  def self.included(mod)
27
- mod.setup :mocha_setup, :before => :prepend
26
+ mod.setup :mocha_setup, before: :prepend
28
27
 
29
28
  mod.exception_handler(:handle_mocha_expectation_error)
30
29
 
31
- mod.cleanup :after => :append do
30
+ mod.cleanup after: :append do
32
31
  assertion_counter = Integration::AssertionCounter.new(self)
33
32
  mocha_verify(assertion_counter)
34
33
  end
35
34
 
36
- mod.teardown :mocha_teardown, :after => :append
35
+ mod.teardown :mocha_teardown, after: :append
37
36
  end
38
37
 
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
@@ -1,42 +1,26 @@
1
1
  require 'mocha/debug'
2
-
3
2
  require 'mocha/detection/test_unit'
4
-
5
- require 'mocha/integration/test_unit/nothing'
6
- require 'mocha/integration/test_unit/ruby_version_185_and_below'
7
- require 'mocha/integration/test_unit/ruby_version_186_and_above'
8
- require 'mocha/integration/test_unit/gem_version_200'
9
- require 'mocha/integration/test_unit/gem_version_201_to_202'
10
- require 'mocha/integration/test_unit/gem_version_203_to_220'
11
- require 'mocha/integration/test_unit/gem_version_230_to_250'
12
3
  require 'mocha/integration/test_unit/adapter'
13
4
 
14
5
  module Mocha
15
6
  module Integration
16
7
  module TestUnit
17
8
  def self.activate
18
- return false unless Detection::TestUnit.testcase
19
- test_unit_version = Gem::Version.new(Detection::TestUnit.version)
20
- ruby_version = Gem::Version.new(RUBY_VERSION.dup)
9
+ target = Detection::TestUnit.testcase
10
+ return false unless target
21
11
 
22
- Debug.puts "Detected Ruby version: #{ruby_version}"
12
+ test_unit_version = Gem::Version.new(Detection::TestUnit.version)
23
13
  Debug.puts "Detected Test::Unit version: #{test_unit_version}"
24
14
 
25
- integration_module = [
26
- TestUnit::Adapter,
27
- TestUnit::GemVersion230To250,
28
- TestUnit::GemVersion203To220,
29
- TestUnit::GemVersion201To202,
30
- TestUnit::GemVersion200,
31
- TestUnit::RubyVersion186AndAbove,
32
- TestUnit::RubyVersion185AndBelow,
33
- TestUnit::Nothing
34
- ].detect { |m| m.applicable_to?(test_unit_version, ruby_version) }
15
+ unless TestUnit::Adapter.applicable_to?(test_unit_version)
16
+ raise 'Versions of test-unit earlier than v2.5.1 are not supported.'
17
+ end
35
18
 
36
- unless ::Test::Unit::TestCase < integration_module
37
- Debug.puts "Applying #{integration_module.description}"
38
- ::Test::Unit::TestCase.send(:include, integration_module)
19
+ unless target < TestUnit::Adapter
20
+ Debug.puts "Applying #{TestUnit::Adapter.description}"
21
+ target.send(:include, TestUnit::Adapter)
39
22
  end
23
+
40
24
  true
41
25
  end
42
26
  end
@@ -0,0 +1,73 @@
1
+ require 'mocha/parameters_matcher'
2
+ require 'mocha/raised_exception'
3
+ require 'mocha/return_values'
4
+ require 'mocha/thrown_object'
5
+ require 'mocha/yield_parameters'
6
+
7
+ module Mocha
8
+ class Invocation
9
+ attr_reader :method_name, :block
10
+
11
+ def initialize(mock, method_name, arguments = [], block = nil)
12
+ @mock = mock
13
+ @method_name = method_name
14
+ @arguments = arguments
15
+ @block = block
16
+ @yields = []
17
+ @result = nil
18
+ end
19
+
20
+ def call(yield_parameters = YieldParameters.new, return_values = ReturnValues.new)
21
+ yield_parameters.next_invocation.each do |yield_args|
22
+ @yields << ParametersMatcher.new(yield_args)
23
+ raise LocalJumpError unless @block
24
+ @block.call(*yield_args)
25
+ end
26
+ return_values.next(self)
27
+ end
28
+
29
+ def returned(value)
30
+ @result = value
31
+ end
32
+
33
+ def raised(exception)
34
+ @result = RaisedException.new(exception)
35
+ end
36
+
37
+ def threw(tag, value)
38
+ @result = ThrownObject.new(tag, value)
39
+ end
40
+
41
+ def arguments
42
+ @arguments.dup
43
+ end
44
+
45
+ def call_description
46
+ description = "#{@mock.mocha_inspect}.#{@method_name}#{argument_description}"
47
+ description << ' { ... }' unless @block.nil?
48
+ description
49
+ end
50
+
51
+ def short_call_description
52
+ "#{@method_name}(#{@arguments.join(', ')})"
53
+ end
54
+
55
+ def result_description
56
+ desc = "# => #{@result.mocha_inspect}"
57
+ desc << " after yielding #{@yields.map(&:mocha_inspect).join(', then ')}" if @yields.any?
58
+ desc
59
+ end
60
+
61
+ def full_description
62
+ "\n - #{call_description} #{result_description}"
63
+ end
64
+
65
+ private
66
+
67
+ def argument_description
68
+ signature = arguments.mocha_inspect
69
+ signature = signature.gsub(/^\[|\]$/, '')
70
+ "(#{signature})"
71
+ end
72
+ end
73
+ end
data/lib/mocha/is_a.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  class Object
2
-
3
2
  # :stopdoc:
4
3
 
5
4
  alias_method :__is_a__, :is_a?
6
5
 
7
6
  # :startdoc:
8
-
9
7
  end
data/lib/mocha/logger.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  module Mocha
2
-
3
2
  class Logger
4
-
5
3
  def initialize(io)
6
4
  @io = io
7
5
  end
@@ -9,7 +7,5 @@ module Mocha
9
7
  def warn(message)
10
8
  @io.puts "WARNING: #{message}"
11
9
  end
12
-
13
10
  end
14
-
15
11
  end
@@ -0,0 +1,5 @@
1
+ module Mocha
2
+ MACOS = /darwin/.match(RUBY_PLATFORM)
3
+ MACOS_VERSION = MACOS && /darwin(\d+)/.match(RUBY_PLATFORM)[1].to_i
4
+ MACOS_MOJAVE_VERSION = 18
5
+ end
@@ -1,7 +1,5 @@
1
1
  module Mocha
2
-
3
2
  class MethodMatcher
4
-
5
3
  attr_reader :expected_method_name
6
4
 
7
5
  def initialize(expected_method_name)
@@ -13,9 +11,7 @@ module Mocha
13
11
  end
14
12
 
15
13
  def mocha_inspect
16
- "#{@expected_method_name}"
14
+ @expected_method_name.to_s
17
15
  end
18
-
19
16
  end
20
-
21
17
  end
@@ -1,3 +1,6 @@
1
- require "mocha/integration/mini_test"
1
+ require 'mocha/ruby_version'
2
+ require 'mocha/integration/mini_test'
2
3
 
3
- Mocha::Integration::MiniTest.activate
4
+ unless Mocha::Integration::MiniTest.activate
5
+ raise "MiniTest must be loaded *before* `require 'mocha/minitest'`."
6
+ end