newbamboo-rspec 1.1.12

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 (324) hide show
  1. data/.autotest +4 -0
  2. data/History.txt +1263 -0
  3. data/License.txt +22 -0
  4. data/Manifest.txt +327 -0
  5. data/README.txt +57 -0
  6. data/Rakefile +104 -0
  7. data/TODO.txt +18 -0
  8. data/bin/autospec +4 -0
  9. data/bin/spec +4 -0
  10. data/examples/failing/README.txt +7 -0
  11. data/examples/failing/diffing_spec.rb +36 -0
  12. data/examples/failing/failing_autogenerated_docstrings_example.rb +19 -0
  13. data/examples/failing/failure_in_after.rb +10 -0
  14. data/examples/failing/failure_in_before.rb +10 -0
  15. data/examples/failing/mocking_example.rb +40 -0
  16. data/examples/failing/mocking_with_flexmock.rb +26 -0
  17. data/examples/failing/mocking_with_mocha.rb +25 -0
  18. data/examples/failing/mocking_with_rr.rb +27 -0
  19. data/examples/failing/partial_mock_example.rb +20 -0
  20. data/examples/failing/predicate_example.rb +34 -0
  21. data/examples/failing/raising_example.rb +47 -0
  22. data/examples/failing/spec_helper.rb +3 -0
  23. data/examples/failing/syntax_error_example.rb +7 -0
  24. data/examples/failing/team_spec.rb +44 -0
  25. data/examples/failing/timeout_behaviour.rb +7 -0
  26. data/examples/passing/autogenerated_docstrings_example.rb +25 -0
  27. data/examples/passing/before_and_after_example.rb +40 -0
  28. data/examples/passing/behave_as_example.rb +45 -0
  29. data/examples/passing/custom_expectation_matchers.rb +54 -0
  30. data/examples/passing/custom_formatter.rb +12 -0
  31. data/examples/passing/dynamic_spec.rb +9 -0
  32. data/examples/passing/file_accessor.rb +19 -0
  33. data/examples/passing/file_accessor_spec.rb +38 -0
  34. data/examples/passing/greeter_spec.rb +31 -0
  35. data/examples/passing/helper_method_example.rb +14 -0
  36. data/examples/passing/io_processor.rb +8 -0
  37. data/examples/passing/io_processor_spec.rb +21 -0
  38. data/examples/passing/legacy_spec.rb +11 -0
  39. data/examples/passing/mocking_example.rb +27 -0
  40. data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  41. data/examples/passing/nested_classes_example.rb +36 -0
  42. data/examples/passing/partial_mock_example.rb +29 -0
  43. data/examples/passing/pending_example.rb +20 -0
  44. data/examples/passing/predicate_example.rb +27 -0
  45. data/examples/passing/priority.txt +1 -0
  46. data/examples/passing/shared_example_group_example.rb +81 -0
  47. data/examples/passing/shared_stack_examples.rb +36 -0
  48. data/examples/passing/simple_matcher_example.rb +31 -0
  49. data/examples/passing/spec_helper.rb +3 -0
  50. data/examples/passing/stack.rb +36 -0
  51. data/examples/passing/stack_spec.rb +64 -0
  52. data/examples/passing/stack_spec_with_nested_example_groups.rb +67 -0
  53. data/examples/passing/stubbing_example.rb +69 -0
  54. data/examples/passing/yielding_example.rb +33 -0
  55. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
  56. data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
  57. data/features/example_groups/autogenerated_docstrings.feature +45 -0
  58. data/features/example_groups/example_group_with_should_methods.feature +17 -0
  59. data/features/example_groups/nested_groups.feature +17 -0
  60. data/features/example_groups/output.feature +20 -0
  61. data/features/interop/examples_and_tests_together.feature +31 -0
  62. data/features/interop/test_but_not_test_unit.feature +14 -0
  63. data/features/interop/test_case_with_should_methods.feature +17 -0
  64. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  65. data/features/step_definitions/running_rspec.rb +54 -0
  66. data/features/support/env.rb +26 -0
  67. data/features/support/helpers/cmdline.rb +9 -0
  68. data/features/support/matchers/smart_match.rb +37 -0
  69. data/init.rb +9 -0
  70. data/lib/adapters/mock_frameworks/flexmock.rb +24 -0
  71. data/lib/adapters/mock_frameworks/mocha.rb +20 -0
  72. data/lib/adapters/mock_frameworks/rr.rb +22 -0
  73. data/lib/adapters/mock_frameworks/rspec.rb +20 -0
  74. data/lib/autotest/discover.rb +3 -0
  75. data/lib/autotest/rspec.rb +47 -0
  76. data/lib/spec/dsl/main.rb +87 -0
  77. data/lib/spec/dsl.rb +1 -0
  78. data/lib/spec/example/before_and_after_hooks.rb +99 -0
  79. data/lib/spec/example/errors.rb +30 -0
  80. data/lib/spec/example/example_group.rb +26 -0
  81. data/lib/spec/example/example_group_factory.rb +98 -0
  82. data/lib/spec/example/example_group_methods.rb +376 -0
  83. data/lib/spec/example/example_matcher.rb +44 -0
  84. data/lib/spec/example/example_methods.rb +137 -0
  85. data/lib/spec/example/module_reopening_fix.rb +21 -0
  86. data/lib/spec/example/pending.rb +18 -0
  87. data/lib/spec/example/shared_example_group.rb +59 -0
  88. data/lib/spec/example.rb +187 -0
  89. data/lib/spec/expectations/differs/default.rb +66 -0
  90. data/lib/spec/expectations/errors.rb +12 -0
  91. data/lib/spec/expectations/extensions/object.rb +63 -0
  92. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  93. data/lib/spec/expectations/extensions.rb +2 -0
  94. data/lib/spec/expectations/handler.rb +32 -0
  95. data/lib/spec/expectations.rb +60 -0
  96. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  97. data/lib/spec/interop/test/unit/testcase.rb +73 -0
  98. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  99. data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  100. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  101. data/lib/spec/interop/test.rb +12 -0
  102. data/lib/spec/matchers/be.rb +208 -0
  103. data/lib/spec/matchers/be_close.rb +21 -0
  104. data/lib/spec/matchers/change.rb +148 -0
  105. data/lib/spec/matchers/eql.rb +25 -0
  106. data/lib/spec/matchers/equal.rb +25 -0
  107. data/lib/spec/matchers/errors.rb +5 -0
  108. data/lib/spec/matchers/exist.rb +16 -0
  109. data/lib/spec/matchers/generated_descriptions.rb +48 -0
  110. data/lib/spec/matchers/has.rb +15 -0
  111. data/lib/spec/matchers/have.rb +150 -0
  112. data/lib/spec/matchers/include.rb +80 -0
  113. data/lib/spec/matchers/match.rb +22 -0
  114. data/lib/spec/matchers/match_array.rb +79 -0
  115. data/lib/spec/matchers/method_missing.rb +9 -0
  116. data/lib/spec/matchers/operator_matcher.rb +70 -0
  117. data/lib/spec/matchers/raise_error.rb +128 -0
  118. data/lib/spec/matchers/respond_to.rb +71 -0
  119. data/lib/spec/matchers/satisfy.rb +47 -0
  120. data/lib/spec/matchers/simple_matcher.rb +132 -0
  121. data/lib/spec/matchers/throw_symbol.rb +106 -0
  122. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  123. data/lib/spec/matchers.rb +141 -0
  124. data/lib/spec/mocks/argument_expectation.rb +49 -0
  125. data/lib/spec/mocks/argument_matchers.rb +237 -0
  126. data/lib/spec/mocks/error_generator.rb +82 -0
  127. data/lib/spec/mocks/errors.rb +10 -0
  128. data/lib/spec/mocks/extensions/object.rb +3 -0
  129. data/lib/spec/mocks/extensions.rb +1 -0
  130. data/lib/spec/mocks/framework.rb +15 -0
  131. data/lib/spec/mocks/message_expectation.rb +331 -0
  132. data/lib/spec/mocks/methods.rb +51 -0
  133. data/lib/spec/mocks/mock.rb +55 -0
  134. data/lib/spec/mocks/order_group.rb +29 -0
  135. data/lib/spec/mocks/proxy.rb +230 -0
  136. data/lib/spec/mocks/space.rb +28 -0
  137. data/lib/spec/mocks/spec_methods.rb +55 -0
  138. data/lib/spec/mocks.rb +200 -0
  139. data/lib/spec/rake/spectask.rb +225 -0
  140. data/lib/spec/rake/verify_rcov.rb +52 -0
  141. data/lib/spec/ruby.rb +9 -0
  142. data/lib/spec/runner/backtrace_tweaker.rb +58 -0
  143. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  144. data/lib/spec/runner/command_line.rb +35 -0
  145. data/lib/spec/runner/configuration.rb +166 -0
  146. data/lib/spec/runner/drb_command_line.rb +20 -0
  147. data/lib/spec/runner/example_group_runner.rb +70 -0
  148. data/lib/spec/runner/formatter/base_formatter.rb +79 -0
  149. data/lib/spec/runner/formatter/base_text_formatter.rb +127 -0
  150. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
  151. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  152. data/lib/spec/runner/formatter/html_formatter.rb +340 -0
  153. data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
  154. data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
  155. data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
  156. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  157. data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
  158. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  159. data/lib/spec/runner/heckle_runner.rb +74 -0
  160. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  161. data/lib/spec/runner/option_parser.rb +204 -0
  162. data/lib/spec/runner/options.rb +320 -0
  163. data/lib/spec/runner/reporter.rb +167 -0
  164. data/lib/spec/runner/spec_parser.rb +73 -0
  165. data/lib/spec/runner.rb +88 -0
  166. data/lib/spec/version.rb +15 -0
  167. data/lib/spec.rb +7 -0
  168. data/resources/rake/examples.rake +7 -0
  169. data/resources/rake/examples_with_rcov.rake +9 -0
  170. data/resources/rake/failing_examples_with_html.rake +9 -0
  171. data/resources/rake/verify_rcov.rake +7 -0
  172. data/resources/spec/example_group_with_should_methods.rb +12 -0
  173. data/resources/spec/simple_spec.rb +8 -0
  174. data/resources/test/spec_and_test_together.rb +57 -0
  175. data/resources/test/spec_including_test_but_not_unit.rb +11 -0
  176. data/resources/test/test_case_with_should_methods.rb +30 -0
  177. data/rspec.gemspec +32 -0
  178. data/spec/README.jruby +15 -0
  179. data/spec/autotest/autotest_helper.rb +6 -0
  180. data/spec/autotest/autotest_matchers.rb +47 -0
  181. data/spec/autotest/discover_spec.rb +8 -0
  182. data/spec/autotest/failed_results_re_spec.rb +24 -0
  183. data/spec/autotest/rspec_spec.rb +114 -0
  184. data/spec/rspec_suite.rb +6 -0
  185. data/spec/ruby_forker.rb +13 -0
  186. data/spec/spec/dsl/main_spec.rb +88 -0
  187. data/spec/spec/example/example_group_class_definition_spec.rb +49 -0
  188. data/spec/spec/example/example_group_factory_spec.rb +224 -0
  189. data/spec/spec/example/example_group_methods_spec.rb +653 -0
  190. data/spec/spec/example/example_group_spec.rb +661 -0
  191. data/spec/spec/example/example_matcher_spec.rb +79 -0
  192. data/spec/spec/example/example_methods_spec.rb +204 -0
  193. data/spec/spec/example/helper_method_spec.rb +24 -0
  194. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  195. data/spec/spec/example/pending_module_spec.rb +139 -0
  196. data/spec/spec/example/predicate_matcher_spec.rb +21 -0
  197. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  198. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  199. data/spec/spec/expectations/differs/default_spec.rb +127 -0
  200. data/spec/spec/expectations/extensions/object_spec.rb +45 -0
  201. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  202. data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  203. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  204. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  205. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  206. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  207. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  208. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  209. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  210. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  211. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  212. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  213. data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
  214. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  215. data/spec/spec/matchers/be_close_spec.rb +41 -0
  216. data/spec/spec/matchers/be_spec.rb +303 -0
  217. data/spec/spec/matchers/change_spec.rb +329 -0
  218. data/spec/spec/matchers/description_generation_spec.rb +172 -0
  219. data/spec/spec/matchers/eql_spec.rb +29 -0
  220. data/spec/spec/matchers/equal_spec.rb +29 -0
  221. data/spec/spec/matchers/exist_spec.rb +57 -0
  222. data/spec/spec/matchers/handler_spec.rb +111 -0
  223. data/spec/spec/matchers/has_spec.rb +63 -0
  224. data/spec/spec/matchers/have_spec.rb +399 -0
  225. data/spec/spec/matchers/include_spec.rb +88 -0
  226. data/spec/spec/matchers/match_array_spec.rb +83 -0
  227. data/spec/spec/matchers/match_spec.rb +37 -0
  228. data/spec/spec/matchers/matcher_methods_spec.rb +66 -0
  229. data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  230. data/spec/spec/matchers/raise_error_spec.rb +333 -0
  231. data/spec/spec/matchers/respond_to_spec.rb +116 -0
  232. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  233. data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  234. data/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  235. data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  236. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  237. data/spec/spec/mocks/at_least_spec.rb +97 -0
  238. data/spec/spec/mocks/at_most_spec.rb +93 -0
  239. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  240. data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
  241. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  242. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  243. data/spec/spec/mocks/bug_report_496.rb +19 -0
  244. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  245. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  246. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  247. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  248. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  249. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  250. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  251. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  252. data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
  253. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  254. data/spec/spec/mocks/mock_spec.rb +579 -0
  255. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  256. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  257. data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  258. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  259. data/spec/spec/mocks/options_hash_spec.rb +35 -0
  260. data/spec/spec/mocks/partial_mock_spec.rb +149 -0
  261. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  262. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  263. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  264. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  265. data/spec/spec/mocks/stub_spec.rb +194 -0
  266. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
  267. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  268. data/spec/spec/package/bin_spec_spec.rb +22 -0
  269. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  270. data/spec/spec/runner/command_line_spec.rb +141 -0
  271. data/spec/spec/runner/configuration_spec.rb +301 -0
  272. data/spec/spec/runner/drb_command_line_spec.rb +97 -0
  273. data/spec/spec/runner/empty_file.txt +0 -0
  274. data/spec/spec/runner/example_group_runner_spec.rb +33 -0
  275. data/spec/spec/runner/examples.txt +2 -0
  276. data/spec/spec/runner/failed.txt +3 -0
  277. data/spec/spec/runner/formatter/base_formatter_spec.rb +23 -0
  278. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
  279. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  280. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  281. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
  282. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
  283. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
  284. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
  285. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +379 -0
  286. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
  287. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
  288. data/spec/spec/runner/formatter/html_formatter_spec.rb +62 -0
  289. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
  290. data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
  291. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +145 -0
  292. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  293. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +104 -0
  294. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  295. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
  296. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +373 -0
  297. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
  298. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
  299. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  300. data/spec/spec/runner/heckler_spec.rb +20 -0
  301. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  302. data/spec/spec/runner/option_parser_spec.rb +396 -0
  303. data/spec/spec/runner/options_spec.rb +469 -0
  304. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  305. data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
  306. data/spec/spec/runner/output_one_time_spec.rb +16 -0
  307. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
  308. data/spec/spec/runner/reporter_spec.rb +238 -0
  309. data/spec/spec/runner/resources/a_bar.rb +0 -0
  310. data/spec/spec/runner/resources/a_foo.rb +0 -0
  311. data/spec/spec/runner/resources/a_spec.rb +1 -0
  312. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  313. data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
  314. data/spec/spec/runner/spec.opts +2 -0
  315. data/spec/spec/runner/spec_drb.opts +1 -0
  316. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
  317. data/spec/spec/runner/spec_parser_spec.rb +91 -0
  318. data/spec/spec/runner/spec_spaced.opts +2 -0
  319. data/spec/spec/runner_spec.rb +11 -0
  320. data/spec/spec/spec_classes.rb +133 -0
  321. data/spec/spec/spec_spec.rb +21 -0
  322. data/spec/spec.opts +6 -0
  323. data/spec/spec_helper.rb +107 -0
  324. metadata +388 -0
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+
6
+ describe "an expectation set on nil" do
7
+
8
+ it "should issue a warning with file and line number information" do
9
+ expected_warning = %r%An expectation of :foo was set on nil. Called from #{__FILE__}:#{__LINE__+3}(:in `block \(2 levels\) in <module:Mocks>')?. Use allow_message_expectations_on_nil to disable warnings.%
10
+ Kernel.should_receive(:warn).with(expected_warning)
11
+
12
+ nil.should_receive(:foo)
13
+ nil.foo
14
+ end
15
+
16
+ it "should issue a warning when the expectation is negative" do
17
+ Kernel.should_receive(:warn)
18
+
19
+ nil.should_not_receive(:foo)
20
+ end
21
+
22
+ it "should not issue a warning when expectations are set to be allowed" do
23
+ allow_message_expectations_on_nil
24
+ Kernel.should_not_receive(:warn)
25
+
26
+ nil.should_receive(:foo)
27
+ nil.should_not_receive(:bar)
28
+ nil.foo
29
+ end
30
+
31
+ end
32
+
33
+ describe "#allow_message_expectations_on_nil" do
34
+
35
+ it "should not effect subsequent examples" do
36
+ example_group = Class.new(::Spec::Example::ExampleGroupDouble)
37
+ example_group.it("when called in one example that doesn't end up setting an expectation on nil") do
38
+ allow_message_expectations_on_nil
39
+ end
40
+ example_group.it("should not effect the next exapmle ran") do
41
+ Kernel.should_receive(:warn)
42
+ nil.should_receive(:foo)
43
+ nil.foo
44
+ end
45
+
46
+ example_group.run(Spec::Runner.options).should be_true
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,54 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "a mock acting as a NullObject" do
6
+ before(:each) do
7
+ @mock = Mock.new("null_object", :null_object => true)
8
+ end
9
+
10
+ it "should allow explicit expectation" do
11
+ @mock.should_receive(:something)
12
+ @mock.something
13
+ end
14
+
15
+ it "should fail verification when explicit exception not met" do
16
+ lambda do
17
+ @mock.should_receive(:something)
18
+ @mock.rspec_verify
19
+ end.should raise_error(MockExpectationError)
20
+ end
21
+
22
+ it "should ignore unexpected methods" do
23
+ @mock.random_call("a", "d", "c")
24
+ @mock.rspec_verify
25
+ end
26
+
27
+ it "should expected message with different args first" do
28
+ @mock.should_receive(:message).with(:expected_arg)
29
+ @mock.message(:unexpected_arg)
30
+ @mock.message(:expected_arg)
31
+ end
32
+
33
+ it "should expected message with different args second" do
34
+ @mock.should_receive(:message).with(:expected_arg)
35
+ @mock.message(:expected_arg)
36
+ @mock.message(:unexpected_arg)
37
+ end
38
+ end
39
+
40
+ describe "#null_object?" do
41
+ it "should default to false" do
42
+ obj = mock('anything')
43
+ obj.should_not be_null_object
44
+ end
45
+ end
46
+
47
+ describe "#as_null_object" do
48
+ it "should set the object to null_object" do
49
+ obj = mock('anything').as_null_object
50
+ obj.should be_null_object
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "OnceCounts" do
6
+ before(:each) do
7
+ @mock = mock("test mock")
8
+ end
9
+
10
+ it "once should fail when called once with wrong args" do
11
+ @mock.should_receive(:random_call).once.with("a", "b", "c")
12
+ lambda do
13
+ @mock.random_call("d", "e", "f")
14
+ end.should raise_error(MockExpectationError)
15
+ @mock.rspec_reset
16
+ end
17
+
18
+ it "once should fail when called twice" do
19
+ @mock.should_receive(:random_call).once
20
+ @mock.random_call
21
+ @mock.random_call
22
+ lambda do
23
+ @mock.rspec_verify
24
+ end.should raise_error(MockExpectationError)
25
+ end
26
+
27
+ it "once should fail when not called" do
28
+ @mock.should_receive(:random_call).once
29
+ lambda do
30
+ @mock.rspec_verify
31
+ end.should raise_error(MockExpectationError)
32
+ end
33
+
34
+ it "once should pass when called once" do
35
+ @mock.should_receive(:random_call).once
36
+ @mock.random_call
37
+ @mock.rspec_verify
38
+ end
39
+
40
+ it "once should pass when called once with specified args" do
41
+ @mock.should_receive(:random_call).once.with("a", "b", "c")
42
+ @mock.random_call("a", "b", "c")
43
+ @mock.rspec_verify
44
+ end
45
+
46
+ it "once should pass when called once with unspecified args" do
47
+ @mock.should_receive(:random_call).once
48
+ @mock.random_call("a", "b", "c")
49
+ @mock.rspec_verify
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "calling :should_receive with an options hash" do
6
+ it "should report the file and line submitted with :expected_from" do
7
+ begin
8
+ mock = Spec::Mocks::Mock.new("a mock")
9
+ mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
10
+ mock.rspec_verify
11
+ rescue => e
12
+ ensure
13
+ e.backtrace.to_s.should =~ /\/path\/to\/blah.ext:37/m
14
+ end
15
+ end
16
+
17
+ it "should use the message supplied with :message" do
18
+ lambda {
19
+ m = Spec::Mocks::Mock.new("a mock")
20
+ m.should_receive(:message, :message => "recebi nada")
21
+ m.rspec_verify
22
+ }.should raise_error("recebi nada")
23
+ end
24
+
25
+ it "should use the message supplied with :message after a similar stub" do
26
+ lambda {
27
+ m = Spec::Mocks::Mock.new("a mock")
28
+ m.stub!(:message)
29
+ m.should_receive(:message, :message => "from mock")
30
+ m.rspec_verify
31
+ }.should raise_error("from mock")
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,149 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "using a Partial Mock," do
6
+ before(:each) do
7
+ @object = Object.new
8
+ end
9
+
10
+ it "should name the class in the failure message" do
11
+ @object.should_receive(:foo)
12
+ lambda do
13
+ @object.rspec_verify
14
+ end.should raise_error(Spec::Mocks::MockExpectationError, /<Object:.*> expected/)
15
+ end
16
+
17
+ it "should name the class in the failure message when expectation is on class" do
18
+ Object.should_receive(:foo)
19
+ lambda do
20
+ Object.rspec_verify
21
+ end.should raise_error(Spec::Mocks::MockExpectationError, /<Object \(class\)>/)
22
+ end
23
+
24
+ it "should not conflict with @options in the object" do
25
+ @object.instance_eval { @options = Object.new }
26
+ @object.should_receive(:blah)
27
+ @object.blah
28
+ end
29
+
30
+ it "should_not_receive should mock out the method" do
31
+ @object.should_not_receive(:fuhbar)
32
+ lambda do
33
+ @object.fuhbar
34
+ end.should raise_error(MockExpectationError, /<Object:.*> expected :fuhbar with \(no args\) 0 times/)
35
+ end
36
+
37
+ it "should_not_receive should return a negative message expectation" do
38
+ @object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
39
+ end
40
+
41
+ it "should_receive should mock out the method" do
42
+ @object.should_receive(:foobar).with(:test_param).and_return(1)
43
+ @object.foobar(:test_param).should equal(1)
44
+ end
45
+
46
+ it "should_receive should handle a hash" do
47
+ @object.should_receive(:foobar).with(:key => "value").and_return(1)
48
+ @object.foobar(:key => "value").should equal(1)
49
+ end
50
+
51
+ it "should_receive should handle an inner hash" do
52
+ hash = {:a => {:key => "value"}}
53
+ @object.should_receive(:foobar).with(:key => "value").and_return(1)
54
+ @object.foobar(hash[:a]).should equal(1)
55
+ end
56
+
57
+ it "should_receive should return a message expectation" do
58
+ @object.should_receive(:foobar).should be_kind_of(MessageExpectation)
59
+ @object.foobar
60
+ end
61
+
62
+ it "should_receive should verify method was called" do
63
+ @object.should_receive(:foobar).with(:test_param).and_return(1)
64
+ lambda do
65
+ @object.rspec_verify
66
+ end.should raise_error(Spec::Mocks::MockExpectationError)
67
+ end
68
+
69
+ it "should_receive should also take a String argument" do
70
+ @object.should_receive('foobar')
71
+ @object.foobar
72
+ end
73
+
74
+ it "should_not_receive should also take a String argument" do
75
+ @object.should_not_receive('foobar')
76
+ lambda do
77
+ @object.foobar
78
+ end.should raise_error(Spec::Mocks::MockExpectationError)
79
+ end
80
+
81
+ it "should use report nil in the error message" do
82
+ allow_message_expectations_on_nil
83
+
84
+ @this_will_resolve_to_nil.should_receive(:foobar)
85
+ lambda do
86
+ @this_will_resolve_to_nil.rspec_verify
87
+ end.should raise_error(Spec::Mocks::MockExpectationError, /nil expected :foobar with/)
88
+ end
89
+ end
90
+
91
+ describe "Partially mocking an object that defines ==, after another mock has been defined" do
92
+ before(:each) do
93
+ stub("existing mock", :foo => :foo)
94
+ end
95
+
96
+ class PartiallyMockedEquals
97
+ attr_reader :val
98
+ def initialize(val)
99
+ @val = val
100
+ end
101
+
102
+ def ==(other)
103
+ @val == other.val
104
+ end
105
+ end
106
+
107
+ it "should not raise an error when stubbing the object" do
108
+ o = PartiallyMockedEquals.new :foo
109
+ lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
110
+ end
111
+ end
112
+
113
+ describe "Method visibility when using partial mocks" do
114
+ class MockableClass
115
+ def public_method
116
+ private_method
117
+ protected_method
118
+ end
119
+ protected
120
+ def protected_method; end
121
+ private
122
+ def private_method; end
123
+ end
124
+
125
+ before(:each) do
126
+ @object = MockableClass.new
127
+ end
128
+
129
+ it 'should keep public methods public' do
130
+ @object.should_receive(:public_method)
131
+ @object.public_methods.should include('public_method')
132
+ @object.public_method
133
+ end
134
+
135
+ it 'should keep private methods private' do
136
+ @object.should_receive(:private_method)
137
+ @object.private_methods.should include('private_method')
138
+ @object.public_method
139
+ end
140
+
141
+ it 'should keep protected methods protected' do
142
+ @object.should_receive(:protected_method)
143
+ @object.protected_methods.should include('protected_method')
144
+ @object.public_method
145
+ end
146
+
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,66 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "PartialMockUsingMocksDirectly" do
6
+ before(:each) do
7
+
8
+ klass=Class.new
9
+ klass.class_eval do
10
+ def existing_method
11
+ :original_value
12
+ end
13
+ end
14
+ @obj = klass.new
15
+
16
+ end
17
+
18
+ # See http://rubyforge.org/tracker/index.php?func=detail&aid=10263&group_id=797&atid=3149
19
+ # specify "should clear expectations on verify" do
20
+ # @obj.should_receive(:msg)
21
+ # @obj.msg
22
+ # @obj.rspec_verify
23
+ # lambda do
24
+ # @obj.msg
25
+ # end.should raise_error(NoMethodError)
26
+ #
27
+ # end
28
+ it "should fail when expected message is not received" do
29
+ @obj.should_receive(:msg)
30
+ lambda do
31
+ @obj.rspec_verify
32
+ end.should raise_error(MockExpectationError)
33
+
34
+ end
35
+ it "should fail when message is received with incorrect args" do
36
+ @obj.should_receive(:msg).with(:correct_arg)
37
+ lambda do
38
+ @obj.msg(:incorrect_arg)
39
+ end.should raise_error(MockExpectationError)
40
+ @obj.msg(:correct_arg)
41
+
42
+ end
43
+ it "should pass when expected message is received" do
44
+ @obj.should_receive(:msg)
45
+ @obj.msg
46
+ @obj.rspec_verify
47
+
48
+ end
49
+ it "should pass when message is received with correct args" do
50
+ @obj.should_receive(:msg).with(:correct_arg)
51
+ @obj.msg(:correct_arg)
52
+ @obj.rspec_verify
53
+
54
+ end
55
+ it "should revert to original method if existed" do
56
+ @obj.existing_method.should equal(:original_value)
57
+ @obj.should_receive(:existing_method).and_return(:mock_value)
58
+ @obj.existing_method.should equal(:mock_value)
59
+ @obj.rspec_verify
60
+ @obj.existing_method.should equal(:original_value)
61
+
62
+ end
63
+
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,145 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "mock argument matchers", :shared => true do
6
+ before(:each) do
7
+ @mock = Mock.new("test mock")
8
+ Kernel.stub!(:warn)
9
+ end
10
+
11
+ after(:each) do
12
+ @mock.rspec_verify
13
+ end
14
+ end
15
+
16
+ describe Methods, "handling argument matchers" do
17
+ it_should_behave_like "mock argument matchers"
18
+
19
+ it "should accept true as boolean()" do
20
+ @mock.should_receive(:random_call).with(boolean())
21
+ @mock.random_call(true)
22
+ end
23
+
24
+ it "should accept false as boolean()" do
25
+ @mock.should_receive(:random_call).with(boolean())
26
+ @mock.random_call(false)
27
+ end
28
+
29
+ it "should accept fixnum as kind_of(Numeric)" do
30
+ @mock.should_receive(:random_call).with(kind_of(Numeric))
31
+ @mock.random_call(1)
32
+ end
33
+
34
+ it "should accept float as an_instance_of(Numeric)" do
35
+ @mock.should_receive(:random_call).with(kind_of(Numeric))
36
+ @mock.random_call(1.5)
37
+ end
38
+
39
+ it "accepts fixnum as instance_of(Fixnum)" do
40
+ @mock.should_receive(:random_call).with(instance_of(Fixnum))
41
+ @mock.random_call(1)
42
+ end
43
+
44
+ it "should NOT accept fixnum as instance_of(Numeric)" do
45
+ @mock.should_not_receive(:random_call).with(instance_of(Numeric))
46
+ @mock.random_call(1)
47
+ end
48
+
49
+ it "should NOT accept float as instance_of(Numeric)" do
50
+ @mock.should_not_receive(:random_call).with(instance_of(Numeric))
51
+ @mock.random_call(1.5)
52
+ end
53
+
54
+ it "should accept string as anything()" do
55
+ @mock.should_receive(:random_call).with("a", anything(), "c")
56
+ @mock.random_call("a", "whatever", "c")
57
+ end
58
+
59
+ it "should match duck type with one method" do
60
+ @mock.should_receive(:random_call).with(duck_type(:length))
61
+ @mock.random_call([])
62
+ end
63
+
64
+ it "should match duck type with two methods" do
65
+ @mock.should_receive(:random_call).with(duck_type(:abs, :div))
66
+ @mock.random_call(1)
67
+ end
68
+
69
+ it "should match no args against any_args()" do
70
+ @mock.should_receive(:random_call).with(any_args)
71
+ @mock.random_call()
72
+ end
73
+
74
+ it "should match one arg against any_args()" do
75
+ @mock.should_receive(:random_call).with(any_args)
76
+ @mock.random_call("a string")
77
+ end
78
+
79
+ it "should match no args against no_args()" do
80
+ @mock.should_receive(:random_call).with(no_args)
81
+ @mock.random_call()
82
+ end
83
+
84
+ it "should match hash with hash_including same hash" do
85
+ @mock.should_receive(:random_call).with(hash_including(:a => 1))
86
+ @mock.random_call(:a => 1)
87
+ end
88
+
89
+ end
90
+
91
+ describe Methods, "handling block matchers" do
92
+ it_should_behave_like "mock argument matchers"
93
+
94
+ it "should match arguments against RSpec expectations" do
95
+ @mock.should_receive(:random_call).with {|arg1, arg2, arr, *rest|
96
+ arg1.should == 5
97
+ arg2.should have_at_least(3).characters
98
+ arg2.should have_at_most(10).characters
99
+ arr.map {|i| i * 2}.should == [2,4,6]
100
+ rest.should == [:fee, "fi", 4]
101
+ }
102
+ @mock.random_call 5, "hello", [1,2,3], :fee, "fi", 4
103
+ end
104
+ end
105
+
106
+ describe Methods, "handling non-matcher arguments" do
107
+
108
+ before(:each) do
109
+ @mock = Mock.new("test mock")
110
+ end
111
+
112
+ it "should match non special symbol (can be removed when deprecated symbols are removed)" do
113
+ @mock.should_receive(:random_call).with(:some_symbol)
114
+ @mock.random_call(:some_symbol)
115
+ end
116
+
117
+ it "should match string against regexp" do
118
+ @mock.should_receive(:random_call).with(/bcd/)
119
+ @mock.random_call("abcde")
120
+ end
121
+
122
+ it "should match regexp against regexp" do
123
+ @mock.should_receive(:random_call).with(/bcd/)
124
+ @mock.random_call(/bcd/)
125
+ end
126
+
127
+ it "should match against a hash submitted and received by value" do
128
+ @mock.should_receive(:random_call).with(:a => "a", :b => "b")
129
+ @mock.random_call(:a => "a", :b => "b")
130
+ end
131
+
132
+ it "should match against a hash submitted by reference and received by value" do
133
+ opts = {:a => "a", :b => "b"}
134
+ @mock.should_receive(:random_call).with(opts)
135
+ @mock.random_call(:a => "a", :b => "b")
136
+ end
137
+
138
+ it "should match against a hash submitted by value and received by reference" do
139
+ opts = {:a => "a", :b => "b"}
140
+ @mock.should_receive(:random_call).with(:a => "a", :b => "b")
141
+ @mock.random_call(opts)
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "PreciseCounts" do
6
+ before(:each) do
7
+ @mock = mock("test mock")
8
+ end
9
+
10
+ it "should fail when exactly n times method is called less than n times" do
11
+ @mock.should_receive(:random_call).exactly(3).times
12
+ @mock.random_call
13
+ @mock.random_call
14
+ lambda do
15
+ @mock.rspec_verify
16
+ end.should raise_error(MockExpectationError)
17
+ end
18
+
19
+ it "should fail when exactly n times method is never called" do
20
+ @mock.should_receive(:random_call).exactly(3).times
21
+ lambda do
22
+ @mock.rspec_verify
23
+ end.should raise_error(MockExpectationError)
24
+ end
25
+
26
+ it "should pass if exactly n times method is called exactly n times" do
27
+ @mock.should_receive(:random_call).exactly(3).times
28
+ @mock.random_call
29
+ @mock.random_call
30
+ @mock.random_call
31
+ @mock.rspec_verify
32
+ end
33
+
34
+ it "should pass multiple calls with different args and counts" do
35
+ @mock.should_receive(:random_call).twice.with(1)
36
+ @mock.should_receive(:random_call).once.with(2)
37
+ @mock.random_call(1)
38
+ @mock.random_call(2)
39
+ @mock.random_call(1)
40
+ @mock.rspec_verify
41
+ end
42
+
43
+ it "should pass mutiple calls with different args" do
44
+ @mock.should_receive(:random_call).once.with(1)
45
+ @mock.should_receive(:random_call).once.with(2)
46
+ @mock.random_call(1)
47
+ @mock.random_call(2)
48
+ @mock.rspec_verify
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "a mock" do
6
+ before(:each) do
7
+ @mock = mock("mock", :null_object => true)
8
+ end
9
+ it "should answer false for received_message? when no messages received" do
10
+ @mock.received_message?(:message).should be_false
11
+ end
12
+ it "should answer true for received_message? when message received" do
13
+ @mock.message
14
+ @mock.received_message?(:message).should be_true
15
+ end
16
+ it "should answer true for received_message? when message received with correct args" do
17
+ @mock.message 1,2,3
18
+ @mock.received_message?(:message, 1,2,3).should be_true
19
+ end
20
+ it "should answer false for received_message? when message received with incorrect args" do
21
+ @mock.message 1,2,3
22
+ @mock.received_message?(:message, 1,2).should be_false
23
+ end
24
+ end
25
+ end
26
+ end