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,84 @@
1
+ Feature: Spec and test together
2
+
3
+ As an RSpec adopter with existing Test::Unit tests
4
+ I want to run a few specs alongside my existing Test::Unit tests
5
+ So that I can experience a smooth, gradual migration path
6
+
7
+ Scenario Outline: Run specs and tests together
8
+ Given a file named "spec_and_test_together.rb" with:
9
+ """
10
+ require 'spec/autorun'
11
+ require 'spec/test/unit'
12
+
13
+ describe "An Example" do
14
+ it "should pass with assert" do
15
+ assert true
16
+ end
17
+
18
+ it "should fail with assert" do
19
+ assert false
20
+ end
21
+
22
+ it "should pass with should" do
23
+ 1.should == 1
24
+ end
25
+
26
+ it "should fail with should" do
27
+ 1.should == 2
28
+ end
29
+ end
30
+
31
+ class ATest < Test::Unit::TestCase
32
+ def test_should_pass_with_assert
33
+ assert true
34
+ end
35
+
36
+ def test_should_fail_with_assert
37
+ assert false
38
+ end
39
+
40
+ def test_should_pass_with_should
41
+ 1.should == 1
42
+ end
43
+
44
+ def test_should_fail_with_should
45
+ 1.should == 2
46
+ end
47
+
48
+ def setup
49
+ @from_setup ||= 3
50
+ @from_setup += 1
51
+ end
52
+
53
+ def test_should_fail_with_setup_method_variable
54
+ @from_setup.should == 40
55
+ end
56
+
57
+ before do
58
+ @from_before = @from_setup + 1
59
+ end
60
+
61
+ def test_should_fail_with_before_block_variable
62
+ @from_before.should == 50
63
+ end
64
+
65
+ define_method :"test: should run with strange name" do
66
+ assert true
67
+ end
68
+ end
69
+ """
70
+
71
+ When I run "<Command> spec_and_test_together.rb -fs"
72
+
73
+ Then the exit code should be 256
74
+ And the stdout should include "ATest"
75
+ And the stdout should include "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
76
+ And the stdout should include "'An Example should fail with should' FAILED"
77
+ And the stdout should include "11 examples, 6 failures"
78
+ And the stdout should include /expected: 40,\s*got: 4/m
79
+ And the stdout should include /expected: 50,\s*got: 5/m
80
+
81
+ Scenarios: run with ruby and spec
82
+ | Command |
83
+ | ruby |
84
+ | spec |
@@ -0,0 +1,25 @@
1
+ Feature: spec output
2
+
3
+ When running in interop mode with test/unit, RSpec will output
4
+ the RSpec summary, but not the test/unit summary.
5
+
6
+ Scenario Outline: Interop mode with test/unit
7
+ Given a file named "simple_spec.rb" with:
8
+ """
9
+ require 'spec/autorun'
10
+
11
+ describe "Running an Example" do
12
+ it "should not output twice" do
13
+ true.should be_true
14
+ end
15
+ end
16
+ """
17
+ When I run "<Command> simple_spec.rb"
18
+ Then the exit code should be 0
19
+ And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
20
+ And the stdout should include "1 example, 0 failures"
21
+
22
+ Scenarios: Run with ruby and CommandLine object
23
+ | Command |
24
+ | ruby |
25
+ | cmdline.rb |
@@ -0,0 +1,26 @@
1
+ Feature: Test is defined, but not Test::Unit
2
+
3
+ As an RSpec user who has my own library named Test (but not Test::Unit)
4
+ I want to run examples without getting Test::Unit NameErrors
5
+
6
+ Scenario Outline: Spec including Test const but not Test::Unit
7
+ Given a file named "spec_including_test_but_not_unit.rb" with:
8
+ """
9
+ require 'spec/autorun'
10
+
11
+ module Test
12
+ end
13
+
14
+ describe "description" do
15
+ it "should description" do
16
+ 1.should == 1
17
+ end
18
+ end
19
+ """
20
+ When I run "<Command> spec_including_test_but_not_unit.rb"
21
+ Then the stderr should not match "Test::Unit"
22
+
23
+ Scenarios: Run with ruby and spec
24
+ | Command |
25
+ | ruby |
26
+ | spec |
@@ -0,0 +1,46 @@
1
+ Feature: Test::Unit::TestCase extended by rspec with should methods
2
+
3
+ As an RSpec adopter with existing Test::Unit tests
4
+ I want to use should_* methods in a Test::Unit::TestCase
5
+ So that I use RSpec with classes and methods that look more like RSpec examples
6
+
7
+ Scenario Outline: TestCase with should methods
8
+ Given a file named "test_case_with_should_methods.rb" with:
9
+ """
10
+ require 'spec/autorun'
11
+ require 'spec/test/unit'
12
+
13
+ class MyTest < Test::Unit::TestCase
14
+ def should_pass_with_should
15
+ 1.should == 1
16
+ end
17
+
18
+ def should_fail_with_should
19
+ 1.should == 2
20
+ end
21
+
22
+ def should_pass_with_assert
23
+ assert true
24
+ end
25
+
26
+ def should_fail_with_assert
27
+ assert false
28
+ end
29
+
30
+ def test
31
+ raise "This is not a real test"
32
+ end
33
+
34
+ def test_ify
35
+ raise "This is a real test"
36
+ end
37
+ end
38
+ """
39
+ When I run "<Command> test_case_with_should_methods.rb"
40
+ Then the exit code should be 256
41
+ And the stdout should include "5 examples, 3 failures"
42
+
43
+ Scenarios: Run with ruby and spec
44
+ | Command |
45
+ | ruby |
46
+ | spec |
@@ -0,0 +1,20 @@
1
+ Feature: add ./lib to load path
2
+ In order to ...
3
+ As a spec author
4
+ I want rspec to add ./lib to the load path
5
+
6
+ Scenario: spec helper
7
+ Given a directory named "spec"
8
+ And a file named "example.rb" with:
9
+ """
10
+ describe $LOAD_PATH do
11
+ it "begins with 'lib' in the current directory in the load path" do
12
+ libdir = File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
13
+ $LOAD_PATH.should include(libdir)
14
+ end
15
+ end
16
+ """
17
+ When I run "spec example.rb"
18
+ Then the stdout should include "1 example, 0 failures"
19
+ And the exit code should be 0
20
+
@@ -0,0 +1,20 @@
1
+ Feature: add 'spec' to load path
2
+ In order to ...
3
+ As a spec author
4
+ I want rspec to add 'spec to the load path
5
+
6
+ Scenario: add 'spec' to load path
7
+ Given a directory named "spec"
8
+ And a file named "example.rb" with:
9
+ """
10
+ describe $LOAD_PATH do
11
+ it "includes with 'spec' in the current directory in the load path" do
12
+ specdir = File.expand_path(File.join(File.dirname(__FILE__), 'spec'))
13
+ $LOAD_PATH.should include(specdir)
14
+ end
15
+ end
16
+ """
17
+ When I run "spec example.rb"
18
+ Then the stdout should include "1 example, 0 failures"
19
+ And the exit code should be 0
20
+
@@ -0,0 +1,26 @@
1
+ Feature: define diffable matcher
2
+
3
+ When a matcher is defined as diffable, and the --diff
4
+ flag is set, the output will include a diff of the submitted
5
+ objects.
6
+
7
+ Scenario: define a diffable matcher
8
+ Given a file named "diffable_matcher_spec.rb" with:
9
+ """
10
+ Spec::Matchers.define :be_just_like do |expected|
11
+ match do |actual|
12
+ actual == expected
13
+ end
14
+
15
+ diffable
16
+ end
17
+
18
+ describe "this" do
19
+ it {should be_just_like("that")}
20
+ end
21
+ """
22
+ When I run "spec diffable_matcher_spec.rb --diff"
23
+ Then the exit code should be 256
24
+
25
+ And the stdout should include "should be just like \"that\""
26
+ And the stdout should include "Diff:\n@@ -1,2 +1,2 @@\n-that\n+this"
@@ -0,0 +1,179 @@
1
+ Feature: define matcher
2
+
3
+ In order to express my domain clearly in my code examples
4
+ As an RSpec user
5
+ I want a shortcut to define custom matchers
6
+
7
+ Scenario: define a matcher with default messages
8
+ Given a file named "matcher_with_default_message_spec.rb" with:
9
+ """
10
+ Spec::Matchers.define :be_a_multiple_of do |expected|
11
+ match do |actual|
12
+ actual % expected == 0
13
+ end
14
+ end
15
+
16
+ describe 9 do
17
+ it {should be_a_multiple_of(3)}
18
+ end
19
+
20
+ describe 9 do
21
+ it {should_not be_a_multiple_of(4)}
22
+ end
23
+
24
+ # fail intentionally to generate expected output
25
+ describe 9 do
26
+ it {should be_a_multiple_of(4)}
27
+ end
28
+
29
+ # fail intentionally to generate expected output
30
+ describe 9 do
31
+ it {should_not be_a_multiple_of(3)}
32
+ end
33
+
34
+ """
35
+ When I run "spec matcher_with_default_message_spec.rb --format specdoc"
36
+ Then the exit code should be 256
37
+
38
+ And the stdout should include "should be a multiple of 3"
39
+ And the stdout should include "should not be a multiple of 4"
40
+ And the stdout should include "should be a multiple of 4 (FAILED - 1)"
41
+ And the stdout should include "should not be a multiple of 3 (FAILED - 2)"
42
+
43
+ And the stdout should include "4 examples, 2 failures"
44
+ And the stdout should include "expected 9 to be a multiple of 4"
45
+ And the stdout should include "expected 9 not to be a multiple of 3"
46
+
47
+ Scenario: overriding the failure_message_for_should
48
+ Given a file named "matcher_with_failure_message_spec.rb" with:
49
+ """
50
+ Spec::Matchers.define :be_a_multiple_of do |expected|
51
+ match do |actual|
52
+ actual % expected == 0
53
+ end
54
+ failure_message_for_should do |actual|
55
+ "expected that #{actual} would be a multiple of #{expected}"
56
+ end
57
+ end
58
+
59
+ # fail intentionally to generate expected output
60
+ describe 9 do
61
+ it {should be_a_multiple_of(4)}
62
+ end
63
+ """
64
+ When I run "spec matcher_with_failure_message_spec.rb"
65
+ Then the exit code should be 256
66
+ And the stdout should include "1 example, 1 failure"
67
+ And the stdout should include "expected that 9 would be a multiple of 4"
68
+
69
+ Scenario: overriding the failure_message_for_should_not
70
+ Given a file named "matcher_with_failure_for_message_spec.rb" with:
71
+ """
72
+ Spec::Matchers.define :be_a_multiple_of do |expected|
73
+ match do |actual|
74
+ actual % expected == 0
75
+ end
76
+ failure_message_for_should_not do |actual|
77
+ "expected that #{actual} would not be a multiple of #{expected}"
78
+ end
79
+ end
80
+
81
+ # fail intentionally to generate expected output
82
+ describe 9 do
83
+ it {should_not be_a_multiple_of(3)}
84
+ end
85
+ """
86
+ When I run "spec matcher_with_failure_for_message_spec.rb"
87
+ Then the exit code should be 256
88
+ And the stdout should include "1 example, 1 failure"
89
+ And the stdout should include "expected that 9 would not be a multiple of 3"
90
+
91
+ Scenario: overriding the description
92
+ Given a file named "matcher_overriding_description_spec.rb" with:
93
+ """
94
+ Spec::Matchers.define :be_a_multiple_of do |expected|
95
+ match do |actual|
96
+ actual % expected == 0
97
+ end
98
+ description do
99
+ "be multiple of #{expected}"
100
+ end
101
+ end
102
+
103
+ describe 9 do
104
+ it {should be_a_multiple_of(3)}
105
+ end
106
+
107
+ describe 9 do
108
+ it {should_not be_a_multiple_of(4)}
109
+ end
110
+ """
111
+ When I run "spec matcher_overriding_description_spec.rb --format specdoc"
112
+ Then the exit code should be 0
113
+ And the stdout should include "2 examples, 0 failures"
114
+ And the stdout should include "should be multiple of 3"
115
+ And the stdout should include "should not be multiple of 4"
116
+
117
+ Scenario: with no args
118
+ Given a file named "matcher_with_no_args_spec.rb" with:
119
+ """
120
+ Spec::Matchers.define :have_7_fingers do
121
+ match do |thing|
122
+ thing.fingers.length == 7
123
+ end
124
+ end
125
+
126
+ class Thing
127
+ def fingers; (1..7).collect {"finger"}; end
128
+ end
129
+
130
+ describe Thing do
131
+ it {should have_7_fingers}
132
+ end
133
+ """
134
+ When I run "spec matcher_with_no_args_spec.rb --format specdoc"
135
+ Then the exit code should be 0
136
+ And the stdout should include "1 example, 0 failures"
137
+ And the stdout should include "should have 7 fingers"
138
+
139
+ Scenario: with multiple args
140
+ Given a file named "matcher_with_multiple_args_spec.rb" with:
141
+ """
142
+ Spec::Matchers.define :be_the_sum_of do |a,b,c,d|
143
+ match do |sum|
144
+ a + b + c + d == sum
145
+ end
146
+ end
147
+
148
+ describe 10 do
149
+ it {should be_the_sum_of(1,2,3,4)}
150
+ end
151
+ """
152
+ When I run "spec matcher_with_multiple_args_spec.rb --format specdoc"
153
+ Then the exit code should be 0
154
+ And the stdout should include "1 example, 0 failures"
155
+ And the stdout should include "should be the sum of 1, 2, 3, and 4"
156
+
157
+ Scenario: with helper methods
158
+ Given a file named "matcher_with_internal_helper_spec.rb" with:
159
+ """
160
+ Spec::Matchers.define :have_same_elements_as do |sample|
161
+ match do |actual|
162
+ similar?(sample, actual)
163
+ end
164
+
165
+ def similar?(a, b)
166
+ a.sort == b.sort
167
+ end
168
+ end
169
+
170
+ describe "these two arrays" do
171
+ specify "should be similar" do
172
+ [1,2,3].should have_same_elements_as([2,3,1])
173
+ end
174
+ end
175
+ """
176
+ When I run "spec matcher_with_internal_helper_spec.rb"
177
+ Then the exit code should be 0
178
+ And the stdout should include "1 example, 0 failures"
179
+
@@ -0,0 +1,38 @@
1
+ Feature: define matcher outside rspec
2
+
3
+ In order to express my domain clearly in my code examples
4
+ As a non-rspec user
5
+ I want a shortcut to define custom matchers
6
+
7
+ Scenario: define a matcher with default messages
8
+ Given a file named "test_multiples.rb" with:
9
+ """
10
+ require 'test/unit'
11
+ require 'spec/expectations'
12
+
13
+ Spec::Matchers.define :be_a_multiple_of do |expected|
14
+ match do |actual|
15
+ actual % expected == 0
16
+ end
17
+ end
18
+
19
+ class Test::Unit::TestCase
20
+ include Spec::Matchers
21
+ end
22
+
23
+ class TestMultiples < Test::Unit::TestCase
24
+
25
+ def test_9_should_be_a_multiple_of_3
26
+ 9.should be_a_multiple_of(3)
27
+ end
28
+
29
+ def test_9_should_be_a_multiple_of_4
30
+ 9.should be_a_multiple_of(4)
31
+ end
32
+
33
+ end
34
+ """
35
+ When I run "ruby test_multiples.rb"
36
+ Then the exit code should be 256
37
+ And the stdout should include "expected 9 to be a multiple of 4"
38
+ And the stdout should include "2 tests, 0 assertions, 1 failures, 0 errors"
@@ -0,0 +1,48 @@
1
+ Feature: define matcher
2
+
3
+ In order to express my domain clearly in my code examples
4
+ As an RSpec user
5
+ I want to define matchers with fluent interfaces
6
+
7
+ Scenario: one additional method
8
+ Given a file named "between_spec.rb" with:
9
+ """
10
+ Spec::Matchers.define :be_bigger_than do |first|
11
+ def but_smaller_than(second)
12
+ @second = second
13
+ self
14
+ end
15
+
16
+ match do |actual|
17
+ (actual > first) && (actual < @second)
18
+ end
19
+ end
20
+
21
+ describe 5 do
22
+ it { should be_bigger_than(4).but_smaller_than(6) }
23
+ end
24
+ """
25
+ When I run "spec between_spec.rb --format specdoc"
26
+ Then the stdout should include "1 example, 0 failures"
27
+ And the stdout should include "should be bigger than 4"
28
+
29
+ Scenario: generate method using dsl
30
+ Given a file named "between_spec.rb" with:
31
+ """
32
+ Spec::Matchers.define :be_bigger_than do |first|
33
+ chain :but_smaller_than do |limit|
34
+ @limit = limit
35
+ end
36
+
37
+ match do |actual|
38
+ (actual > first) && (actual < @limit)
39
+ end
40
+ end
41
+
42
+ describe 5 do
43
+ it { should be_bigger_than(4).but_smaller_than(6) }
44
+ end
45
+ """
46
+ When I run "spec between_spec.rb --format specdoc"
47
+ Then the stdout should include "1 example, 0 failures"
48
+ And the stdout should include "should be bigger than 4"
@@ -0,0 +1,56 @@
1
+ Feature: define wrapped matcher
2
+
3
+ In order to reuse existing matchers
4
+ As an RSpec user
5
+ I want to define matchers that wrap other matchers
6
+
7
+ When the wrapped matcher passes, the wrapping matcher returns true.
8
+ When the wrapped matcher fails, the wrapping matcher returns false.
9
+
10
+ Scenario: wrap a matcher using should
11
+ Given a file named "new_model_spec.rb" with:
12
+ """
13
+ Spec::Matchers.define :have_tag do |tag|
14
+ match do |markup|
15
+ markup =~ /<#{tag}>.*<\/#{tag}>/
16
+ end
17
+ end
18
+
19
+ Spec::Matchers.define :have_button do
20
+ match do |markup|
21
+ markup.should have_tag('button')
22
+ end
23
+ end
24
+
25
+ describe "some markup" do
26
+ it "has a button" do
27
+ "<button>Label</button>".should have_button
28
+ end
29
+ end
30
+ """
31
+ When I run "spec new_model_spec.rb --format specdoc"
32
+ Then the stdout should include "1 example, 0 failures"
33
+
34
+ Scenario: wrap a matcher using should_not
35
+ Given a file named "new_model_spec.rb" with:
36
+ """
37
+ Spec::Matchers.define :have_tag do |tag|
38
+ match do |markup|
39
+ markup =~ /<#{tag}>.*<\/#{tag}>/
40
+ end
41
+ end
42
+
43
+ Spec::Matchers.define :have_button do
44
+ match do |markup|
45
+ markup.should have_tag('button')
46
+ end
47
+ end
48
+
49
+ describe "some markup" do
50
+ it "has no buttons" do
51
+ "<p>Label</p>".should_not have_button
52
+ end
53
+ end
54
+ """
55
+ When I run "spec new_model_spec.rb --format specdoc"
56
+ Then the stdout should include "1 example, 0 failures"
@@ -0,0 +1,60 @@
1
+ Feature: match unless raises
2
+
3
+ In order, primarily, to reuse existing test/unit assertions
4
+ As an RSpec user
5
+ I want to define matchers that wrap a statement that raises an error on failure
6
+
7
+ Background:
8
+ Given a file named "example.rb" with:
9
+ """
10
+ require 'test/unit/assertions'
11
+
12
+ Spec::Matchers.define :be_the_same_as do |expected|
13
+ extend Test::Unit::Assertions
14
+ match_unless_raises Test::Unit::AssertionFailedError do |actual|
15
+ assert_equal expected, actual
16
+ end
17
+ end
18
+ """
19
+
20
+ Scenario: passing examples
21
+ Given a file named "match_unless_raises_spec.rb" with:
22
+ """
23
+ require 'example.rb'
24
+
25
+ describe 4 do
26
+ it "is 4" do
27
+ 4.should be_the_same_as(4)
28
+ end
29
+ end
30
+
31
+ describe 5 do
32
+ it "is not 4" do
33
+ 5.should_not be_the_same_as(4)
34
+ end
35
+ end
36
+ """
37
+ When I run "spec match_unless_raises_spec.rb"
38
+ Then the stdout should include "2 examples, 0 failures"
39
+
40
+ Scenario: failing examples
41
+ Given a file named "match_unless_raises_spec.rb" with:
42
+ """
43
+ require 'example.rb'
44
+
45
+ describe 4 do
46
+ it "is 4" do
47
+ # intentionally fail
48
+ 4.should_not be_the_same_as(4)
49
+ end
50
+ end
51
+
52
+ describe 5 do
53
+ it "is not 4" do
54
+ # intentionally fail
55
+ 5.should be_the_same_as(4)
56
+ end
57
+ end
58
+ """
59
+ When I run "spec match_unless_raises_spec.rb"
60
+ Then the stdout should include "2 examples, 2 failures"
@@ -0,0 +1,39 @@
1
+ Feature: match unless raises with an unexpected error
2
+
3
+ In order to know when a match_unless_raises block raises an unexpected error
4
+ As an RSpec user
5
+ I want the error to bubble up
6
+
7
+ Background:
8
+ Given a file named "example.rb" with:
9
+ """
10
+ Spec::Matchers.define :be_the_same_as do |expected|
11
+ match_unless_raises SyntaxError do |actual|
12
+ raise "unexpected error"
13
+ end
14
+ end
15
+ """
16
+
17
+ Scenario: failing examples
18
+ Given a file named "match_unless_raises_spec.rb" with:
19
+ """
20
+ require 'example.rb'
21
+
22
+ describe 4 do
23
+ it "is 4" do
24
+ # intentionally fail
25
+ 4.should_not be_the_same_as(4)
26
+ end
27
+ end
28
+
29
+ describe 5 do
30
+ it "is not 4" do
31
+ # intentionally fail
32
+ 5.should be_the_same_as(4)
33
+ end
34
+ end
35
+ """
36
+ When I run "spec match_unless_raises_spec.rb"
37
+ Then the stdout should include "2 examples, 2 failures"
38
+ Then the stdout should include "unexpected error"
39
+