rspec 1.0.0 → 1.3.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 (456) hide show
  1. data/.document +7 -0
  2. data/History.rdoc +1546 -0
  3. data/{MIT-LICENSE → License.txt} +3 -1
  4. data/Manifest.txt +384 -0
  5. data/README.rdoc +41 -0
  6. data/Rakefile +94 -229
  7. data/Ruby1.9.rdoc +31 -0
  8. data/TODO.txt +17 -0
  9. data/Upgrade.rdoc +260 -0
  10. data/bin/autospec +4 -0
  11. data/bin/spec +5 -3
  12. data/cucumber.yml +5 -0
  13. data/examples/failing/README.txt +11 -0
  14. data/examples/failing/diffing_spec.rb +36 -0
  15. data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  16. data/examples/failing/failure_in_after.rb +10 -0
  17. data/examples/failing/failure_in_before.rb +10 -0
  18. data/examples/failing/mocking_example.rb +38 -0
  19. data/examples/failing/mocking_with_flexmock.rb +26 -0
  20. data/examples/failing/mocking_with_mocha.rb +25 -0
  21. data/examples/failing/mocking_with_rr.rb +27 -0
  22. data/examples/failing/partial_mock_example.rb +18 -0
  23. data/examples/failing/pending_example.rb +7 -0
  24. data/examples/failing/predicate_example.rb +32 -0
  25. data/examples/failing/raising_example.rb +47 -0
  26. data/examples/failing/syntax_error_example.rb +7 -0
  27. data/examples/failing/team_spec.rb +41 -0
  28. data/examples/failing/timeout_behaviour.rb +5 -0
  29. data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
  30. data/examples/passing/dynamic_spec.rb +7 -0
  31. data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
  32. data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
  33. data/examples/passing/filtered_formatter.rb +17 -0
  34. data/examples/passing/filtered_formatter_example.rb +31 -0
  35. data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
  36. data/examples/passing/helper_method_example.rb +12 -0
  37. data/examples/passing/implicit_docstrings_example.rb +16 -0
  38. data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
  39. data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
  40. data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
  41. data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
  42. data/examples/passing/nested_classes_example.rb +35 -0
  43. data/examples/passing/options_example.rb +29 -0
  44. data/examples/passing/options_formatter.rb +20 -0
  45. data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
  46. data/examples/passing/pending_example.rb +18 -0
  47. data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
  48. data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
  49. data/examples/passing/shared_stack_examples.rb +36 -0
  50. data/examples/passing/simple_matcher_example.rb +29 -0
  51. data/examples/{stack.rb → passing/stack.rb} +1 -1
  52. data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
  53. data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  54. data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
  55. data/examples/passing/yielding_example.rb +31 -0
  56. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  57. data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  58. data/features/command_line/line_number_option.feature +56 -0
  59. data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  60. data/features/example_groups/define_example_attribute.feature +41 -0
  61. data/features/example_groups/example_group_with_should_methods.feature +29 -0
  62. data/features/example_groups/implicit_docstrings.feature +59 -0
  63. data/features/example_groups/nested_groups.feature +32 -0
  64. data/features/expectations/customized_message.feature +54 -0
  65. data/features/expectations/expect_change.feature +65 -0
  66. data/features/expectations/expect_error.feature +44 -0
  67. data/features/extensions/custom_example_group.feature +19 -0
  68. data/features/formatters/custom_formatter.feature +30 -0
  69. data/features/formatters/nested_formatter.feature +32 -0
  70. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  71. data/features/interop/examples_and_tests_together.feature +84 -0
  72. data/features/interop/rspec_output.feature +25 -0
  73. data/features/interop/test_but_not_test_unit.feature +26 -0
  74. data/features/interop/test_case_with_should_methods.feature +46 -0
  75. data/features/load_paths/add_lib_to_load_path.feature +20 -0
  76. data/features/load_paths/add_spec_to_load_path.feature +20 -0
  77. data/features/matchers/define_diffable_matcher.feature +26 -0
  78. data/features/matchers/define_matcher.feature +179 -0
  79. data/features/matchers/define_matcher_outside_rspec.feature +38 -0
  80. data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
  81. data/features/matchers/define_wrapped_matcher.feature +56 -0
  82. data/features/matchers/match_unless_raises.feature +60 -0
  83. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  84. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  85. data/features/mock_framework_integration/use_mocha.feature +27 -0
  86. data/features/mock_framework_integration/use_rr.feature +27 -0
  87. data/features/mocks/block_local_expectations.feature +62 -0
  88. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  89. data/features/mocks/stub_implementation.feature +26 -0
  90. data/features/pending/pending_examples.feature +81 -0
  91. data/features/runner/specify_line_number.feature +32 -0
  92. data/features/spec_helper/spec_helper.feature +25 -0
  93. data/features/step_definitions/running_rspec_steps.rb +52 -0
  94. data/features/step_definitions/stubbing_steps.rb +16 -0
  95. data/features/subject/explicit_subject.feature +31 -0
  96. data/features/subject/implicit_subject.feature +43 -0
  97. data/features/support/env.rb +83 -0
  98. data/features/support/matchers/smart_match.rb +31 -0
  99. data/geminstaller.yml +29 -0
  100. data/init.rb +9 -0
  101. data/lib/autotest/discover.rb +3 -0
  102. data/lib/autotest/rspec.rb +54 -0
  103. data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  104. data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
  105. data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  106. data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  107. data/lib/spec/autorun.rb +3 -0
  108. data/lib/spec/deprecation.rb +41 -0
  109. data/lib/spec/dsl/main.rb +93 -0
  110. data/lib/spec/dsl.rb +1 -10
  111. data/lib/spec/example/args_and_options.rb +27 -0
  112. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  113. data/lib/spec/example/errors.rb +25 -0
  114. data/lib/spec/example/example_group.rb +10 -0
  115. data/lib/spec/example/example_group_factory.rb +82 -0
  116. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  117. data/lib/spec/example/example_group_methods.rb +287 -0
  118. data/lib/spec/example/example_group_proxy.rb +61 -0
  119. data/lib/spec/example/example_matcher.rb +43 -0
  120. data/lib/spec/example/example_methods.rb +152 -0
  121. data/lib/spec/example/example_proxy.rb +41 -0
  122. data/lib/spec/example/module_reopening_fix.rb +43 -0
  123. data/lib/spec/example/pending.rb +18 -0
  124. data/lib/spec/example/predicate_matchers.rb +46 -0
  125. data/lib/spec/example/shared_example_group.rb +59 -0
  126. data/lib/spec/example/subject.rb +114 -0
  127. data/lib/spec/example.rb +164 -0
  128. data/lib/spec/expectations/errors.rb +7 -1
  129. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  130. data/lib/spec/expectations/extensions.rb +1 -2
  131. data/lib/spec/expectations/fail_with.rb +45 -0
  132. data/lib/spec/expectations/handler.rb +37 -30
  133. data/lib/spec/expectations.rb +2 -23
  134. data/lib/spec/extensions/instance_exec.rb +31 -0
  135. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  136. data/lib/spec/interop/test/unit/testcase.rb +56 -0
  137. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  138. data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
  139. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  140. data/lib/spec/interop/test.rb +44 -0
  141. data/lib/spec/matchers/be.rb +183 -140
  142. data/lib/spec/matchers/be_close.rb +18 -23
  143. data/lib/spec/matchers/be_instance_of.rb +26 -0
  144. data/lib/spec/matchers/be_kind_of.rb +26 -0
  145. data/lib/spec/matchers/change.rb +72 -41
  146. data/lib/spec/matchers/compatibility.rb +14 -0
  147. data/lib/spec/matchers/dsl.rb +20 -0
  148. data/lib/spec/matchers/eql.rb +25 -26
  149. data/lib/spec/matchers/equal.rb +35 -25
  150. data/lib/spec/matchers/errors.rb +5 -0
  151. data/lib/spec/matchers/exist.rb +16 -0
  152. data/lib/spec/matchers/generated_descriptions.rb +36 -0
  153. data/lib/spec/matchers/has.rb +17 -26
  154. data/lib/spec/matchers/have.rb +36 -24
  155. data/lib/spec/matchers/include.rb +22 -48
  156. data/lib/spec/matchers/match.rb +11 -31
  157. data/lib/spec/matchers/match_array.rb +71 -0
  158. data/lib/spec/matchers/matcher.rb +132 -0
  159. data/lib/spec/matchers/method_missing.rb +9 -0
  160. data/lib/spec/matchers/operator_matcher.rb +55 -44
  161. data/lib/spec/matchers/pretty.rb +37 -0
  162. data/lib/spec/matchers/raise_exception.rb +131 -0
  163. data/lib/spec/matchers/respond_to.rb +35 -9
  164. data/lib/spec/matchers/satisfy.rb +2 -2
  165. data/lib/spec/matchers/simple_matcher.rb +134 -0
  166. data/lib/spec/matchers/throw_symbol.rb +56 -31
  167. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  168. data/lib/spec/matchers.rb +104 -48
  169. data/lib/spec/mocks/argument_expectation.rb +28 -112
  170. data/lib/spec/mocks/argument_matchers.rb +237 -0
  171. data/lib/spec/mocks/error_generator.rb +20 -13
  172. data/lib/spec/mocks/errors.rb +1 -1
  173. data/lib/spec/mocks/example_methods.rb +69 -0
  174. data/lib/spec/mocks/extensions.rb +1 -0
  175. data/lib/spec/mocks/framework.rb +15 -0
  176. data/lib/spec/mocks/message_expectation.rb +206 -93
  177. data/lib/spec/mocks/methods.rb +66 -7
  178. data/lib/spec/mocks/mock.rb +53 -11
  179. data/lib/spec/mocks/proxy.rb +160 -55
  180. data/lib/spec/mocks/space.rb +2 -2
  181. data/lib/spec/mocks.rb +14 -23
  182. data/lib/spec/rake/spectask.rb +108 -53
  183. data/lib/spec/rake/verify_rcov.rb +4 -4
  184. data/lib/spec/ruby.rb +9 -0
  185. data/lib/spec/runner/backtrace_tweaker.rb +45 -23
  186. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  187. data/lib/spec/runner/command_line.rb +7 -14
  188. data/lib/spec/runner/configuration.rb +202 -0
  189. data/lib/spec/runner/differs/default.rb +93 -0
  190. data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  191. data/lib/spec/runner/drb_command_line.rb +18 -7
  192. data/lib/spec/runner/example_group_runner.rb +58 -0
  193. data/lib/spec/runner/extensions/kernel.rb +5 -46
  194. data/lib/spec/runner/formatter/base_formatter.rb +97 -26
  195. data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
  196. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  197. data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
  198. data/lib/spec/runner/formatter/html_formatter.rb +101 -75
  199. data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
  200. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  201. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  202. data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
  203. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  204. data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
  205. data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
  206. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  207. data/lib/spec/runner/heckle_runner.rb +56 -56
  208. data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
  209. data/lib/spec/runner/line_number_query.rb +78 -0
  210. data/lib/spec/runner/option_parser.rb +147 -148
  211. data/lib/spec/runner/options.rb +343 -95
  212. data/lib/spec/runner/reporter.rb +117 -60
  213. data/lib/spec/runner.rb +39 -138
  214. data/lib/spec/stubs/cucumber.rb +5 -0
  215. data/lib/spec/test/unit.rb +10 -0
  216. data/lib/spec/version.rb +14 -22
  217. data/lib/spec.rb +5 -10
  218. data/resources/helpers/cmdline.rb +8 -0
  219. data/resources/rake/examples.rake +7 -0
  220. data/resources/rake/examples_with_rcov.rake +9 -0
  221. data/resources/rake/failing_examples_with_html.rake +9 -0
  222. data/resources/rake/verify_rcov.rake +7 -0
  223. data/spec/README.jruby +15 -0
  224. data/spec/autotest/autotest_helper.rb +8 -0
  225. data/spec/autotest/autotest_matchers.rb +38 -0
  226. data/spec/autotest/discover_spec.rb +8 -0
  227. data/spec/autotest/failed_results_re_spec.rb +31 -0
  228. data/spec/autotest/rspec_spec.rb +126 -0
  229. data/spec/ruby_forker.rb +13 -0
  230. data/spec/spec/dsl/main_spec.rb +103 -0
  231. data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  232. data/spec/spec/example/example_group_factory_spec.rb +180 -0
  233. data/spec/spec/example/example_group_methods_spec.rb +778 -0
  234. data/spec/spec/example/example_group_proxy_spec.rb +107 -0
  235. data/spec/spec/example/example_group_spec.rb +632 -0
  236. data/spec/spec/example/example_matcher_spec.rb +85 -0
  237. data/spec/spec/example/example_methods_spec.rb +162 -0
  238. data/spec/spec/example/example_proxy_spec.rb +57 -0
  239. data/spec/spec/example/helper_method_spec.rb +24 -0
  240. data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
  241. data/spec/spec/example/pending_module_spec.rb +58 -0
  242. data/spec/spec/example/predicate_matcher_spec.rb +41 -0
  243. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  244. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  245. data/spec/spec/example/subject_spec.rb +110 -0
  246. data/spec/spec/expectations/differs/default_spec.rb +100 -13
  247. data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
  248. data/spec/spec/expectations/fail_with_spec.rb +42 -17
  249. data/spec/spec/expectations/handler_spec.rb +206 -0
  250. data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
  251. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  252. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  253. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  254. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  255. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  256. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  257. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  258. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  259. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  260. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  261. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  262. data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  263. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  264. data/spec/spec/matchers/be_close_spec.rb +32 -21
  265. data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  266. data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  267. data/spec/spec/matchers/be_spec.rb +261 -10
  268. data/spec/spec/matchers/change_spec.rb +178 -61
  269. data/spec/spec/matchers/compatibility_spec.rb +28 -0
  270. data/spec/spec/matchers/description_generation_spec.rb +47 -46
  271. data/spec/spec/matchers/dsl_spec.rb +34 -0
  272. data/spec/spec/matchers/eql_spec.rb +14 -9
  273. data/spec/spec/matchers/equal_spec.rb +43 -14
  274. data/spec/spec/matchers/exist_spec.rb +41 -24
  275. data/spec/spec/matchers/has_spec.rb +154 -1
  276. data/spec/spec/matchers/have_spec.rb +311 -189
  277. data/spec/spec/matchers/include_spec.rb +45 -2
  278. data/spec/spec/matchers/match_array_spec.rb +115 -0
  279. data/spec/spec/matchers/match_spec.rb +25 -5
  280. data/spec/spec/matchers/matcher_spec.rb +289 -0
  281. data/spec/spec/matchers/matchers_spec.rb +2 -0
  282. data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
  283. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  284. data/spec/spec/matchers/respond_to_spec.rb +78 -16
  285. data/spec/spec/matchers/satisfy_spec.rb +1 -1
  286. data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
  287. data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
  288. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  289. data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
  290. data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
  291. data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  292. data/spec/spec/mocks/at_least_spec.rb +2 -2
  293. data/spec/spec/mocks/at_most_spec.rb +3 -3
  294. data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
  295. data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  296. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  297. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  298. data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
  299. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  300. data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
  301. data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
  302. data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
  303. data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
  304. data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  305. data/spec/spec/mocks/double_spec.rb +12 -0
  306. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  307. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  308. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  309. data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
  310. data/spec/spec/mocks/mock_space_spec.rb +1 -1
  311. data/spec/spec/mocks/mock_spec.rb +346 -129
  312. data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
  313. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  314. data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
  315. data/spec/spec/mocks/once_counts_spec.rb +2 -2
  316. data/spec/spec/mocks/options_hash_spec.rb +19 -17
  317. data/spec/spec/mocks/partial_mock_spec.rb +124 -12
  318. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
  319. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  320. data/spec/spec/mocks/precise_counts_spec.rb +2 -2
  321. data/spec/spec/mocks/record_messages_spec.rb +2 -2
  322. data/spec/spec/mocks/stub_chain_spec.rb +42 -0
  323. data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  324. data/spec/spec/mocks/stub_spec.rb +147 -103
  325. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  326. data/spec/spec/mocks/twice_counts_spec.rb +2 -2
  327. data/spec/spec/mocks/unstub_spec.rb +127 -0
  328. data/spec/spec/package/bin_spec_spec.rb +11 -7
  329. data/spec/spec/rake/spectask_spec.rb +150 -0
  330. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  331. data/spec/spec/runner/command_line_spec.rb +158 -29
  332. data/spec/spec/runner/configuration_spec.rb +320 -0
  333. data/spec/spec/runner/drb_command_line_spec.rb +137 -72
  334. data/spec/spec/runner/empty_file.txt +0 -0
  335. data/spec/spec/runner/example_group_runner_spec.rb +26 -0
  336. data/spec/spec/runner/examples.txt +2 -0
  337. data/spec/spec/runner/failed.txt +3 -0
  338. data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  339. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  340. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  341. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
  342. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  343. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  344. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  345. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  346. data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
  347. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
  348. data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  349. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
  350. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
  351. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
  352. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  353. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  354. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  355. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  356. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  357. data/spec/spec/runner/heckle_runner_spec.rb +32 -17
  358. data/spec/spec/runner/heckler_spec.rb +17 -11
  359. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  360. data/spec/spec/runner/line_number_query_spec.rb +129 -0
  361. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
  362. data/spec/spec/runner/option_parser_spec.rb +367 -164
  363. data/spec/spec/runner/options_spec.rb +506 -94
  364. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  365. data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  366. data/spec/spec/runner/output_one_time_spec.rb +15 -0
  367. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
  368. data/spec/spec/runner/reporter_spec.rb +212 -121
  369. data/spec/spec/runner/resources/a_bar.rb +0 -0
  370. data/spec/spec/runner/resources/a_foo.rb +0 -0
  371. data/spec/spec/runner/resources/a_spec.rb +1 -0
  372. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  373. data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  374. data/spec/spec/runner/spec.opts +2 -0
  375. data/spec/spec/runner/spec_drb.opts +2 -0
  376. data/spec/spec/runner/spec_spaced.opts +2 -0
  377. data/spec/spec/runner_spec.rb +13 -0
  378. data/spec/spec.opts +6 -0
  379. data/spec/spec_helper.rb +87 -45
  380. data/spec/support/macros.rb +29 -0
  381. data/spec/{spec → support}/spec_classes.rb +26 -4
  382. metadata +461 -141
  383. data/CHANGES +0 -748
  384. data/EXAMPLES.rd +0 -108
  385. data/README +0 -70
  386. data/UPGRADE +0 -31
  387. data/bin/spec_translator +0 -8
  388. data/examples/auto_spec_description_example.rb +0 -19
  389. data/examples/before_and_after_example.rb +0 -39
  390. data/examples/behave_as_example.rb +0 -45
  391. data/examples/dynamic_spec.rb +0 -9
  392. data/examples/helper_method_example.rb +0 -11
  393. data/examples/legacy_spec.rb +0 -10
  394. data/examples/not_yet_implemented_spec.rb +0 -12
  395. data/examples/priority.txt +0 -1
  396. data/examples/spec_helper.rb +0 -1
  397. data/examples/test_case_adapter_example.rb +0 -26
  398. data/examples/test_case_spec.rb +0 -65
  399. data/lib/spec/dsl/behaviour.rb +0 -204
  400. data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
  401. data/lib/spec/dsl/behaviour_eval.rb +0 -177
  402. data/lib/spec/dsl/behaviour_factory.rb +0 -42
  403. data/lib/spec/dsl/composite_proc_builder.rb +0 -28
  404. data/lib/spec/dsl/configuration.rb +0 -119
  405. data/lib/spec/dsl/description.rb +0 -46
  406. data/lib/spec/dsl/example.rb +0 -127
  407. data/lib/spec/dsl/example_matcher.rb +0 -28
  408. data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
  409. data/lib/spec/expectations/differs/default.rb +0 -61
  410. data/lib/spec/expectations/extensions/object.rb +0 -66
  411. data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  412. data/lib/spec/extensions/object.rb +0 -6
  413. data/lib/spec/extensions.rb +0 -1
  414. data/lib/spec/matchers/raise_error.rb +0 -100
  415. data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
  416. data/lib/spec/mocks/spec_methods.rb +0 -30
  417. data/lib/spec/runner/behaviour_runner.rb +0 -102
  418. data/lib/spec/runner/extensions/object.rb +0 -32
  419. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
  420. data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
  421. data/lib/spec/runner/formatter.rb +0 -9
  422. data/lib/spec/runner/spec_parser.rb +0 -50
  423. data/lib/spec/test_case_adapter.rb +0 -10
  424. data/lib/spec/translator.rb +0 -106
  425. data/plugins/mock_frameworks/flexmock.rb +0 -27
  426. data/plugins/mock_frameworks/rspec.rb +0 -18
  427. data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
  428. data/spec/spec/dsl/behaviour_spec.rb +0 -604
  429. data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
  430. data/spec/spec/dsl/configuration_spec.rb +0 -50
  431. data/spec/spec/dsl/description_spec.rb +0 -81
  432. data/spec/spec/dsl/example_class_spec.rb +0 -24
  433. data/spec/spec/dsl/example_instance_spec.rb +0 -162
  434. data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
  435. data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
  436. data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
  437. data/spec/spec/matchers/handler_spec.rb +0 -88
  438. data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
  439. data/spec/spec/matchers/raise_error_spec.rb +0 -147
  440. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
  441. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
  442. data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
  443. data/spec/spec/runner/context_matching_spec.rb +0 -27
  444. data/spec/spec/runner/execution_context_spec.rb +0 -31
  445. data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
  446. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
  447. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
  448. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
  449. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
  450. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
  451. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
  452. data/spec/spec/runner/object_ext_spec.rb +0 -11
  453. data/spec/spec/runner/spec_matcher_spec.rb +0 -102
  454. data/spec/spec/runner/spec_parser_spec.rb +0 -93
  455. data/spec/spec/translator_spec.rb +0 -216
  456. /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
@@ -0,0 +1,345 @@
1
+ require 'spec_helper'
2
+
3
+ describe "should raise_exception" do
4
+ it "should pass if anything is raised" do
5
+ lambda {raise}.should raise_exception
6
+ end
7
+
8
+ it "should fail if nothing is raised" do
9
+ lambda {
10
+ lambda {}.should raise_exception
11
+ }.should fail_with("expected Exception but nothing was raised")
12
+ end
13
+ end
14
+
15
+ describe "should raise_error" do
16
+ it "should pass if anything is raised" do
17
+ lambda {raise}.should raise_error
18
+ end
19
+
20
+ it "should fail if nothing is raised" do
21
+ lambda {
22
+ lambda {}.should raise_error
23
+ }.should fail_with("expected Exception but nothing was raised")
24
+ end
25
+ end
26
+
27
+ describe "should raise_exception {|e| ... }" do
28
+ it "passes if there is an exception" do
29
+ ran = false
30
+ lambda { non_existent_method }.should raise_exception {|e|
31
+ ran = true
32
+ }
33
+ ran.should be_true
34
+ end
35
+
36
+ it "passes the exception to the block" do
37
+ exception = nil
38
+ lambda { non_existent_method }.should raise_exception {|e|
39
+ exception = e
40
+ }
41
+ exception.should be_kind_of(NameError)
42
+ end
43
+ end
44
+
45
+ describe "should_not raise_exception" do
46
+ it "should pass if nothing is raised" do
47
+ lambda {}.should_not raise_exception
48
+ end
49
+
50
+ it "should fail if anything is raised" do
51
+ lambda {
52
+ lambda {raise}.should_not raise_exception
53
+ }.should fail_with("expected no Exception, got RuntimeError")
54
+ end
55
+ end
56
+
57
+ describe "should raise_exception(message)" do
58
+ it "should pass if RuntimeError is raised with the right message" do
59
+ lambda {raise 'blah'}.should raise_exception('blah')
60
+ end
61
+ it "should pass if RuntimeError is raised with a matching message" do
62
+ lambda {raise 'blah'}.should raise_exception(/blah/)
63
+ end
64
+ it "should pass if any other exception is raised with the right message" do
65
+ lambda {raise NameError.new('blah')}.should raise_exception('blah')
66
+ end
67
+ it "should fail if RuntimeError exception is raised with the wrong message" do
68
+ lambda do
69
+ lambda {raise 'blarg'}.should raise_exception('blah')
70
+ end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
71
+ end
72
+ it "should fail if any other exception is raised with the wrong message" do
73
+ lambda do
74
+ lambda {raise NameError.new('blarg')}.should raise_exception('blah')
75
+ end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
76
+ end
77
+ end
78
+
79
+ describe "should_not raise_exception(message)" do
80
+ it "should pass if RuntimeError exception is raised with the different message" do
81
+ lambda {raise 'blarg'}.should_not raise_exception('blah')
82
+ end
83
+ it "should pass if any other exception is raised with the wrong message" do
84
+ lambda {raise NameError.new('blarg')}.should_not raise_exception('blah')
85
+ end
86
+ it "should fail if RuntimeError is raised with message" do
87
+ lambda do
88
+ lambda {raise 'blah'}.should_not raise_exception('blah')
89
+ end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
90
+ end
91
+ it "should fail if any other exception is raised with message" do
92
+ lambda do
93
+ lambda {raise NameError.new('blah')}.should_not raise_exception('blah')
94
+ end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
95
+ end
96
+ end
97
+
98
+ describe "should raise_exception(NamedError)" do
99
+ it "should pass if named exception is raised" do
100
+ lambda { non_existent_method }.should raise_exception(NameError)
101
+ end
102
+
103
+ it "should fail if nothing is raised" do
104
+ lambda {
105
+ lambda { }.should raise_exception(NameError)
106
+ }.should fail_with("expected NameError but nothing was raised")
107
+ end
108
+
109
+ it "should fail if another exception is raised (NameError)" do
110
+ lambda {
111
+ lambda { raise }.should raise_exception(NameError)
112
+ }.should fail_with("expected NameError, got RuntimeError")
113
+ end
114
+
115
+ it "should fail if another exception is raised (NameError)" do
116
+ lambda {
117
+ lambda { load "non/existent/file" }.should raise_exception(NameError)
118
+ }.should fail_with(/expected NameError, got #<LoadError/)
119
+ end
120
+ end
121
+
122
+ describe "should_not raise_exception(NamedError)" do
123
+ it "should pass if nothing is raised" do
124
+ lambda { }.should_not raise_exception(NameError)
125
+ end
126
+
127
+ it "should pass if another exception is raised" do
128
+ lambda { raise }.should_not raise_exception(NameError)
129
+ end
130
+
131
+ it "should fail if named exception is raised" do
132
+ lambda {
133
+ lambda { 1 + 'b' }.should_not raise_exception(TypeError)
134
+ }.should fail_with(/expected no TypeError, got #<TypeError: String can't be/)
135
+ end
136
+ end
137
+
138
+ describe "should raise_exception(NamedError, exception_message) with String" do
139
+ it "should pass if named exception is raised with same message" do
140
+ lambda { raise "example message" }.should raise_exception(RuntimeError, "example message")
141
+ end
142
+
143
+ it "should fail if nothing is raised" do
144
+ lambda {
145
+ lambda {}.should raise_exception(RuntimeError, "example message")
146
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
147
+ end
148
+
149
+ it "should fail if incorrect exception is raised" do
150
+ lambda {
151
+ lambda { raise }.should raise_exception(NameError, "example message")
152
+ }.should fail_with("expected NameError with \"example message\", got RuntimeError")
153
+ end
154
+
155
+ it "should fail if correct exception is raised with incorrect message" do
156
+ lambda {
157
+ lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, "example message")
158
+ }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
159
+ end
160
+ end
161
+
162
+ describe "should raise_exception(NamedError, exception_message) { |err| ... }" do
163
+ it "should yield exception if named exception is raised with same message" do
164
+ ran = false
165
+
166
+ lambda {
167
+ raise "example message"
168
+ }.should raise_exception(RuntimeError, "example message") { |err|
169
+ ran = true
170
+ err.class.should == RuntimeError
171
+ err.message.should == "example message"
172
+ }
173
+
174
+ ran.should == true
175
+ end
176
+
177
+ it "yielded block should be able to fail on it's own right" do
178
+ ran, passed = false, false
179
+
180
+ lambda {
181
+ lambda {
182
+ raise "example message"
183
+ }.should raise_exception(RuntimeError, "example message") { |err|
184
+ ran = true
185
+ 5.should == 4
186
+ passed = true
187
+ }
188
+ }.should fail_with(/expected: 4/m)
189
+
190
+ ran.should == true
191
+ passed.should == false
192
+ end
193
+
194
+ it "should NOT yield exception if no exception was thrown" do
195
+ ran = false
196
+
197
+ lambda {
198
+ lambda {}.should raise_exception(RuntimeError, "example message") { |err|
199
+ ran = true
200
+ }
201
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
202
+
203
+ ran.should == false
204
+ end
205
+
206
+ it "should not yield exception if exception class is not matched" do
207
+ ran = false
208
+
209
+ lambda {
210
+ lambda {
211
+ raise "example message"
212
+ }.should raise_exception(SyntaxError, "example message") { |err|
213
+ ran = true
214
+ }
215
+ }.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
216
+
217
+ ran.should == false
218
+ end
219
+
220
+ it "should NOT yield exception if exception message is not matched" do
221
+ ran = false
222
+
223
+ lambda {
224
+ lambda {
225
+ raise "example message"
226
+ }.should raise_exception(RuntimeError, "different message") { |err|
227
+ ran = true
228
+ }
229
+ }.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
230
+
231
+ ran.should == false
232
+ end
233
+ end
234
+
235
+ describe "should_not raise_exception(NamedError, exception_message) { |err| ... }" do
236
+ it "should pass if nothing is raised" do
237
+ ran = false
238
+
239
+ lambda {}.should_not raise_exception(RuntimeError, "example message") { |err|
240
+ ran = true
241
+ }
242
+
243
+ ran.should == false
244
+ end
245
+
246
+ it "should pass if a different exception is raised" do
247
+ ran = false
248
+
249
+ lambda { raise }.should_not raise_exception(NameError, "example message") { |err|
250
+ ran = true
251
+ }
252
+
253
+ ran.should == false
254
+ end
255
+
256
+ it "should pass if same exception is raised with different message" do
257
+ ran = false
258
+
259
+ lambda {
260
+ raise RuntimeError.new("not the example message")
261
+ }.should_not raise_exception(RuntimeError, "example message") { |err|
262
+ ran = true
263
+ }
264
+
265
+ ran.should == false
266
+ end
267
+
268
+ it "should fail if named exception is raised with same message" do
269
+ ran = false
270
+
271
+ lambda {
272
+ lambda {
273
+ raise "example message"
274
+ }.should_not raise_exception(RuntimeError, "example message") { |err|
275
+ ran = true
276
+ }
277
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
278
+
279
+ ran.should == false
280
+ end
281
+ end
282
+
283
+ describe "should_not raise_exception(NamedError, exception_message) with String" do
284
+ it "should pass if nothing is raised" do
285
+ lambda {}.should_not raise_exception(RuntimeError, "example message")
286
+ end
287
+
288
+ it "should pass if a different exception is raised" do
289
+ lambda { raise }.should_not raise_exception(NameError, "example message")
290
+ end
291
+
292
+ it "should pass if same exception is raised with different message" do
293
+ lambda { raise RuntimeError.new("not the example message") }.should_not raise_exception(RuntimeError, "example message")
294
+ end
295
+
296
+ it "should fail if named exception is raised with same message" do
297
+ lambda {
298
+ lambda { raise "example message" }.should_not raise_exception(RuntimeError, "example message")
299
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
300
+ end
301
+ end
302
+
303
+ describe "should raise_exception(NamedError, exception_message) with Regexp" do
304
+ it "should pass if named exception is raised with matching message" do
305
+ lambda { raise "example message" }.should raise_exception(RuntimeError, /ample mess/)
306
+ end
307
+
308
+ it "should fail if nothing is raised" do
309
+ lambda {
310
+ lambda {}.should raise_exception(RuntimeError, /ample mess/)
311
+ }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
312
+ end
313
+
314
+ it "should fail if incorrect exception is raised" do
315
+ lambda {
316
+ lambda { raise }.should raise_exception(NameError, /ample mess/)
317
+ }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
318
+ end
319
+
320
+ it "should fail if correct exception is raised with incorrect message" do
321
+ lambda {
322
+ lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, /less than ample mess/)
323
+ }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
324
+ end
325
+ end
326
+
327
+ describe "should_not raise_exception(NamedError, exception_message) with Regexp" do
328
+ it "should pass if nothing is raised" do
329
+ lambda {}.should_not raise_exception(RuntimeError, /ample mess/)
330
+ end
331
+
332
+ it "should pass if a different exception is raised" do
333
+ lambda { raise }.should_not raise_exception(NameError, /ample mess/)
334
+ end
335
+
336
+ it "should pass if same exception is raised with non-matching message" do
337
+ lambda { raise RuntimeError.new("non matching message") }.should_not raise_exception(RuntimeError, /ample mess/)
338
+ end
339
+
340
+ it "should fail if named exception is raised with matching message" do
341
+ lambda {
342
+ lambda { raise "example message" }.should_not raise_exception(RuntimeError, /ample mess/)
343
+ }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
344
+ end
345
+ end
@@ -1,54 +1,116 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "should respond_to(:sym)" do
4
4
 
5
- it "should pass if target responds to :sym" do
5
+ it "passes if target responds to :sym" do
6
6
  Object.new.should respond_to(:methods)
7
7
  end
8
8
 
9
- it "should fail target does not respond to :sym" do
9
+ it "fails if target does not respond to :sym" do
10
10
  lambda {
11
- Object.new.should respond_to(:some_method)
12
- }.should fail_with("expected target to respond to :some_method")
11
+ "this string".should respond_to(:some_method)
12
+ }.should fail_with(%q|expected "this string" to respond to :some_method|)
13
13
  end
14
14
 
15
15
  end
16
16
 
17
+ describe "should respond_to(:sym).with(1).argument" do
18
+ it "passes if target responds to :sym with 1 arg" do
19
+ obj = Object.new
20
+ def obj.foo(arg); end
21
+ obj.should respond_to(:foo).with(1).argument
22
+ end
23
+
24
+ it "fails if target does not respond to :sym" do
25
+ obj = Object.new
26
+ lambda {
27
+ obj.should respond_to(:some_method).with(1).argument
28
+ }.should fail_with(/expected .* to respond to :some_method/)
29
+ end
30
+
31
+ it "fails if :sym expects 0 args" do
32
+ obj = Object.new
33
+ def obj.foo; end
34
+ lambda {
35
+ obj.should respond_to(:foo).with(1).argument
36
+ }.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
37
+ end
38
+
39
+ it "fails if :sym expects 2 args" do
40
+ obj = Object.new
41
+ def obj.foo(arg, arg2); end
42
+ lambda {
43
+ obj.should respond_to(:foo).with(1).argument
44
+ }.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
45
+ end
46
+ end
47
+
17
48
  describe "should respond_to(message1, message2)" do
18
49
 
19
- it "should pass if target responds to both messages" do
50
+ it "passes if target responds to both messages" do
20
51
  Object.new.should respond_to('methods', 'inspect')
21
52
  end
22
53
 
23
- it "should fail target does not respond to first message" do
54
+ it "fails if target does not respond to first message" do
24
55
  lambda {
25
56
  Object.new.should respond_to('method_one', 'inspect')
26
- }.should fail_with('expected target to respond to "method_one"')
57
+ }.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
27
58
  end
28
59
 
29
- it "should fail target does not respond to second message" do
60
+ it "fails if target does not respond to second message" do
30
61
  lambda {
31
62
  Object.new.should respond_to('inspect', 'method_one')
32
- }.should fail_with('expected target to respond to "method_one"')
63
+ }.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
33
64
  end
34
65
 
35
- it "should fail target does not respond to either message" do
66
+ it "fails if target does not respond to either message" do
36
67
  lambda {
37
68
  Object.new.should respond_to('method_one', 'method_two')
38
- }.should fail_with('expected target to respond to "method_one", "method_two"')
69
+ }.should fail_with(/expected #<Object:.*> to respond to "method_one", "method_two"/)
70
+ end
71
+ end
72
+
73
+ describe "should respond_to(:sym).with(2).arguments" do
74
+ it "passes if target responds to :sym with 2 args" do
75
+ obj = Object.new
76
+ def obj.foo(a1, a2); end
77
+ obj.should respond_to(:foo).with(2).arguments
78
+ end
79
+
80
+ it "fails if target does not respond to :sym" do
81
+ obj = Object.new
82
+ lambda {
83
+ obj.should respond_to(:some_method).with(2).arguments
84
+ }.should fail_with(/expected .* to respond to :some_method/)
85
+ end
86
+
87
+ it "fails if :sym expects 0 args" do
88
+ obj = Object.new
89
+ def obj.foo; end
90
+ lambda {
91
+ obj.should respond_to(:foo).with(2).arguments
92
+ }.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
93
+ end
94
+
95
+ it "fails if :sym expects 2 args" do
96
+ obj = Object.new
97
+ def obj.foo(arg); end
98
+ lambda {
99
+ obj.should respond_to(:foo).with(2).arguments
100
+ }.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
39
101
  end
40
102
  end
41
103
 
42
104
  describe "should_not respond_to(:sym)" do
43
105
 
44
- it "should pass if target does not respond to :sym" do
106
+ it "passes if target does not respond to :sym" do
45
107
  Object.new.should_not respond_to(:some_method)
46
108
  end
47
109
 
48
- it "should fail target responds to :sym" do
110
+ it "fails if target responds to :sym" do
49
111
  lambda {
50
112
  Object.new.should_not respond_to(:methods)
51
- }.should fail_with("expected target not to respond to :methods")
113
+ }.should fail_with(/expected #<Object:.*> not to respond to :methods/)
52
114
  end
53
115
 
54
- end
116
+ end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "should satisfy { block }" do
4
4
  it "should pass if block returns true" do
@@ -0,0 +1,100 @@
1
+ require 'spec_helper'
2
+
3
+ module Spec
4
+ module Matchers
5
+ describe SimpleMatcher do
6
+ before { Spec.stub(:deprecate) }
7
+
8
+ it "is deprecated" do
9
+ Spec.should_receive(:deprecate)
10
+ simple_matcher("foo") {}
11
+ end
12
+
13
+ it "should pass match arg to block" do
14
+ actual = nil
15
+ matcher = simple_matcher("message") do |given| actual = given end
16
+ matcher.matches?("foo")
17
+ actual.should == "foo"
18
+ end
19
+
20
+ it "should provide a stock failure message" do
21
+ matcher = simple_matcher("thing") do end
22
+ matcher.matches?("other")
23
+ matcher.failure_message.should =~ /expected \"thing\" but got \"other\"/
24
+ end
25
+
26
+ it "should provide a stock negative failure message" do
27
+ matcher = simple_matcher("thing") do end
28
+ matcher.matches?("other")
29
+ matcher.negative_failure_message.should =~ /expected not to get \"thing\", but got \"other\"/
30
+ end
31
+
32
+ it "should provide the given description" do
33
+ matcher = simple_matcher("thing") do end
34
+ matcher.description.should =="thing"
35
+ end
36
+
37
+ it "should fail if a wrapped 'should' fails" do
38
+ matcher = simple_matcher("should fail") do
39
+ 2.should == 3
40
+ end
41
+ lambda do
42
+ matcher.matches?("anything").should be_true
43
+ end.should fail_with(/expected: 3/)
44
+ end
45
+
46
+ describe "with arity of 2" do
47
+ it "should provide the matcher so you can access its messages" do
48
+ provided_matcher = nil
49
+ matcher = simple_matcher("thing") do |given, matcher|
50
+ provided_matcher = matcher
51
+ end
52
+ matcher.matches?("anything")
53
+ provided_matcher.should equal(matcher)
54
+ end
55
+
56
+ it "should support a custom failure message" do
57
+ matcher = simple_matcher("thing") do |given, matcher|
58
+ matcher.failure_message = "custom message"
59
+ end
60
+ matcher.matches?("other")
61
+ matcher.failure_message.should == "custom message"
62
+ end
63
+
64
+ it "should complain when asked for a failure message if you don't give it a description or a message" do
65
+ matcher = simple_matcher do |given, matcher| end
66
+ matcher.matches?("other")
67
+ matcher.failure_message.should =~ /No description provided/
68
+ end
69
+
70
+ it "should support a custom negative failure message" do
71
+ matcher = simple_matcher("thing") do |given, matcher|
72
+ matcher.negative_failure_message = "custom message"
73
+ end
74
+ matcher.matches?("other")
75
+ matcher.negative_failure_message.should == "custom message"
76
+ end
77
+
78
+ it "should complain when asked for a negative failure message if you don't give it a description or a message" do
79
+ matcher = simple_matcher do |given, matcher| end
80
+ matcher.matches?("other")
81
+ matcher.negative_failure_message.should =~ /No description provided/
82
+ end
83
+
84
+ it "should support a custom description" do
85
+ matcher = simple_matcher("thing") do |given, matcher|
86
+ matcher.description = "custom message"
87
+ end
88
+ matcher.matches?("description")
89
+ matcher.description.should == "custom message"
90
+ end
91
+
92
+ it "should tell you no description was provided when it doesn't receive one" do
93
+ matcher = simple_matcher do end
94
+ matcher.description.should =~ /No description provided/
95
+ end
96
+ end
97
+
98
+ end
99
+ end
100
+ end