mocha 1.2.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +65 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/Gemfile +29 -0
  8. data/README.md +110 -106
  9. data/RELEASE.md +306 -1
  10. data/Rakefile +52 -45
  11. data/gemfiles/Gemfile.minitest.latest +1 -0
  12. data/gemfiles/Gemfile.test-unit.latest +2 -5
  13. data/lib/mocha/any_instance_method.rb +9 -62
  14. data/lib/mocha/api.rb +84 -68
  15. data/lib/mocha/argument_iterator.rb +4 -8
  16. data/lib/mocha/backtrace_filter.rb +1 -5
  17. data/lib/mocha/block_matcher.rb +31 -0
  18. data/lib/mocha/cardinality.rb +60 -49
  19. data/lib/mocha/central.rb +21 -12
  20. data/lib/mocha/change_state_side_effect.rb +0 -4
  21. data/lib/mocha/class_methods.rb +19 -21
  22. data/lib/mocha/configuration.rb +312 -47
  23. data/lib/mocha/debug.rb +3 -2
  24. data/lib/mocha/deprecation.rb +8 -11
  25. data/lib/mocha/detection/mini_test.rb +0 -2
  26. data/lib/mocha/detection/test_unit.rb +3 -5
  27. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  28. data/lib/mocha/exception_raiser.rb +4 -6
  29. data/lib/mocha/expectation.rb +186 -95
  30. data/lib/mocha/expectation_error.rb +1 -1
  31. data/lib/mocha/expectation_error_factory.rb +0 -1
  32. data/lib/mocha/expectation_list.rb +7 -11
  33. data/lib/mocha/hooks.rb +1 -3
  34. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  35. data/lib/mocha/inspect.rb +30 -38
  36. data/lib/mocha/instance_method.rb +11 -8
  37. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  38. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  39. data/lib/mocha/integration/mini_test.rb +10 -31
  40. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  41. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  42. data/lib/mocha/integration/test_unit.rb +10 -26
  43. data/lib/mocha/invocation.rb +73 -0
  44. data/lib/mocha/is_a.rb +0 -2
  45. data/lib/mocha/logger.rb +0 -4
  46. data/lib/mocha/macos_version.rb +5 -0
  47. data/lib/mocha/method_matcher.rb +1 -5
  48. data/lib/mocha/minitest.rb +6 -0
  49. data/lib/mocha/mock.rb +99 -51
  50. data/lib/mocha/mockery.rb +70 -99
  51. data/lib/mocha/names.rb +2 -12
  52. data/lib/mocha/not_initialized_error.rb +7 -0
  53. data/lib/mocha/object_methods.rb +25 -31
  54. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  55. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  56. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  57. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  58. data/lib/mocha/parameter_matchers/base.rb +7 -13
  59. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  60. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +14 -15
  61. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  62. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  63. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  64. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  65. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  66. data/lib/mocha/parameter_matchers/includes.rb +6 -7
  67. data/lib/mocha/parameter_matchers/instance_methods.rb +27 -0
  68. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  69. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  70. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  71. data/lib/mocha/parameter_matchers/not.rb +2 -7
  72. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  73. data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +64 -0
  74. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  75. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  76. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  77. data/lib/mocha/parameter_matchers.rb +3 -4
  78. data/lib/mocha/parameters_matcher.rb +8 -11
  79. data/lib/mocha/raised_exception.rb +11 -0
  80. data/lib/mocha/receivers.rb +10 -14
  81. data/lib/mocha/return_values.rb +4 -8
  82. data/lib/mocha/ruby_version.rb +1 -2
  83. data/lib/mocha/sequence.rb +4 -9
  84. data/lib/mocha/single_return_value.rb +2 -5
  85. data/lib/mocha/state_machine.rb +33 -46
  86. data/lib/mocha/stubbed_method.rb +88 -0
  87. data/lib/mocha/stubbing_error.rb +2 -13
  88. data/lib/mocha/test_unit.rb +5 -2
  89. data/lib/mocha/thrower.rb +4 -6
  90. data/lib/mocha/thrown_object.rb +12 -0
  91. data/lib/mocha/version.rb +1 -1
  92. data/lib/mocha/yield_parameters.rb +7 -17
  93. data/mocha.gemspec +14 -65
  94. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  95. data/yard-templates/default/layout/html/setup.rb +2 -3
  96. metadata +26 -266
  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 -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/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 -51
  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 -337
  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 -163
  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 -66
  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 -64
  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 -15
  205. data/test/execution_point.rb +0 -36
  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 -134
  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 -225
  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 -342
  234. data/test/unit/mockery_test.rb +0 -151
  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/has_entries_test.rb +0 -51
  245. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  246. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  247. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  248. data/test/unit/parameter_matchers/includes_test.rb +0 -102
  249. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  250. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  251. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  252. data/test/unit/parameter_matchers/not_test.rb +0 -26
  253. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  254. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  255. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  256. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  257. data/test/unit/parameters_matcher_test.rb +0 -121
  258. data/test/unit/receivers_test.rb +0 -66
  259. data/test/unit/return_values_test.rb +0 -63
  260. data/test/unit/sequence_test.rb +0 -104
  261. data/test/unit/single_return_value_test.rb +0 -14
  262. data/test/unit/single_yield_test.rb +0 -18
  263. data/test/unit/state_machine_test.rb +0 -98
  264. data/test/unit/string_inspect_test.rb +0 -11
  265. data/test/unit/thrower_test.rb +0 -20
  266. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,66 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
- require 'execution_point'
4
-
5
- class StubbaTestResultTest < Mocha::TestCase
6
-
7
- include AcceptanceTest
8
-
9
- def setup
10
- setup_acceptance_test
11
- end
12
-
13
- def teardown
14
- teardown_acceptance_test
15
- end
16
-
17
- def test_should_include_expectation_verification_in_assertion_count
18
- test_result = run_as_test do
19
- object = Class.new { def message; end }.new
20
- object.expects(:message)
21
- object.message
22
- end
23
- assert_equal 1, test_result.assertion_count
24
- end
25
-
26
- def test_should_include_assertions_in_assertion_count
27
- test_result = run_as_test do
28
- assert true
29
- end
30
- assert_equal 1, test_result.assertion_count
31
- end
32
-
33
- def test_should_not_include_stubbing_expectation_verification_in_assertion_count
34
- test_result = run_as_test do
35
- object = Class.new { def message; end }.new
36
- object.stubs(:message)
37
- object.message
38
- end
39
- assert_equal 0, test_result.assertion_count
40
- end
41
-
42
- def test_should_include_expectation_verification_failure_in_failure_count
43
- test_result = run_as_test do
44
- object = Class.new { def message; end }.new
45
- object.expects(:message)
46
- end
47
- assert_equal 1, test_result.failure_count
48
- end
49
-
50
- def test_should_include_assertion_failure_in_failure_count
51
- test_result = run_as_test do
52
- flunk
53
- end
54
- assert_equal 1, test_result.failure_count
55
- end
56
-
57
- def test_should_display_backtrace_indicating_line_number_where_failing_assertion_was_called
58
- execution_point = nil
59
- test_result = run_as_test do
60
- execution_point = ExecutionPoint.current; flunk
61
- end
62
- assert_equal 1, test_result.failure_count
63
- assert_equal execution_point, ExecutionPoint.new(test_result.failures[0].location)
64
- end
65
-
66
- end
@@ -1,64 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
- require 'execution_point'
4
-
5
- class StubbingErrorBacktraceTest < Mocha::TestCase
6
-
7
- include AcceptanceTest
8
-
9
- def setup
10
- setup_acceptance_test
11
- end
12
-
13
- def teardown
14
- teardown_acceptance_test
15
- end
16
-
17
- def test_should_display_backtrace_indicating_line_number_where_attempt_to_stub_non_existent_method_was_made
18
- execution_point = nil
19
- object = Object.new
20
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
21
- test_result = run_as_test do
22
- execution_point = ExecutionPoint.current; object.stubs(:non_existent_method)
23
- end
24
- assert_equal 1, test_result.error_count
25
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
26
- end
27
-
28
- def test_should_display_backtrace_indicating_line_number_where_attempt_to_stub_non_public_method_was_made
29
- execution_point = nil
30
- object = Class.new do
31
- def non_public_method; end
32
- private :non_public_method
33
- end.new
34
- Mocha::Configuration.prevent(:stubbing_non_public_method)
35
- test_result = run_as_test do
36
- execution_point = ExecutionPoint.current; object.stubs(:non_public_method)
37
- end
38
- assert_equal 1, test_result.error_count
39
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
40
- end
41
-
42
- def test_should_display_backtrace_indicating_line_number_where_attempt_to_stub_method_on_non_mock_object_was_made
43
- execution_point = nil
44
- object = Object.new
45
- Mocha::Configuration.prevent(:stubbing_method_on_non_mock_object)
46
- test_result = run_as_test do
47
- execution_point = ExecutionPoint.current; object.stubs(:any_method)
48
- end
49
- assert_equal 1, test_result.error_count
50
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
51
- end
52
-
53
- def test_should_display_backtrace_indicating_line_number_where_method_was_unnecessarily_stubbed
54
- execution_point = nil
55
- object = Object.new
56
- Mocha::Configuration.prevent(:stubbing_method_unnecessarily)
57
- test_result = run_as_test do
58
- execution_point = ExecutionPoint.current; object.stubs(:unused_method)
59
- end
60
- assert_equal 1, test_result.error_count
61
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
62
- end
63
-
64
- end
@@ -1,88 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
- require 'execution_point'
4
-
5
- class StubbingFrozenObjectTest < Mocha::TestCase
6
-
7
- include AcceptanceTest
8
-
9
- def setup
10
- setup_acceptance_test
11
- end
12
-
13
- def teardown
14
- teardown_acceptance_test
15
- end
16
-
17
- def test_should_fail_fast_if_attempting_to_stub_method_on_frozen_object
18
- object = Object.new
19
- object.freeze
20
- execution_point = nil
21
- test_result = run_as_test do
22
- execution_point = ExecutionPoint.current; object.stubs(:stubbed_method)
23
- end
24
- assert_failed(test_result)
25
- assert_equal 1, test_result.error_count
26
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
27
- end
28
-
29
- def test_should_fail_fast_if_attempting_to_expect_method_on_frozen_object
30
- object = Object.new
31
- object.freeze
32
- execution_point = nil
33
- test_result = run_as_test do
34
- execution_point = ExecutionPoint.current; object.expects(:stubbed_method)
35
- end
36
- assert_failed(test_result)
37
- assert_equal 1, test_result.error_count
38
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
39
- end
40
-
41
- def test_should_fail_fast_if_attempting_to_stub_method_on_frozen_class
42
- klass = Class.new
43
- klass.freeze
44
- execution_point = nil
45
- test_result = run_as_test do
46
- execution_point = ExecutionPoint.current; klass.stubs(:stubbed_method)
47
- end
48
- assert_failed(test_result)
49
- assert_equal 1, test_result.error_count
50
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
51
- end
52
-
53
- def test_should_fail_fast_if_attempting_to_expect_method_on_frozen_class
54
- klass = Class.new
55
- klass.freeze
56
- execution_point = nil
57
- test_result = run_as_test do
58
- execution_point = ExecutionPoint.current; klass.expects(:stubbed_method)
59
- end
60
- assert_failed(test_result)
61
- assert_equal 1, test_result.error_count
62
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
63
- end
64
-
65
- def test_should_fail_fast_if_attempting_to_stub_method_on_any_instance_of_frozen_class
66
- klass = Class.new
67
- klass.freeze
68
- execution_point = nil
69
- test_result = run_as_test do
70
- execution_point = ExecutionPoint.current; klass.any_instance.stubs(:stubbed_method)
71
- end
72
- assert_failed(test_result)
73
- assert_equal 1, test_result.error_count
74
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
75
- end
76
-
77
- def test_should_fail_fast_if_attempting_to_expect_method_on_any_instance_of_frozen_class
78
- klass = Class.new
79
- klass.freeze
80
- execution_point = nil
81
- test_result = run_as_test do
82
- execution_point = ExecutionPoint.current; klass.any_instance.expects(:stubbed_method)
83
- end
84
- assert_failed(test_result)
85
- assert_equal 1, test_result.error_count
86
- assert_equal execution_point, ExecutionPoint.new(test_result.errors[0].exception.backtrace)
87
- end
88
- end
@@ -1,48 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingMethodAcceptingBlockParameterTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_stubbing_class_method_accepting_block_parameter_should_restore_original_method
17
- klass = Class.new do
18
- def self.my_class_method(&block); block.call; end
19
- end
20
- test_result = run_as_test do
21
- klass.stubs(:my_class_method)
22
- end
23
- assert_passed(test_result)
24
- assert_equal :return_value, klass.my_class_method { :return_value }
25
- end
26
-
27
- def test_stubbing_instance_method_accepting_block_parameter_should_restore_original_method
28
- instance = Class.new do
29
- def my_instance_method(&block); block.call; end
30
- end.new
31
- test_result = run_as_test do
32
- instance.stubs(:my_instance_method)
33
- end
34
- assert_passed(test_result)
35
- assert_equal :return_value, instance.my_instance_method { :return_value }
36
- end
37
-
38
- def test_stubbing_any_instance_method_accepting_block_parameter_should_restore_original_method
39
- klass = Class.new do
40
- def my_instance_method(&block); block.call; end
41
- end
42
- test_result = run_as_test do
43
- klass.any_instance.stubs(:my_instance_method)
44
- end
45
- assert_passed(test_result)
46
- assert_equal :return_value, klass.new.my_instance_method { :return_value }
47
- end
48
- end
@@ -1,65 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingMethodUnnecessarilyTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_allow_stubbing_method_unnecessarily
17
- Mocha::Configuration.allow(:stubbing_method_unnecessarily)
18
- test_result = run_as_test do
19
- mock = mock('mock')
20
- mock.stubs(:public_method)
21
- end
22
- assert_passed(test_result)
23
- assert !@logger.warnings.include?('stubbing method unnecessarily: #<Mock:mock>.public_method(any_parameters)')
24
- end
25
-
26
- def test_should_warn_when_stubbing_method_unnecessarily
27
- Mocha::Configuration.warn_when(:stubbing_method_unnecessarily)
28
- test_result = run_as_test do
29
- mock = mock('mock')
30
- mock.stubs(:public_method)
31
- end
32
- assert_passed(test_result)
33
- assert @logger.warnings.include?('stubbing method unnecessarily: #<Mock:mock>.public_method(any_parameters)')
34
- end
35
-
36
- def test_should_prevent_stubbing_method_unnecessarily
37
- Mocha::Configuration.prevent(:stubbing_method_unnecessarily)
38
- test_result = run_as_test do
39
- mock = mock('mock')
40
- mock.stubs(:public_method)
41
- end
42
- assert_failed(test_result)
43
- assert test_result.error_messages.include?('Mocha::StubbingError: stubbing method unnecessarily: #<Mock:mock>.public_method(any_parameters)')
44
- end
45
-
46
- def test_should_default_to_allow_stubbing_method_unnecessarily
47
- test_result = run_as_test do
48
- mock = mock('mock')
49
- mock.stubs(:public_method)
50
- end
51
- assert_passed(test_result)
52
- assert !@logger.warnings.include?('stubbing method unnecessarily: #<Mock:mock>.public_method(any_parameters)')
53
- end
54
-
55
- def test_should_allow_stubbing_method_when_stubbed_method_is_invoked
56
- Mocha::Configuration.prevent(:stubbing_method_unnecessarily)
57
- test_result = run_as_test do
58
- mock = mock('mock')
59
- mock.stubs(:public_method)
60
- mock.public_method
61
- end
62
- assert_passed(test_result)
63
- end
64
-
65
- end
@@ -1,61 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingNilTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- if RUBY_VERSION < '2.2.0'
17
- def test_should_allow_stubbing_method_on_nil
18
- Mocha::Configuration.allow(:stubbing_method_on_nil)
19
- test_result = run_as_test do
20
- nil.stubs(:stubbed_method)
21
- end
22
- assert_passed(test_result)
23
- assert !@logger.warnings.include?("stubbing method on nil: nil.stubbed_method")
24
- end
25
-
26
- def test_should_warn_on_stubbing_method_on_nil
27
- Mocha::Configuration.warn_when(:stubbing_method_on_nil)
28
- test_result = run_as_test do
29
- nil.stubs(:stubbed_method)
30
- end
31
- assert_passed(test_result)
32
- assert @logger.warnings.include?("stubbing method on nil: nil.stubbed_method")
33
- end
34
-
35
- def test_should_prevent_stubbing_method_on_nil
36
- Mocha::Configuration.prevent(:stubbing_method_on_nil)
37
- test_result = run_as_test do
38
- nil.stubs(:stubbed_method)
39
- end
40
- assert_failed(test_result)
41
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing method on nil: nil.stubbed_method")
42
- end
43
-
44
- def test_should_default_to_prevent_stubbing_method_on_non_mock_object
45
- test_result = run_as_test do
46
- nil.stubs(:stubbed_method)
47
- end
48
- assert_failed(test_result)
49
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing method on nil: nil.stubbed_method")
50
- end
51
-
52
- def test_should_allow_stubbing_method_on_non_nil_object
53
- Mocha::Configuration.prevent(:stubbing_method_on_nil)
54
- object = Object.new
55
- test_result = run_as_test do
56
- object.stubs(:stubbed_method)
57
- end
58
- assert_passed(test_result)
59
- end
60
- end
61
- end
@@ -1,143 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingNonExistentAnyInstanceMethodTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_allow_stubbing_non_existent_any_instance_method
17
- Mocha::Configuration.allow(:stubbing_non_existent_method)
18
- klass = Class.new
19
- test_result = run_as_test do
20
- klass.any_instance.stubs(:non_existent_method)
21
- end
22
- assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method")
23
- assert_passed(test_result)
24
- end
25
-
26
- def test_should_warn_when_stubbing_non_existent_any_instance_method
27
- Mocha::Configuration.warn_when(:stubbing_non_existent_method)
28
- klass = Class.new
29
- test_result = run_as_test do
30
- klass.any_instance.stubs(:non_existent_method)
31
- end
32
- assert_passed(test_result)
33
- assert @logger.warnings.include?("stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method")
34
- end
35
-
36
- def test_should_prevent_stubbing_non_existent_any_instance_method
37
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
38
- klass = Class.new
39
- test_result = run_as_test do
40
- klass.any_instance.stubs(:non_existent_method)
41
- end
42
- assert_failed(test_result)
43
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method")
44
- end
45
-
46
- def test_should_default_to_allow_stubbing_non_existent_any_instance_method
47
- klass = Class.new
48
- test_result = run_as_test do
49
- klass.any_instance.stubs(:non_existent_method)
50
- end
51
- assert !@logger.warnings.include?("stubbing non-existent method: #{klass.any_instance.mocha_inspect}.non_existent_method")
52
- assert_passed(test_result)
53
- end
54
-
55
- def test_should_allow_stubbing_existing_public_any_instance_method
56
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
57
- klass = Class.new do
58
- def existing_public_method; end
59
- public :existing_public_method
60
- end
61
- test_result = run_as_test do
62
- klass.any_instance.stubs(:existing_public_method)
63
- end
64
- assert_passed(test_result)
65
- end
66
-
67
- def test_should_allow_stubbing_method_to_which_any_instance_responds
68
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
69
- klass = Class.new do
70
- def respond_to?(method, include_private = false)
71
- (method == :method_to_which_instance_responds)
72
- end
73
- end
74
- test_result = run_as_test do
75
- klass.any_instance.stubs(:method_to_which_instance_responds)
76
- end
77
- assert_passed(test_result)
78
- end
79
-
80
- def test_should_allow_stubbing_existing_protected_any_instance_method
81
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
82
- klass = Class.new do
83
- def existing_protected_method; end
84
- protected :existing_protected_method
85
- end
86
- test_result = run_as_test do
87
- klass.any_instance.stubs(:existing_protected_method)
88
- end
89
- assert_passed(test_result)
90
- end
91
-
92
- def test_should_allow_stubbing_existing_private_any_instance_method
93
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
94
- klass = Class.new do
95
- def existing_private_method; end
96
- private :existing_private_method
97
- end
98
- test_result = run_as_test do
99
- klass.any_instance.stubs(:existing_private_method)
100
- end
101
- assert_passed(test_result)
102
- end
103
-
104
- def test_should_allow_stubbing_existing_public_any_instance_superclass_method
105
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
106
- superklass = Class.new do
107
- def existing_public_method; end
108
- public :existing_public_method
109
- end
110
- klass = Class.new(superklass)
111
- test_result = run_as_test do
112
- klass.any_instance.stubs(:existing_public_method)
113
- end
114
- assert_passed(test_result)
115
- end
116
-
117
- def test_should_allow_stubbing_existing_protected_any_instance_superclass_method
118
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
119
- superklass = Class.new do
120
- def existing_protected_method; end
121
- protected :existing_protected_method
122
- end
123
- klass = Class.new(superklass)
124
- test_result = run_as_test do
125
- klass.any_instance.stubs(:existing_protected_method)
126
- end
127
- assert_passed(test_result)
128
- end
129
-
130
- def test_should_allow_stubbing_existing_private_any_instance_superclass_method
131
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
132
- superklass = Class.new do
133
- def existing_private_method; end
134
- private :existing_private_method
135
- end
136
- klass = Class.new(superklass)
137
- test_result = run_as_test do
138
- klass.any_instance.stubs(:existing_private_method)
139
- end
140
- assert_passed(test_result)
141
- end
142
-
143
- end
@@ -1,157 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingNonExistentClassMethodTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_allow_stubbing_non_existent_class_method
17
- Mocha::Configuration.allow(:stubbing_non_existent_method)
18
- klass = Class.new
19
- test_result = run_as_test do
20
- klass.stubs(:non_existent_method)
21
- end
22
- assert !@logger.warnings.include?("stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method")
23
- assert_passed(test_result)
24
- end
25
-
26
- def test_should_warn_when_stubbing_non_existent_class_method
27
- Mocha::Configuration.warn_when(:stubbing_non_existent_method)
28
- klass = Class.new
29
- test_result = run_as_test do
30
- klass.stubs(:non_existent_method)
31
- end
32
- assert_passed(test_result)
33
- assert @logger.warnings.include?("stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method")
34
- end
35
-
36
- def test_should_prevent_stubbing_non_existent_class_method
37
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
38
- klass = Class.new
39
- test_result = run_as_test do
40
- klass.stubs(:non_existent_method)
41
- end
42
- assert_failed(test_result)
43
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method")
44
- end
45
-
46
- def test_should_default_to_allow_stubbing_non_existent_class_method
47
- klass = Class.new
48
- test_result = run_as_test do
49
- klass.stubs(:non_existent_method)
50
- end
51
- assert !@logger.warnings.include?("stubbing non-existent method: #{klass.mocha_inspect}.non_existent_method")
52
- assert_passed(test_result)
53
- end
54
-
55
- def test_should_allow_stubbing_existing_public_class_method
56
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
57
- klass = Class.new do
58
- class << self
59
- def existing_public_method; end
60
- public :existing_public_method
61
- end
62
- end
63
- test_result = run_as_test do
64
- klass.stubs(:existing_public_method)
65
- end
66
- assert_passed(test_result)
67
- end
68
-
69
- def test_should_allow_stubbing_method_to_which_class_responds
70
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
71
- klass = Class.new do
72
- class << self
73
- def respond_to?(method, include_private = false)
74
- (method == :method_to_which_class_responds)
75
- end
76
- end
77
- end
78
- test_result = run_as_test do
79
- klass.stubs(:method_to_which_class_responds)
80
- end
81
- assert_passed(test_result)
82
- end
83
-
84
- def test_should_allow_stubbing_existing_protected_class_method
85
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
86
- klass = Class.new do
87
- class << self
88
- def existing_protected_method; end
89
- protected :existing_protected_method
90
- end
91
- end
92
- test_result = run_as_test do
93
- klass.stubs(:existing_protected_method)
94
- end
95
- assert_passed(test_result)
96
- end
97
-
98
- def test_should_allow_stubbing_existing_private_class_method
99
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
100
- klass = Class.new do
101
- class << self
102
- def existing_private_method; end
103
- private :existing_private_method
104
- end
105
- end
106
- test_result = run_as_test do
107
- klass.stubs(:existing_private_method)
108
- end
109
- assert_passed(test_result)
110
- end
111
-
112
- def test_should_allow_stubbing_existing_public_superclass_method
113
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
114
- superklass = Class.new do
115
- class << self
116
- def existing_public_method; end
117
- public :existing_public_method
118
- end
119
- end
120
- klass = Class.new(superklass)
121
- test_result = run_as_test do
122
- klass.stubs(:existing_public_method)
123
- end
124
- assert_passed(test_result)
125
- end
126
-
127
- def test_should_allow_stubbing_existing_protected_superclass_method
128
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
129
- superklass = Class.new do
130
- class << self
131
- def existing_protected_method; end
132
- protected :existing_protected_method
133
- end
134
- end
135
- klass = Class.new(superklass)
136
- test_result = run_as_test do
137
- klass.stubs(:existing_protected_method)
138
- end
139
- assert_passed(test_result)
140
- end
141
-
142
- def test_should_allow_stubbing_existing_private_superclass_method
143
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
144
- superklass = Class.new do
145
- class << self
146
- def existing_private_method; end
147
- protected :existing_private_method
148
- end
149
- end
150
- klass = Class.new(superklass)
151
- test_result = run_as_test do
152
- klass.stubs(:existing_private_method)
153
- end
154
- assert_passed(test_result)
155
- end
156
-
157
- end