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,115 @@
1
+ require 'spec_helper'
2
+
3
+ class UnsortableObject
4
+ def initialize(id)
5
+ @id = id
6
+ end
7
+
8
+ def inspect
9
+ @id.to_s
10
+ end
11
+
12
+ def ==(other)
13
+ false
14
+ end
15
+ end
16
+
17
+ describe "array.should =~ other_array" do
18
+ it "should pass if target contains all items" do
19
+ [1,2,3].should =~ [1,2,3]
20
+ end
21
+
22
+ it "should pass if target contains all items out of order" do
23
+ [1,3,2].should =~ [1,2,3]
24
+ end
25
+
26
+ it "should fail if target includes extra items" do
27
+ lambda {
28
+ [1,2,3,4].should =~ [1,2,3]
29
+ }.should fail_with(<<-MESSAGE)
30
+ expected collection contained: [1, 2, 3]
31
+ actual collection contained: [1, 2, 3, 4]
32
+ the extra elements were: [4]
33
+ MESSAGE
34
+ end
35
+
36
+ it "should fail if target is missing items" do
37
+ lambda {
38
+ [1,2].should =~ [1,2,3]
39
+ }.should fail_with(<<-MESSAGE)
40
+ expected collection contained: [1, 2, 3]
41
+ actual collection contained: [1, 2]
42
+ the missing elements were: [3]
43
+ MESSAGE
44
+ end
45
+
46
+ it "should fail if target is missing items and has extra items" do
47
+
48
+ lambda {
49
+ [1,2,4].should =~ [1,2,3]
50
+ }.should fail_with(<<-MESSAGE)
51
+ expected collection contained: [1, 2, 3]
52
+ actual collection contained: [1, 2, 4]
53
+ the missing elements were: [3]
54
+ the extra elements were: [4]
55
+ MESSAGE
56
+ end
57
+
58
+ it "should sort items in the error message if they all respond to <=>" do
59
+ lambda {
60
+ [6,2,1,5].should =~ [4,1,2,3]
61
+ }.should fail_with(<<-MESSAGE)
62
+ expected collection contained: [1, 2, 3, 4]
63
+ actual collection contained: [1, 2, 5, 6]
64
+ the missing elements were: [3, 4]
65
+ the extra elements were: [5, 6]
66
+ MESSAGE
67
+ end
68
+
69
+ it "should not sort items in the error message if they don't all respond to <=>" do
70
+ with_ruby 1.8 do
71
+ lambda {
72
+ [UnsortableObject.new(2), UnsortableObject.new(1)].should =~ [UnsortableObject.new(4), UnsortableObject.new(3)]
73
+ }.should fail_with(<<-MESSAGE)
74
+ expected collection contained: [4, 3]
75
+ actual collection contained: [2, 1]
76
+ the missing elements were: [4, 3]
77
+ the extra elements were: [2, 1]
78
+ MESSAGE
79
+ end
80
+ end
81
+
82
+ it "should accurately report extra elements when there are duplicates" do
83
+ lambda {
84
+ [1,1,1,5].should =~ [1,5]
85
+ }.should fail_with(<<-MESSAGE)
86
+ expected collection contained: [1, 5]
87
+ actual collection contained: [1, 1, 1, 5]
88
+ the extra elements were: [1, 1]
89
+ MESSAGE
90
+ end
91
+
92
+ it "should accurately report missing elements when there are duplicates" do
93
+ lambda {
94
+ [1,5].should =~ [1,1,5]
95
+ }.should fail_with(<<-MESSAGE)
96
+ expected collection contained: [1, 1, 5]
97
+ actual collection contained: [1, 5]
98
+ the missing elements were: [1]
99
+ MESSAGE
100
+ end
101
+
102
+ it "should work with subclasses of Array" do
103
+ class SuperArray < Array; end
104
+ SuperArray.new([1,2,3]).should =~ SuperArray.new([3,2,1])
105
+ end
106
+
107
+ end
108
+
109
+ describe "should_not =~ [:with, :multiple, :args]" do
110
+ it "should not be supported" do
111
+ lambda {
112
+ [1,2,3].should_not =~ [1,2,3]
113
+ }.should fail_with(/Matcher does not support should_not/)
114
+ end
115
+ end
@@ -1,37 +1,57 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "should match(expected)" do
4
4
  it "should pass when target (String) matches expected (Regexp)" do
5
5
  "string".should match(/tri/)
6
6
  end
7
7
 
8
- it "should fail when target (String) matches expected (Regexp)" do
8
+ it "should pass when target (String) matches expected (String)" do
9
+ "string".should match("tri")
10
+ end
11
+
12
+ it "should fail when target (String) does not match expected (Regexp)" do
9
13
  lambda {
10
14
  "string".should match(/rings/)
11
15
  }.should fail
12
16
  end
13
17
 
18
+ it "should fail when target (String) does not match expected (String)" do
19
+ lambda {
20
+ "string".should match("rings")
21
+ }.should fail
22
+ end
23
+
14
24
  it "should provide message, expected and actual on failure" do
15
25
  matcher = match(/rings/)
16
26
  matcher.matches?("string")
17
- matcher.failure_message.should == ["expected \"string\" to match /rings/", /rings/, "string"]
27
+ matcher.failure_message_for_should.should == "expected \"string\" to match /rings/"
18
28
  end
19
29
  end
20
30
 
21
31
  describe "should_not match(expected)" do
22
- it "should pass when target (String) matches expected (Regexp)" do
32
+ it "should pass when target (String) matches does not match (Regexp)" do
23
33
  "string".should_not match(/rings/)
24
34
  end
25
35
 
36
+ it "should pass when target (String) matches does not match (String)" do
37
+ "string".should_not match("rings")
38
+ end
39
+
26
40
  it "should fail when target (String) matches expected (Regexp)" do
27
41
  lambda {
28
42
  "string".should_not match(/tri/)
29
43
  }.should fail
30
44
  end
31
45
 
46
+ it "should fail when target (String) matches expected (String)" do
47
+ lambda {
48
+ "string".should_not match("tri")
49
+ }.should fail
50
+ end
51
+
32
52
  it "should provide message, expected and actual on failure" do
33
53
  matcher = match(/tri/)
34
54
  matcher.matches?("string")
35
- matcher.negative_failure_message.should == ["expected \"string\" not to match /tri/", /tri/, "string"]
55
+ matcher.failure_message_for_should_not.should == "expected \"string\" not to match /tri/"
36
56
  end
37
57
  end
@@ -0,0 +1,289 @@
1
+ require 'spec_helper'
2
+
3
+ class UnexpectedError < StandardError; end
4
+
5
+ module Spec
6
+ module Matchers
7
+ describe Matcher do
8
+ context "without overrides" do
9
+ before(:each) do
10
+ @matcher = Spec::Matchers::Matcher.new(:be_a_multiple_of, 3) do |multiple|
11
+ match do |actual|
12
+ actual % multiple == 0
13
+ end
14
+ end
15
+ end
16
+
17
+ it "provides a default description" do
18
+ @matcher.description.should == "be a multiple of 3"
19
+ end
20
+
21
+ it "provides a default failure message for #should" do
22
+ @matcher.matches?(8)
23
+ @matcher.failure_message_for_should.should == "expected 8 to be a multiple of 3"
24
+ end
25
+
26
+ it "provides a default failure message for #should_not" do
27
+ @matcher.matches?(9)
28
+ @matcher.failure_message_for_should_not.should == "expected 9 not to be a multiple of 3"
29
+ end
30
+ end
31
+
32
+ it "is not diffable by default" do
33
+ matcher = Spec::Matchers::Matcher.new(:name) {}
34
+ matcher.should_not be_diffable
35
+ end
36
+
37
+ it "is diffable when told to be" do
38
+ matcher = Spec::Matchers::Matcher.new(:name) { diffable }
39
+ matcher.should be_diffable
40
+ end
41
+
42
+ it "provides expected" do
43
+ matcher = Spec::Matchers::Matcher.new(:name, 'expected string') {}
44
+ matcher.expected.should == ['expected string']
45
+ end
46
+
47
+ it "provides actual" do
48
+ matcher = Spec::Matchers::Matcher.new(:name, 'expected string') do
49
+ match {|actual|}
50
+ end
51
+
52
+ matcher.matches?('actual string')
53
+
54
+ matcher.actual.should == 'actual string'
55
+ end
56
+
57
+ context "wrapping another expectation (should == ...)" do
58
+ it "returns true if the wrapped expectation passes" do
59
+ matcher = Spec::Matchers::Matcher.new(:name, 'value') do |expected|
60
+ match do |actual|
61
+ actual.should == expected
62
+ end
63
+ end
64
+ matcher.matches?('value').should be_true
65
+ end
66
+
67
+ it "returns false if the wrapped expectation fails" do
68
+ matcher = Spec::Matchers::Matcher.new(:name, 'value') do |expected|
69
+ match do |actual|
70
+ actual.should == expected
71
+ end
72
+ end
73
+ matcher.matches?('other value').should be_false
74
+ end
75
+ end
76
+
77
+ context "with overrides" do
78
+ before(:each) do
79
+ @matcher = Spec::Matchers::Matcher.new(:be_boolean, true) do |boolean|
80
+ match do |actual|
81
+ actual
82
+ end
83
+ description do
84
+ "be the boolean #{boolean}"
85
+ end
86
+ failure_message_for_should do |actual|
87
+ "expected #{actual} to be the boolean #{boolean}"
88
+ end
89
+ failure_message_for_should_not do |actual|
90
+ "expected #{actual} not to be the boolean #{boolean}"
91
+ end
92
+ end
93
+ end
94
+
95
+ it "does not hide result of match block when true" do
96
+ @matcher.matches?(true).should be_true
97
+ end
98
+
99
+ it "does not hide result of match block when false" do
100
+ @matcher.matches?(false).should be_false
101
+ end
102
+
103
+ it "overrides the description" do
104
+ @matcher.description.should == "be the boolean true"
105
+ end
106
+
107
+ it "overrides the failure message for #should" do
108
+ @matcher.matches?(false)
109
+ @matcher.failure_message_for_should.should == "expected false to be the boolean true"
110
+ end
111
+
112
+ it "overrides the failure message for #should_not" do
113
+ @matcher.matches?(true)
114
+ @matcher.failure_message_for_should_not.should == "expected true not to be the boolean true"
115
+ end
116
+ end
117
+
118
+ context "#new" do
119
+ it "passes matches? arg to match block" do
120
+ matcher = Spec::Matchers::Matcher.new(:ignore) do
121
+ match do |actual|
122
+ actual == 5
123
+ end
124
+ end
125
+ matcher.matches?(5).should be_true
126
+ end
127
+
128
+ it "exposes arg submitted through #new to matcher block" do
129
+ matcher = Spec::Matchers::Matcher.new(:ignore, 4) do |expected|
130
+ match do |actual|
131
+ actual > expected
132
+ end
133
+ end
134
+ matcher.matches?(5).should be_true
135
+ end
136
+ end
137
+
138
+ context "with no args" do
139
+ before(:each) do
140
+ @matcher = Spec::Matchers::Matcher.new(:matcher_name) do
141
+ match do |actual|
142
+ actual == 5
143
+ end
144
+ end
145
+ end
146
+
147
+ it "matches" do
148
+ @matcher.matches?(5).should be_true
149
+ end
150
+
151
+ it "describes" do
152
+ @matcher.description.should == "matcher name"
153
+ end
154
+ end
155
+
156
+ context "with 1 arg" do
157
+ before(:each) do
158
+ @matcher = Spec::Matchers::Matcher.new(:matcher_name, 1) do |expected|
159
+ match do |actual|
160
+ actual == 5 && expected == 1
161
+ end
162
+ end
163
+ end
164
+
165
+ it "matches" do
166
+ @matcher.matches?(5).should be_true
167
+ end
168
+
169
+ it "describes" do
170
+ @matcher.description.should == "matcher name 1"
171
+ end
172
+ end
173
+
174
+ context "with multiple args" do
175
+ before(:each) do
176
+ @matcher = Spec::Matchers::Matcher.new(:matcher_name, 1, 2, 3, 4) do |a,b,c,d|
177
+ match do |sum|
178
+ a + b + c + d == sum
179
+ end
180
+ end
181
+ end
182
+
183
+ it "matches" do
184
+ @matcher.matches?(10).should be_true
185
+ end
186
+
187
+ it "describes" do
188
+ @matcher.description.should == "matcher name 1, 2, 3, and 4"
189
+ end
190
+ end
191
+
192
+ it "supports helper methods" do
193
+ matcher = Spec::Matchers::Matcher.new(:be_similar_to, [1,2,3]) do |sample|
194
+ match do |actual|
195
+ similar?(sample, actual)
196
+ end
197
+
198
+ def similar?(a, b)
199
+ a.sort == b.sort
200
+ end
201
+ end
202
+
203
+ matcher.matches?([2,3,1]).should be_true
204
+ end
205
+
206
+ it "supports fluent interface" do
207
+ matcher = Spec::Matchers::Matcher.new(:first_word) do
208
+ def second_word
209
+ self
210
+ end
211
+ end
212
+
213
+ matcher.second_word.should == matcher
214
+ end
215
+
216
+ it "treats method missing normally for undeclared methods" do
217
+ matcher = Spec::Matchers::Matcher.new(:ignore) { }
218
+ expect { matcher.non_existent_method }.to raise_error(NoMethodError)
219
+ end
220
+
221
+ it "has access to other matchers" do
222
+ matcher = Spec::Matchers::Matcher.new(:ignore, 3) do |expected|
223
+ match do |actual|
224
+ extend Spec::Matchers
225
+ actual.should eql(5 + expected)
226
+ end
227
+ end
228
+
229
+ matcher.matches?(8).should be_true
230
+ end
231
+
232
+ describe "#match_unless_raises" do
233
+ context "with a passing assertion" do
234
+ let(:mod) do
235
+ Module.new do
236
+ def assert_equal(a,b)
237
+ a == b ? nil : (raise UnexpectedError.new("#{a} does not equal #{b}"))
238
+ end
239
+ end
240
+ end
241
+ let(:matcher) do
242
+ m = mod
243
+ Spec::Matchers::Matcher.new :equal, 4 do |expected|
244
+ extend m
245
+ match_unless_raises UnexpectedError do
246
+ assert_equal expected, actual
247
+ end
248
+ end
249
+ end
250
+ it "passes as you would expect" do
251
+ matcher.matches?(4).should be_true
252
+ end
253
+ it "fails as you would expect" do
254
+ matcher.matches?(5).should be_false
255
+ end
256
+ end
257
+
258
+ context "with an unexpected error" do
259
+ let(:matcher) do
260
+ Spec::Matchers::Matcher.new :foo, :bar do |expected|
261
+ match_unless_raises SyntaxError do |actual|
262
+ raise "unexpected exception"
263
+ end
264
+ end
265
+ end
266
+
267
+ it "raises the error" do
268
+ expect do
269
+ matcher.matches?(:bar)
270
+ end.to raise_error("unexpected exception")
271
+ end
272
+ end
273
+
274
+ end
275
+
276
+ it "can define chainable methods" do
277
+ matcher = Spec::Matchers::Matcher.new(:name) do
278
+ chain(:expecting) do |expected_value|
279
+ @expected_value = expected_value
280
+ end
281
+ match { |actual| actual == @expected_value }
282
+ end
283
+
284
+ matcher.expecting('value').matches?('value').should be_true
285
+ matcher.expecting('value').matches?('other value').should be_false
286
+ end
287
+ end
288
+ end
289
+ end
@@ -0,0 +1,2 @@
1
+ require 'spec_helper'
2
+
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
1
+ require 'spec_helper'
2
2
 
3
- require 'spec/expectations/differs/default'
3
+ require 'spec/runner/differs/default'
4
4
 
5
5
  describe "should ==" do
6
6
 
@@ -10,12 +10,17 @@ describe "should ==" do
10
10
  subject.should == "apple"
11
11
  end
12
12
 
13
+ it "should return true on success" do
14
+ subject = "apple"
15
+ (subject.should == "apple").should be_true
16
+ end
17
+
13
18
  it "should fail when target.==(actual) returns false" do
14
19
  subject = "apple"
15
- Spec::Expectations.should_receive(:fail_with).with(%[expected "orange", got "apple" (using ==)], "orange", "apple")
20
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ==)], "orange", "apple")
16
21
  subject.should == "orange"
17
22
  end
18
-
23
+
19
24
  end
20
25
 
21
26
  describe "should_not ==" do
@@ -26,12 +31,17 @@ describe "should_not ==" do
26
31
  subject.should_not == "apple"
27
32
  end
28
33
 
34
+ it "should return true on success" do
35
+ subject = "apple"
36
+ (subject.should_not == "orange").should be_false
37
+ end
38
+
29
39
  it "should fail when target.==(actual) returns false" do
30
40
  subject = "apple"
31
- Spec::Expectations.should_receive(:fail_with).with(%[expected not == "apple", got "apple"], "apple", "apple")
41
+ Spec::Expectations.should_receive(:fail_with).with(%[expected not: == "apple",\n got: "apple"], "apple", "apple")
32
42
  subject.should_not == "apple"
33
43
  end
34
-
44
+
35
45
  end
36
46
 
37
47
  describe "should ===" do
@@ -45,10 +55,10 @@ describe "should ===" do
45
55
  it "should fail when target.===(actual) returns false" do
46
56
  subject = "apple"
47
57
  subject.should_receive(:===).with("orange").and_return(false)
48
- Spec::Expectations.should_receive(:fail_with).with(%[expected "orange", got "apple" (using ===)], "orange", "apple")
58
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
49
59
  subject.should === "orange"
50
60
  end
51
-
61
+
52
62
  end
53
63
 
54
64
  describe "should_not ===" do
@@ -62,7 +72,7 @@ describe "should_not ===" do
62
72
  it "should fail when target.===(actual) returns false" do
63
73
  subject = "apple"
64
74
  subject.should_receive(:===).with("apple").and_return(true)
65
- Spec::Expectations.should_receive(:fail_with).with(%[expected not === "apple", got "apple"], "apple", "apple")
75
+ Spec::Expectations.should_receive(:fail_with).with(%[expected not: === "apple",\n got: "apple"], "apple", "apple")
66
76
  subject.should_not === "apple"
67
77
  end
68
78
 
@@ -79,7 +89,7 @@ describe "should =~" do
79
89
  it "should fail when target.=~(actual) returns false" do
80
90
  subject = "fu"
81
91
  subject.should_receive(:=~).with(/oo/).and_return(false)
82
- Spec::Expectations.should_receive(:fail_with).with(%[expected =~ /oo/, got "fu"], /oo/, "fu")
92
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: /oo/,\n got: "fu" (using =~)], /oo/, "fu")
83
93
  subject.should =~ /oo/
84
94
  end
85
95
 
@@ -96,7 +106,7 @@ describe "should_not =~" do
96
106
  it "should fail when target.=~(actual) returns false" do
97
107
  subject = "foo"
98
108
  subject.should_receive(:=~).with(/oo/).and_return(true)
99
- Spec::Expectations.should_receive(:fail_with).with(%[expected not =~ /oo/, got "foo"], /oo/, "foo")
109
+ Spec::Expectations.should_receive(:fail_with).with(%[expected not: =~ /oo/,\n got: "foo"], /oo/, "foo")
100
110
  subject.should_not =~ /oo/
101
111
  end
102
112
 
@@ -109,7 +119,7 @@ describe "should >" do
109
119
  end
110
120
 
111
121
  it "should fail if > fails" do
112
- Spec::Expectations.should_receive(:fail_with).with(%[expected > 5, got 4], 5, 4)
122
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: > 5,\n got: 4], 5, 4)
113
123
  4.should > 5
114
124
  end
115
125
 
@@ -123,7 +133,7 @@ describe "should >=" do
123
133
  end
124
134
 
125
135
  it "should fail if > fails" do
126
- Spec::Expectations.should_receive(:fail_with).with(%[expected >= 5, got 4], 5, 4)
136
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: >= 5,\n got: 4], 5, 4)
127
137
  4.should >= 5
128
138
  end
129
139
 
@@ -136,7 +146,7 @@ describe "should <" do
136
146
  end
137
147
 
138
148
  it "should fail if > fails" do
139
- Spec::Expectations.should_receive(:fail_with).with(%[expected < 3, got 4], 3, 4)
149
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: < 3,\n got: 4], 3, 4)
140
150
  4.should < 3
141
151
  end
142
152
 
@@ -150,9 +160,32 @@ describe "should <=" do
150
160
  end
151
161
 
152
162
  it "should fail if > fails" do
153
- Spec::Expectations.should_receive(:fail_with).with(%[expected <= 3, got 4], 3, 4)
163
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: <= 3,\n got: 4], 3, 4)
154
164
  4.should <= 3
155
165
  end
156
166
 
157
167
  end
158
168
 
169
+ describe Spec::Matchers::PositiveOperatorMatcher do
170
+
171
+ it "should work when the target has implemented #send" do
172
+ o = Object.new
173
+ def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
174
+ lambda {
175
+ o.should == o
176
+ }.should_not raise_error
177
+ end
178
+
179
+ end
180
+
181
+ describe Spec::Matchers::NegativeOperatorMatcher do
182
+
183
+ it "should work when the target has implemented #send" do
184
+ o = Object.new
185
+ def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
186
+ lambda {
187
+ o.should_not == :foo
188
+ }.should_not raise_error
189
+ end
190
+
191
+ end