mocha 1.2.1 → 1.16.1

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 (265) 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/Gemfile +29 -0
  8. data/README.md +104 -106
  9. data/RELEASE.md +277 -1
  10. data/Rakefile +46 -44
  11. data/gemfiles/Gemfile.minitest.latest +1 -0
  12. data/gemfiles/Gemfile.test-unit.latest +2 -5
  13. data/init.rb +1 -3
  14. data/lib/mocha/any_instance_method.rb +9 -62
  15. data/lib/mocha/api.rb +144 -68
  16. data/lib/mocha/argument_iterator.rb +4 -8
  17. data/lib/mocha/backtrace_filter.rb +1 -5
  18. data/lib/mocha/block_matcher.rb +31 -0
  19. data/lib/mocha/cardinality.rb +60 -49
  20. data/lib/mocha/central.rb +21 -12
  21. data/lib/mocha/change_state_side_effect.rb +0 -4
  22. data/lib/mocha/class_methods.rb +19 -21
  23. data/lib/mocha/configuration.rb +372 -18
  24. data/lib/mocha/debug.rb +3 -2
  25. data/lib/mocha/deprecation.rb +8 -11
  26. data/lib/mocha/detection/mini_test.rb +0 -2
  27. data/lib/mocha/detection/test_unit.rb +3 -5
  28. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  29. data/lib/mocha/exception_raiser.rb +4 -6
  30. data/lib/mocha/expectation.rb +125 -89
  31. data/lib/mocha/expectation_error.rb +1 -1
  32. data/lib/mocha/expectation_error_factory.rb +0 -1
  33. data/lib/mocha/expectation_list.rb +7 -11
  34. data/lib/mocha/hooks.rb +1 -3
  35. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  36. data/lib/mocha/inspect.rb +30 -38
  37. data/lib/mocha/instance_method.rb +11 -8
  38. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  39. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  40. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  41. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  48. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  49. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  50. data/lib/mocha/integration/mini_test.rb +7 -0
  51. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  52. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  53. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  55. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  56. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  57. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  58. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  59. data/lib/mocha/integration/test_unit.rb +7 -2
  60. data/lib/mocha/integration.rb +2 -5
  61. data/lib/mocha/invocation.rb +86 -0
  62. data/lib/mocha/is_a.rb +0 -2
  63. data/lib/mocha/logger.rb +0 -4
  64. data/lib/mocha/macos_version.rb +5 -0
  65. data/lib/mocha/method_matcher.rb +1 -5
  66. data/lib/mocha/minitest.rb +9 -0
  67. data/lib/mocha/mock.rb +102 -58
  68. data/lib/mocha/mockery.rb +70 -99
  69. data/lib/mocha/names.rb +2 -12
  70. data/lib/mocha/not_initialized_error.rb +7 -0
  71. data/lib/mocha/object_methods.rb +25 -31
  72. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  74. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  75. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  76. data/lib/mocha/parameter_matchers/base.rb +6 -12
  77. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  78. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  79. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  80. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  81. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  82. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  83. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  84. data/lib/mocha/parameter_matchers/includes.rb +6 -7
  85. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  86. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  87. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  88. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  89. data/lib/mocha/parameter_matchers/not.rb +2 -7
  90. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  91. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  92. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  93. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  94. data/lib/mocha/parameter_matchers.rb +3 -4
  95. data/lib/mocha/parameters_matcher.rb +6 -9
  96. data/lib/mocha/raised_exception.rb +11 -0
  97. data/lib/mocha/receivers.rb +10 -14
  98. data/lib/mocha/return_values.rb +4 -8
  99. data/lib/mocha/ruby_version.rb +8 -1
  100. data/lib/mocha/sequence.rb +4 -9
  101. data/lib/mocha/setup.rb +5 -0
  102. data/lib/mocha/single_return_value.rb +2 -5
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +124 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +8 -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/mocha.gemspec +14 -65
  112. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  113. data/yard-templates/default/layout/html/setup.rb +2 -3
  114. metadata +25 -247
  115. data/bin/build-matrix +0 -70
  116. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  117. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  120. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  125. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  128. data/lib/mocha/class_method.rb +0 -119
  129. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +0 -58
  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_272_test.rb +0 -52
  150. data/test/acceptance/issue_65_test.rb +0 -63
  151. data/test/acceptance/issue_70_test.rb +0 -55
  152. data/test/acceptance/mocha_example_test.rb +0 -98
  153. data/test/acceptance/mocha_test_result_test.rb +0 -84
  154. data/test/acceptance/mock_test.rb +0 -100
  155. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  156. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  157. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  158. data/test/acceptance/optional_parameters_test.rb +0 -70
  159. data/test/acceptance/parameter_matcher_test.rb +0 -337
  160. data/test/acceptance/partial_mocks_test.rb +0 -47
  161. data/test/acceptance/prepend_test.rb +0 -89
  162. data/test/acceptance/raise_exception_test.rb +0 -39
  163. data/test/acceptance/return_value_test.rb +0 -52
  164. data/test/acceptance/sequence_test.rb +0 -192
  165. data/test/acceptance/states_test.rb +0 -70
  166. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  167. data/test/acceptance/stub_any_instance_method_test.rb +0 -280
  168. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  169. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  170. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  171. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  172. data/test/acceptance/stub_everything_test.rb +0 -56
  173. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  174. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  176. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -78
  178. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  179. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  180. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  181. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -39
  182. data/test/acceptance/stub_module_method_test.rb +0 -163
  183. data/test/acceptance/stub_test.rb +0 -52
  184. data/test/acceptance/stubba_example_test.rb +0 -102
  185. data/test/acceptance/stubba_test_result_test.rb +0 -66
  186. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  187. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  188. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  189. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  190. data/test/acceptance/stubbing_nil_test.rb +0 -61
  191. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -143
  192. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  193. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  194. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  195. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  196. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  197. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  198. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  199. data/test/acceptance/throw_test.rb +0 -45
  200. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  201. data/test/acceptance/unstubbing_test.rb +0 -168
  202. data/test/assertions.rb +0 -8
  203. data/test/deprecation_disabler.rb +0 -15
  204. data/test/execution_point.rb +0 -36
  205. data/test/integration/mini_test_test.rb +0 -8
  206. data/test/integration/shared_tests.rb +0 -174
  207. data/test/integration/test_unit_test.rb +0 -8
  208. data/test/method_definer.rb +0 -24
  209. data/test/mini_test_result.rb +0 -90
  210. data/test/minitest_result.rb +0 -49
  211. data/test/simple_counter.rb +0 -13
  212. data/test/test_helper.rb +0 -50
  213. data/test/test_runner.rb +0 -58
  214. data/test/test_unit_result.rb +0 -20
  215. data/test/unit/any_instance_method_test.rb +0 -134
  216. data/test/unit/array_inspect_test.rb +0 -16
  217. data/test/unit/backtrace_filter_test.rb +0 -19
  218. data/test/unit/cardinality_test.rb +0 -56
  219. data/test/unit/central_test.rb +0 -100
  220. data/test/unit/change_state_side_effect_test.rb +0 -41
  221. data/test/unit/class_method_test.rb +0 -225
  222. data/test/unit/class_methods_test.rb +0 -40
  223. data/test/unit/configuration_test.rb +0 -38
  224. data/test/unit/date_time_inspect_test.rb +0 -21
  225. data/test/unit/exception_raiser_test.rb +0 -42
  226. data/test/unit/expectation_list_test.rb +0 -82
  227. data/test/unit/expectation_test.rb +0 -497
  228. data/test/unit/hash_inspect_test.rb +0 -16
  229. data/test/unit/hooks_test.rb +0 -29
  230. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  231. data/test/unit/method_matcher_test.rb +0 -28
  232. data/test/unit/mock_test.rb +0 -342
  233. data/test/unit/mockery_test.rb +0 -151
  234. data/test/unit/module_methods_test.rb +0 -19
  235. data/test/unit/multiple_yields_test.rb +0 -18
  236. data/test/unit/no_yields_test.rb +0 -18
  237. data/test/unit/object_inspect_test.rb +0 -39
  238. data/test/unit/object_methods_test.rb +0 -46
  239. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  240. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  241. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  242. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  243. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  244. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  245. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  246. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  247. data/test/unit/parameter_matchers/includes_test.rb +0 -102
  248. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  250. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  251. data/test/unit/parameter_matchers/not_test.rb +0 -26
  252. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  253. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  254. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  255. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  256. data/test/unit/parameters_matcher_test.rb +0 -121
  257. data/test/unit/receivers_test.rb +0 -66
  258. data/test/unit/return_values_test.rb +0 -63
  259. data/test/unit/sequence_test.rb +0 -104
  260. data/test/unit/single_return_value_test.rb +0 -14
  261. data/test/unit/single_yield_test.rb +0 -18
  262. data/test/unit/state_machine_test.rb +0 -98
  263. data/test/unit/string_inspect_test.rb +0 -11
  264. data/test/unit/thrower_test.rb +0 -20
  265. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,163 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingNonPublicClassMethodTest < 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_private_class_method
17
- Mocha::Configuration.allow(:stubbing_non_public_method)
18
- klass = Class.new do
19
- class << self
20
- def private_method; end
21
- private :private_method
22
- end
23
- end
24
- test_result = run_as_test do
25
- klass.stubs(:private_method)
26
- end
27
- assert_passed(test_result)
28
- assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.private_method")
29
- end
30
-
31
- def test_should_allow_stubbing_protected_class_method
32
- Mocha::Configuration.allow(:stubbing_non_public_method)
33
- klass = Class.new do
34
- class << self
35
- def protected_method; end
36
- protected :protected_method
37
- end
38
- end
39
- test_result = run_as_test do
40
- klass.stubs(:protected_method)
41
- end
42
- assert_passed(test_result)
43
- assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.protected_method")
44
- end
45
-
46
- def test_should_warn_when_stubbing_private_class_method
47
- Mocha::Configuration.warn_when(:stubbing_non_public_method)
48
- klass = Class.new do
49
- class << self
50
- def private_method; end
51
- private :private_method
52
- end
53
- end
54
- test_result = run_as_test do
55
- klass.stubs(:private_method)
56
- end
57
- assert_passed(test_result)
58
- assert @logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.private_method")
59
- end
60
-
61
- def test_should_warn_when_stubbing_protected_class_method
62
- Mocha::Configuration.warn_when(:stubbing_non_public_method)
63
- klass = Class.new do
64
- class << self
65
- def protected_method; end
66
- protected :protected_method
67
- end
68
- end
69
- test_result = run_as_test do
70
- klass.stubs(:protected_method)
71
- end
72
- assert_passed(test_result)
73
- assert @logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.protected_method")
74
- end
75
-
76
- def test_should_prevent_stubbing_private_class_method
77
- Mocha::Configuration.prevent(:stubbing_non_public_method)
78
- klass = Class.new do
79
- class << self
80
- def private_method; end
81
- private :private_method
82
- end
83
- end
84
- test_result = run_as_test do
85
- klass.stubs(:private_method)
86
- end
87
- assert_failed(test_result)
88
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.mocha_inspect}.private_method")
89
- end
90
-
91
- def test_should_prevent_stubbing_protected_class_method
92
- Mocha::Configuration.prevent(:stubbing_non_public_method)
93
- klass = Class.new do
94
- class << self
95
- def protected_method; end
96
- protected :protected_method
97
- end
98
- end
99
- test_result = run_as_test do
100
- klass.stubs(:protected_method)
101
- end
102
- assert_failed(test_result)
103
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.mocha_inspect}.protected_method")
104
- end
105
-
106
- def test_should_default_to_allow_stubbing_private_class_method
107
- klass = Class.new do
108
- class << self
109
- def private_method; end
110
- private :private_method
111
- end
112
- end
113
- test_result = run_as_test do
114
- klass.stubs(:private_method)
115
- end
116
- assert_passed(test_result)
117
- assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.private_method")
118
- end
119
-
120
- def test_should_default_to_allow_stubbing_protected_class_method
121
- klass = Class.new do
122
- class << self
123
- def protected_method; end
124
- protected :protected_method
125
- end
126
- end
127
- test_result = run_as_test do
128
- klass.stubs(:protected_method)
129
- end
130
- assert_passed(test_result)
131
- assert !@logger.warnings.include?("stubbing non-public method: #{klass.mocha_inspect}.protected_method")
132
- end
133
-
134
- def test_should_allow_stubbing_public_class_method
135
- Mocha::Configuration.prevent(:stubbing_non_public_method)
136
- klass = Class.new do
137
- class << self
138
- def public_method; end
139
- public :public_method
140
- end
141
- end
142
- test_result = run_as_test do
143
- klass.stubs(:public_method)
144
- end
145
- assert_passed(test_result)
146
- end
147
-
148
- def test_should_allow_stubbing_method_to_which_class_responds
149
- Mocha::Configuration.prevent(:stubbing_non_public_method)
150
- klass = Class.new do
151
- class << self
152
- def respond_to?(method, include_private_methods = false)
153
- (method == :method_to_which_class_responds)
154
- end
155
- end
156
- end
157
- test_result = run_as_test do
158
- klass.stubs(:method_to_which_class_responds)
159
- end
160
- assert_passed(test_result)
161
- end
162
-
163
- end
@@ -1,143 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingNonPublicInstanceMethodTest < 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_private_instance_method
17
- Mocha::Configuration.allow(:stubbing_non_public_method)
18
- instance = Class.new do
19
- def private_method; end
20
- private :private_method
21
- end.new
22
- test_result = run_as_test do
23
- instance.stubs(:private_method)
24
- end
25
- assert_passed(test_result)
26
- assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.private_method")
27
- end
28
-
29
- def test_should_allow_stubbing_protected_instance_method
30
- Mocha::Configuration.allow(:stubbing_non_public_method)
31
- instance = Class.new do
32
- def protected_method; end
33
- protected :protected_method
34
- end.new
35
- test_result = run_as_test do
36
- instance.stubs(:protected_method)
37
- end
38
- assert_passed(test_result)
39
- assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.protected_method")
40
- end
41
-
42
- def test_should_warn_when_stubbing_private_instance_method
43
- Mocha::Configuration.warn_when(:stubbing_non_public_method)
44
- instance = Class.new do
45
- def private_method; end
46
- private :private_method
47
- end.new
48
- test_result = run_as_test do
49
- instance.stubs(:private_method)
50
- end
51
- assert_passed(test_result)
52
- assert @logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.private_method")
53
- end
54
-
55
- def test_should_warn_when_stubbing_protected_instance_method
56
- Mocha::Configuration.warn_when(:stubbing_non_public_method)
57
- instance = Class.new do
58
- def protected_method; end
59
- protected :protected_method
60
- end.new
61
- test_result = run_as_test do
62
- instance.stubs(:protected_method)
63
- end
64
- assert_passed(test_result)
65
- assert @logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.protected_method")
66
- end
67
-
68
- def test_should_prevent_stubbing_private_instance_method
69
- Mocha::Configuration.prevent(:stubbing_non_public_method)
70
- instance = Class.new do
71
- def private_method; end
72
- private :private_method
73
- end.new
74
- test_result = run_as_test do
75
- instance.stubs(:private_method)
76
- end
77
- assert_failed(test_result)
78
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance.mocha_inspect}.private_method")
79
- end
80
-
81
- def test_should_prevent_stubbing_protected_instance_method
82
- Mocha::Configuration.prevent(:stubbing_non_public_method)
83
- instance = Class.new do
84
- def protected_method; end
85
- protected :protected_method
86
- end.new
87
- test_result = run_as_test do
88
- instance.stubs(:protected_method)
89
- end
90
- assert_failed(test_result)
91
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance.mocha_inspect}.protected_method")
92
- end
93
-
94
- def test_should_default_to_allow_stubbing_private_instance_method
95
- instance = Class.new do
96
- def private_method; end
97
- private :private_method
98
- end.new
99
- test_result = run_as_test do
100
- instance.stubs(:private_method)
101
- end
102
- assert_passed(test_result)
103
- assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.private_method")
104
- end
105
-
106
- def test_should_default_to_allow_stubbing_protected_instance_method
107
- instance = Class.new do
108
- def protected_method; end
109
- protected :protected_method
110
- end.new
111
- test_result = run_as_test do
112
- instance.stubs(:protected_method)
113
- end
114
- assert_passed(test_result)
115
- assert !@logger.warnings.include?("stubbing non-public method: #{instance.mocha_inspect}.protected_method")
116
- end
117
-
118
- def test_should_allow_stubbing_public_instance_method
119
- Mocha::Configuration.prevent(:stubbing_non_public_method)
120
- instance = Class.new do
121
- def public_method; end
122
- public :public_method
123
- end.new
124
- test_result = run_as_test do
125
- instance.stubs(:public_method)
126
- end
127
- assert_passed(test_result)
128
- end
129
-
130
- def test_should_allow_stubbing_method_to_which_instance_responds
131
- Mocha::Configuration.prevent(:stubbing_non_public_method)
132
- instance = Class.new do
133
- def respond_to?(method, include_private_methods = false)
134
- (method == :method_to_which_instance_responds)
135
- end
136
- end.new
137
- test_result = run_as_test do
138
- instance.stubs(:method_to_which_instance_responds)
139
- end
140
- assert_passed(test_result)
141
- end
142
-
143
- end
@@ -1,64 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingOnNonMockObjectTest < 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_on_non_mock_object
17
- Mocha::Configuration.allow(:stubbing_method_on_non_mock_object)
18
- non_mock_object = Class.new { def existing_method; end }
19
- test_result = run_as_test do
20
- non_mock_object.stubs(:existing_method)
21
- end
22
- assert_passed(test_result)
23
- assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method")
24
- end
25
-
26
- def test_should_warn_on_stubbing_method_on_non_mock_object
27
- Mocha::Configuration.warn_when(:stubbing_method_on_non_mock_object)
28
- non_mock_object = Class.new { def existing_method; end }
29
- test_result = run_as_test do
30
- non_mock_object.stubs(:existing_method)
31
- end
32
- assert_passed(test_result)
33
- assert @logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method")
34
- end
35
-
36
- def test_should_prevent_stubbing_method_on_non_mock_object
37
- Mocha::Configuration.prevent(:stubbing_method_on_non_mock_object)
38
- non_mock_object = Class.new { def existing_method; end }
39
- test_result = run_as_test do
40
- non_mock_object.stubs(:existing_method)
41
- end
42
- assert_failed(test_result)
43
- assert test_result.error_messages.include?("Mocha::StubbingError: stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method")
44
- end
45
-
46
- def test_should_default_to_allow_stubbing_method_on_non_mock_object
47
- non_mock_object = Class.new { def existing_method; end }
48
- test_result = run_as_test do
49
- non_mock_object.stubs(:existing_method)
50
- end
51
- assert_passed(test_result)
52
- assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object.mocha_inspect}.existing_method")
53
- end
54
-
55
- def test_should_allow_stubbing_method_on_mock_object
56
- Mocha::Configuration.prevent(:stubbing_method_on_non_mock_object)
57
- test_result = run_as_test do
58
- mock = mock('mock')
59
- mock.stubs(:any_method)
60
- end
61
- assert_passed(test_result)
62
- end
63
-
64
- end
@@ -1,35 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubbingSameClassMethodOnParentAndChildClassTest < 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_same_method_on_parent_and_child_classes
17
- parent_class = Class.new do
18
- def self.foo
19
- "Parent.foo"
20
- end
21
- end
22
- child_class = Class.new(parent_class)
23
- test_result = run_as_tests(
24
- :test_1 => lambda {
25
- parent_class.stubs(:foo).returns("stubbed Parent.foo")
26
- child_class.stubs(:foo).returns("stubbed Child.foo")
27
- },
28
- :test_2 => lambda {
29
- parent_class.foo
30
- child_class.foo
31
- }
32
- )
33
- assert_passed(test_result)
34
- end
35
- end
@@ -1,45 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ThrowTest < 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_throw_tag
17
- test_result = run_as_test do
18
- foo = stub('foo')
19
- foo.stubs(:bar).throws(:tag)
20
- assert_throws(:tag) { foo.bar }
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_throw_with_return_value
26
- test_result = run_as_test do
27
- foo = stub('foo')
28
- foo.stubs(:bar).throws(:tag, 'return-value')
29
- return_value = catch(:tag) { foo.bar }
30
- assert_equal 'return-value', return_value
31
- end
32
- assert_passed(test_result)
33
- end
34
-
35
- def test_should_throw_two_different_tags
36
- test_result = run_as_test do
37
- foo = stub('foo')
38
- foo.stubs(:bar).throws(:tag_one).then.throws(:tag_two)
39
- assert_throws(:tag_one) { foo.bar }
40
- assert_throws(:tag_two) { foo.bar }
41
- end
42
- assert_passed(test_result)
43
- end
44
-
45
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class UnexpectedInvocationTest < 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_avoid_recursion_when_unexpected_invocation_exception_message_depends_on_uninspectable_object
17
- test_result = run_as_test do
18
- instance = Class.new.new
19
- instance.expects(:inspect).never
20
- instance.inspect(1, 2, 'foo')
21
- end
22
- assert_failed(test_result)
23
- assert_equal "unexpected invocation: inspect(1, 2, foo)", test_result.failure_message_lines[0]
24
- end
25
- end
@@ -1,168 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class UnstubbingTest < 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_unstubbing_an_instance_method_should_restore_original_behaviour
17
- klass = Class.new do
18
- def my_instance_method; :original_return_value; end
19
- end
20
- test_result = run_as_test do
21
- object = klass.new
22
- object.stubs(:my_instance_method).returns(:new_return_value)
23
- object.unstub(:my_instance_method)
24
- assert_equal :original_return_value, object.my_instance_method
25
- end
26
- assert_passed(test_result)
27
- end
28
-
29
- def test_unstubbing_a_class_method_should_restore_original_behaviour
30
- klass = Class.new do
31
- def self.my_class_method; :original_return_value; end
32
- end
33
- test_result = run_as_test do
34
- klass.stubs(:my_class_method).returns(:new_return_value)
35
- klass.unstub(:my_class_method)
36
- assert_equal :original_return_value, klass.my_class_method
37
- end
38
- assert_passed(test_result)
39
- end
40
-
41
- def test_unstubbing_a_module_method_should_restore_original_behaviour
42
- mod = Module.new do
43
- def self.my_module_method; :original_return_value; end
44
- end
45
- test_result = run_as_test do
46
- mod.stubs(:my_module_method).returns(:new_return_value)
47
- mod.unstub(:my_module_method)
48
- assert_equal :original_return_value, mod.my_module_method
49
- end
50
- assert_passed(test_result)
51
- end
52
-
53
- def test_unstubbing_a_module_method_defined_like_fileutils_in_ruby_2_0_should_restore_original_behaviour
54
- mod = Module.new do
55
- def my_module_method; :original_return_value; end
56
- private :my_module_method
57
- extend self
58
- class << self
59
- public :my_module_method
60
- end
61
- end
62
- test_result = run_as_test do
63
- mod.stubs(:my_module_method).returns(:new_return_value)
64
- mod.unstub(:my_module_method)
65
- assert_equal :original_return_value, mod.my_module_method
66
- end
67
- assert_passed(test_result)
68
- end
69
-
70
- def test_unstubbing_an_any_instance_method_should_restore_original_behaviour
71
- klass = Class.new do
72
- def my_instance_method; :original_return_value; end
73
- end
74
- test_result = run_as_test do
75
- object = klass.new
76
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
77
- klass.any_instance.unstub(:my_instance_method)
78
- assert_equal :original_return_value, object.my_instance_method
79
- end
80
- assert_passed(test_result)
81
- end
82
-
83
- def test_unstubbing_multiple_methods_should_restore_original_behaviour
84
- klass = Class.new do
85
- def my_first_instance_method; :original_return_value; end
86
- def my_second_instance_method; :original_return_value; end
87
- end
88
- test_result = run_as_test do
89
- object = klass.new
90
- object.stubs(:my_first_instance_method).returns(:new_return_value)
91
- object.stubs(:my_second_instance_method).returns(:new_return_value)
92
- object.unstub(:my_first_instance_method, :my_second_instance_method)
93
- assert_equal :original_return_value, object.my_first_instance_method
94
- assert_equal :original_return_value, object.my_second_instance_method
95
- end
96
- assert_passed(test_result)
97
- end
98
-
99
- def test_unstubbing_a_method_multiple_times_should_restore_original_behaviour
100
- klass = Class.new do
101
- def my_instance_method; :original_return_value; end
102
- end
103
- test_result = run_as_test do
104
- object = klass.new
105
- object.stubs(:my_instance_method).returns(:new_return_value)
106
- object.unstub(:my_instance_method)
107
- object.unstub(:my_instance_method)
108
- assert_equal :original_return_value, object.my_instance_method
109
- end
110
- assert_passed(test_result)
111
- end
112
-
113
- def test_unstubbing_a_non_stubbed_method_should_do_nothing
114
- klass = Class.new do
115
- def my_instance_method; :original_return_value; end
116
- end
117
- test_result = run_as_test do
118
- object = klass.new
119
- object.unstub(:my_instance_method)
120
- assert_equal :original_return_value, object.my_instance_method
121
- end
122
- assert_passed(test_result)
123
- end
124
-
125
- def test_unstubbing_a_method_which_was_stubbed_multiple_times_should_restore_orginal_behaviour
126
- klass = Class.new do
127
- def my_instance_method; :original_return_value; end
128
- end
129
- test_result = run_as_test do
130
- object = klass.new
131
- object.stubs(:my_instance_method).with(:first).returns(:first_new_return_value)
132
- object.stubs(:my_instance_method).with(:second).returns(:second_new_return_value)
133
- object.unstub(:my_instance_method)
134
- assert_equal :original_return_value, object.my_instance_method
135
- end
136
- assert_passed(test_result)
137
- end
138
-
139
- def test_unstubbing_a_method_should_not_unstub_other_stubbed_methods
140
- klass = Class.new do
141
- def my_first_instance_method; :first_return_value; end
142
- def my_second_instance_method; :second_return_value; end
143
- end
144
-
145
- test_result = run_as_test do
146
- object = klass.new
147
- object.stubs(:my_first_instance_method).returns(:first_new_return_value)
148
- object.stubs(:my_second_instance_method).returns(:second_new_return_value)
149
- object.unstub(:my_first_instance_method)
150
- assert_equal :first_return_value, object.my_first_instance_method
151
- assert_equal :second_new_return_value, object.my_second_instance_method
152
- end
153
- assert_passed(test_result)
154
- end
155
-
156
- def test_unstubbing_a_method_should_remove_all_expectations_for_that_method
157
- klass = Class.new do
158
- def my_instance_method; :original_return_value; end
159
- end
160
- test_result = run_as_test do
161
- object = klass.new
162
- object.expects(:my_instance_method).with(:first)
163
- object.expects(:my_instance_method).with(:second)
164
- object.unstub(:my_instance_method)
165
- end
166
- assert_passed(test_result)
167
- end
168
- end
data/test/assertions.rb DELETED
@@ -1,8 +0,0 @@
1
- require 'mocha/ruby_version'
2
-
3
- module Assertions
4
- def assert_method_visibility(object, method_name, visiblity)
5
- method_key = Mocha::PRE_RUBY_V19 ? method_name.to_s : method_name.to_sym
6
- assert object.send("#{visiblity}_methods").include?(method_key), "#{method_name} is not #{visiblity}"
7
- end
8
- end
@@ -1,15 +0,0 @@
1
- require 'mocha/deprecation'
2
-
3
- module DeprecationDisabler
4
-
5
- def disable_deprecations
6
- original_mode = Mocha::Deprecation.mode
7
- Mocha::Deprecation.mode = :disabled
8
- begin
9
- yield
10
- ensure
11
- Mocha::Deprecation.mode = original_mode
12
- end
13
- end
14
-
15
- end