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,36 @@
1
+ require 'test/unit/testsuite'
2
+
3
+ module Test
4
+ module Unit
5
+ class TestSuiteAdapter < TestSuite
6
+ attr_reader :example_group, :examples
7
+ alias_method :tests, :examples
8
+ def initialize(example_group)
9
+ @example_group = example_group
10
+ @examples = example_group.examples
11
+ end
12
+
13
+ def name
14
+ example_group.description
15
+ end
16
+
17
+ def run(*args)
18
+ return true unless args.empty?
19
+ example_group.run(Spec::Runner.options)
20
+ end
21
+
22
+ def size
23
+ example_group.number_of_examples
24
+ end
25
+
26
+ def delete(example)
27
+ examples.delete example
28
+ end
29
+
30
+ def empty?
31
+ examples.empty?
32
+ end
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,61 @@
1
+ require 'test/unit/ui/console/testrunner'
2
+
3
+ module Test
4
+ module Unit
5
+ module UI
6
+ module Console
7
+ class TestRunner
8
+
9
+ alias_method :started_without_rspec, :started
10
+ def started_with_rspec(result)
11
+ @result = result
12
+ @need_to_output_started = true
13
+ end
14
+ alias_method :started, :started_with_rspec
15
+
16
+ alias_method :test_started_without_rspec, :test_started
17
+ def test_started_with_rspec(name)
18
+ if @need_to_output_started
19
+ if @rspec_io
20
+ @rspec_io.rewind
21
+ output(@rspec_io.read)
22
+ end
23
+ output("Started")
24
+ @need_to_output_started = false
25
+ end
26
+ test_started_without_rspec(name)
27
+ end
28
+ alias_method :test_started, :test_started_with_rspec
29
+
30
+ alias_method :test_finished_without_rspec, :test_finished
31
+ def test_finished_with_rspec(name)
32
+ test_finished_without_rspec(name)
33
+ @ran_test = true
34
+ end
35
+ alias_method :test_finished, :test_finished_with_rspec
36
+
37
+ alias_method :finished_without_rspec, :finished
38
+ def finished_with_rspec(elapsed_time)
39
+ @ran_test ||= false
40
+ if @ran_test
41
+ finished_without_rspec(elapsed_time)
42
+ end
43
+ end
44
+ alias_method :finished, :finished_with_rspec
45
+
46
+ alias_method :setup_mediator_without_rspec, :setup_mediator
47
+ def setup_mediator_with_rspec
48
+ orig_io = @io
49
+ @io = StringIO.new
50
+ setup_mediator_without_rspec
51
+ ensure
52
+ @rspec_io = @io
53
+ @io = orig_io
54
+ end
55
+ alias_method :setup_mediator, :setup_mediator_with_rspec
56
+
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec'
2
+
3
+ if Spec::Ruby.version.to_f >= 1.9
4
+ gem 'test-unit','= 1.2.3'
5
+ end
6
+
7
+ require 'test/unit'
8
+
9
+ if Spec::Ruby.version.to_f >= 1.9
10
+ require 'test/unit/version'
11
+ if Test::Unit::VERSION > '1.2.3'
12
+ raise <<-MESSAGE
13
+ #{'*' * 50}
14
+ Required: test-unit-1.2.3
15
+ Loaded: test-unit-#{Test::Unit::VERSION}
16
+
17
+ With ruby-1.9, rspec-#{Spec::VERSION::STRING} requires test-unit-1.2.3, and
18
+ tries to force it with "gem 'test-unit', '= 1.2.3'" in:
19
+
20
+ #{__FILE__}
21
+
22
+ Unfortunately, test-unit-#{Test::Unit::VERSION} was loaded anyway. While we are
23
+ aware of this bug we have not been able to track down its source.
24
+ Until we do, you have two alternatives:
25
+
26
+ * uninstall test-unit-#{Test::Unit::VERSION}
27
+ * use 'script/spec' instead of 'rake spec'
28
+ #{'*' * 50}
29
+ MESSAGE
30
+ end
31
+ end
32
+
33
+
34
+ require 'test/unit/testresult'
35
+
36
+ require 'spec/interop/test/unit/testcase'
37
+ require 'spec/interop/test/unit/testsuite_adapter'
38
+ require 'spec/interop/test/unit/autorunner'
39
+ require 'spec/interop/test/unit/testresult'
40
+ require 'spec/interop/test/unit/ui/console/testrunner'
41
+
42
+ Spec::Example::ExampleGroupFactory.default(Test::Unit::TestCase)
43
+
44
+ Test::Unit.run = true
@@ -1,183 +1,219 @@
1
+ require 'spec/matchers/dsl'
2
+
3
+ Spec::Matchers.define :be_true do
4
+ match do |actual|
5
+ !!actual
6
+ end
7
+ end
8
+
9
+ Spec::Matchers.define :be_false do
10
+ match do |actual|
11
+ !actual
12
+ end
13
+ end
14
+
15
+ Spec::Matchers.define :be_nil do
16
+ match do |actual|
17
+ actual.nil?
18
+ end
19
+
20
+ failure_message_for_should do |actual|
21
+ "expected nil, got #{actual.inspect}"
22
+ end
23
+
24
+ failure_message_for_should_not do
25
+ "expected not nil, got nil"
26
+ end
27
+ end
28
+
1
29
  module Spec
2
30
  module Matchers
3
-
31
+
4
32
  class Be #:nodoc:
5
- def initialize(*args)
6
- @expected = parse_expected(args.shift)
33
+ include Spec::Matchers::Pretty
34
+
35
+ def initialize(*args, &block)
7
36
  @args = args
8
- @comparison = ""
9
37
  end
10
38
 
11
39
  def matches?(actual)
12
40
  @actual = actual
13
- return true if match_or_compare unless handling_predicate?
14
- if handling_predicate?
15
- begin
16
- return @result = actual.__send__(predicate, *@args)
17
- rescue => predicate_error
18
- # This clause should be empty, but rcov will not report it as covered
19
- # unless something (anything) is executed within the clause
20
- rcov_error_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
21
- end
22
-
23
- # This supports should_exist > target.exists? in the old world.
24
- # We should consider deprecating that ability as in the new world
25
- # you can't write "should exist" unless you have your own custom matcher.
26
- begin
27
- return @result = actual.__send__(present_tense_predicate, *@args)
28
- rescue
29
- raise predicate_error
30
- end
31
- end
32
- return false
41
+ !!@actual
42
+ end
43
+
44
+ def failure_message_for_should
45
+ "expected #{@actual.inspect} to evaluate to true"
46
+ end
47
+
48
+ def failure_message_for_should_not
49
+ "expected #{@actual.inspect} to evaluate to false"
33
50
  end
34
51
 
35
- def failure_message
36
- return "expected #{@comparison}#{expected}, got #{@actual.inspect}" unless handling_predicate?
37
- return "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
52
+ def description
53
+ "be"
54
+ end
55
+
56
+ [:==, :<, :<=, :>=, :>, :===].each do |operator|
57
+ define_method operator do |operand|
58
+ BeComparedTo.new(operand, operator)
59
+ end
60
+ end
61
+
62
+ private
63
+
64
+ def args_to_s
65
+ @args.empty? ? "" : parenthesize(inspected_args.join(', '))
38
66
  end
39
67
 
40
- def negative_failure_message
41
- return "expected not #{expected}, got #{@actual.inspect}" unless handling_predicate?
42
- return "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
68
+ def parenthesize(string)
69
+ return "(#{string})"
43
70
  end
44
71
 
45
- def expected
46
- return true if @expected == :true
47
- return false if @expected == :false
48
- return "nil" if @expected == :nil
49
- return @expected.inspect
72
+ def inspected_args
73
+ @args.collect{|a| a.inspect}
50
74
  end
51
75
 
52
- def match_or_compare
53
- return @actual == true if @expected == :true
54
- return @actual == false if @expected == :false
55
- return @actual.nil? if @expected == :nil
56
- return @actual < @expected if @less_than
57
- return @actual <= @expected if @less_than_or_equal
58
- return @actual >= @expected if @greater_than_or_equal
59
- return @actual > @expected if @greater_than
60
- return @actual == @expected if @double_equal
61
- return @actual === @expected if @triple_equal
62
- return @actual.equal?(@expected)
76
+ def expected_to_sentence
77
+ split_words(@expected)
63
78
  end
64
79
 
65
- def ==(expected)
66
- @double_equal = true
67
- @comparison = "== "
68
- @expected = expected
69
- self
80
+ def args_to_sentence
81
+ to_sentence(@args)
70
82
  end
83
+
84
+ end
71
85
 
72
- def ===(expected)
73
- @triple_equal = true
74
- @comparison = "=== "
75
- @expected = expected
76
- self
86
+ class BeComparedTo < Be
87
+
88
+ def initialize(operand, operator)
89
+ @expected, @operator = operand, operator
90
+ @args = []
77
91
  end
78
92
 
79
- def <(expected)
80
- @less_than = true
81
- @comparison = "< "
82
- @expected = expected
83
- self
93
+ def matches?(actual)
94
+ @actual = actual
95
+ @actual.__send__(@operator, @expected)
84
96
  end
85
97
 
86
- def <=(expected)
87
- @less_than_or_equal = true
88
- @comparison = "<= "
89
- @expected = expected
90
- self
98
+ def failure_message_for_should
99
+ "expected #{@operator} #{@expected}, got #{@actual.inspect}"
100
+ end
101
+
102
+ def failure_message_for_should_not
103
+ message = <<-MESSAGE
104
+ 'should_not be #{@operator} #{@expected}' not only FAILED,
105
+ it is a bit confusing.
106
+ MESSAGE
107
+
108
+ raise message << ([:===,:==].include?(@operator) ?
109
+ "It might be more clearly expressed without the \"be\"?" :
110
+ "It might be more clearly expressed in the positive?")
91
111
  end
92
112
 
93
- def >=(expected)
94
- @greater_than_or_equal = true
95
- @comparison = ">= "
96
- @expected = expected
97
- self
113
+ def description
114
+ "be #{@operator} #{expected_to_sentence}#{args_to_sentence}"
98
115
  end
99
116
 
100
- def >(expected)
101
- @greater_than = true
102
- @comparison = "> "
103
- @expected = expected
104
- self
117
+ end
118
+
119
+ class BePredicate < Be
120
+
121
+ def initialize(*args, &block)
122
+ @expected = parse_expected(args.shift)
123
+ @args = args
124
+ @block = block
105
125
  end
106
126
 
107
- def description
108
- "#{prefix_to_sentence}#{comparison}#{expected_to_sentence}#{args_to_sentence}"
109
- end
110
-
111
- private
112
- def parse_expected(expected)
113
- if Symbol === expected
114
- @handling_predicate = true
115
- ["be_an_","be_a_","be_"].each do |@prefix|
116
- return "#{expected.to_s.sub(@prefix,"")}".to_sym if expected.starts_with?(@prefix)
117
- end
118
- end
119
- @prefix = "be "
120
- return expected
121
- end
122
-
123
- def handling_predicate?
124
- return false if [:true, :false, :nil].include?(@expected)
125
- return @handling_predicate
127
+ def matches?(actual)
128
+ @actual = actual
129
+ begin
130
+ return @result = actual.__send__(predicate, *@args, &@block)
131
+ rescue NameError => predicate_missing_error
132
+ "this needs to be here or rcov will not count this branch even though it's executed in a code example"
126
133
  end
127
134
 
128
- def predicate
129
- "#{@expected.to_s}?".to_sym
130
- end
131
-
132
- def present_tense_predicate
133
- "#{@expected.to_s}s?".to_sym
134
- end
135
-
136
- def args_to_s
137
- return "" if @args.empty?
138
- inspected_args = @args.collect{|a| a.inspect}
139
- return "(#{inspected_args.join(', ')})"
140
- end
141
-
142
- def comparison
143
- @comparison
144
- end
145
-
146
- def expected_to_sentence
147
- split_words(@expected)
148
- end
149
-
150
- def prefix_to_sentence
151
- split_words(@prefix)
135
+ begin
136
+ return @result = actual.__send__(present_tense_predicate, *@args, &@block)
137
+ rescue NameError
138
+ raise predicate_missing_error
152
139
  end
140
+ end
141
+
142
+ def failure_message_for_should
143
+ "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
144
+ end
145
+
146
+ def failure_message_for_should_not
147
+ "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
148
+ end
153
149
 
154
- def split_words(sym)
155
- sym.to_s.gsub(/_/,' ')
156
- end
150
+ def description
151
+ "#{prefix_to_sentence}#{expected_to_sentence}#{args_to_sentence}"
152
+ end
153
+
154
+ private
155
+
156
+ def predicate
157
+ "#{@expected}?".to_sym
158
+ end
159
+
160
+ def present_tense_predicate
161
+ "#{@expected}s?".to_sym
162
+ end
163
+
164
+ def parse_expected(expected)
165
+ @prefix, expected = prefix_and_expected(expected)
166
+ expected
167
+ end
168
+
169
+ def prefix_and_expected(symbol)
170
+ symbol.to_s =~ /^(be_(an?_)?)(.*)/
171
+ return $1, $3
172
+ end
173
+
174
+ def prefix_to_sentence
175
+ split_words(@prefix)
176
+ end
177
+
178
+ end
179
+
180
+ class BeSameAs < Be
181
+
182
+ def initialize(*args, &block)
183
+ @expected = args.shift
184
+ @args = args
185
+ end
186
+
187
+ def matches?(actual)
188
+ @actual = actual
189
+ @actual.equal?(@expected)
190
+ end
191
+
192
+ def failure_message_for_should
193
+ "expected #{@expected}, got #{@actual.inspect}"
194
+ end
195
+
196
+ def failure_message_for_should_not
197
+ "expected not #{@expected}, got #{@actual.inspect}"
198
+ end
199
+
200
+ def description
201
+ "be #{expected_to_sentence}#{args_to_sentence}"
202
+ end
157
203
 
158
- def args_to_sentence
159
- case @args.length
160
- when 0
161
- ""
162
- when 1
163
- " #{@args[0]}"
164
- else
165
- " #{@args[0...-1].join(', ')} and #{@args[-1]}"
166
- end
167
- end
168
-
169
204
  end
170
205
 
171
206
  # :call-seq:
172
207
  # should be_true
173
208
  # should be_false
174
209
  # should be_nil
175
- # should be_arbitrary_predicate(*args)
210
+ # should be_[arbitrary_predicate](*args)
176
211
  # should_not be_nil
177
- # should_not be_arbitrary_predicate(*args)
212
+ # should_not be_[arbitrary_predicate](*args)
178
213
  #
179
- # Given true, false, or nil, will pass if actual is
180
- # true, false or nil (respectively).
214
+ # Given true, false, or nil, will pass if actual value is
215
+ # true, false or nil (respectively). Given no args means
216
+ # the caller should satisfy an if condition (to be or not to be).
181
217
  #
182
218
  # Predicates are any Ruby method that ends in a "?" and returns true or false.
183
219
  # Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
@@ -195,12 +231,19 @@ module Spec
195
231
  # target.should_not be_nil
196
232
  #
197
233
  # collection.should be_empty #passes if target.empty?
198
- # "this string".should be_an_intance_of(String)
199
- #
200
234
  # target.should_not be_empty #passes unless target.empty?
201
235
  # target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
202
236
  def be(*args)
203
- Matchers::Be.new(*args)
237
+ args.empty? ?
238
+ Matchers::Be.new :
239
+ Matchers::BeSameAs.new(*args)
204
240
  end
241
+
242
+ # passes if target.kind_of?(klass)
243
+ def be_a(klass)
244
+ be_a_kind_of(klass)
245
+ end
246
+
247
+ alias_method :be_an, :be_a
205
248
  end
206
249
  end
@@ -1,26 +1,5 @@
1
1
  module Spec
2
2
  module Matchers
3
-
4
- class BeClose #:nodoc:
5
- def initialize(expected, delta)
6
- @expected = expected
7
- @delta = delta
8
- end
9
-
10
- def matches?(actual)
11
- @actual = actual
12
- (@actual - @expected).abs < @delta
13
- end
14
-
15
- def failure_message
16
- "expected #{@expected} +/- (< #{@delta}), got #{@actual}"
17
- end
18
-
19
- def description
20
- "be close to #{@expected} (within +- #{@delta})"
21
- end
22
- end
23
-
24
3
  # :call-seq:
25
4
  # should be_close(expected, delta)
26
5
  # should_not be_close(expected, delta)
@@ -31,7 +10,23 @@ module Spec
31
10
  #
32
11
  # result.should be_close(3.0, 0.5)
33
12
  def be_close(expected, delta)
34
- Matchers::BeClose.new(expected, delta)
13
+ Matcher.new :be_close, expected, delta do |_expected_, _delta_|
14
+ match do |actual|
15
+ (actual - _expected_).abs < _delta_
16
+ end
17
+
18
+ failure_message_for_should do |actual|
19
+ "expected #{_expected_} +/- (< #{_delta_}), got #{actual}"
20
+ end
21
+
22
+ failure_message_for_should_not do |actual|
23
+ "expected #{_expected_} +/- (< #{_delta_}), got #{actual}"
24
+ end
25
+
26
+ description do
27
+ "be close to #{_expected_} (within +- #{_delta_})"
28
+ end
29
+ end
35
30
  end
36
31
  end
37
- end
32
+ end
@@ -0,0 +1,26 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should be_instance_of(expected)
5
+ # should be_an_instance_of(expected)
6
+ # should_not be_instance_of(expected)
7
+ # should_not be_an_instance_of(expected)
8
+ #
9
+ # Passes if actual.instance_of?(expected)
10
+ #
11
+ # == Examples
12
+ #
13
+ # 5.should be_instance_of(Fixnum)
14
+ # 5.should_not be_instance_of(Numeric)
15
+ # 5.should_not be_instance_of(Float)
16
+ def be_an_instance_of(expected)
17
+ Matcher.new :be_an_instance_of, expected do |_expected_|
18
+ match do |actual|
19
+ actual.instance_of?(_expected_)
20
+ end
21
+ end
22
+ end
23
+
24
+ alias_method :be_instance_of, :be_an_instance_of
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should be_kind_of(expected)
5
+ # should be_a_kind_of(expected)
6
+ # should_not be_kind_of(expected)
7
+ # should_not be_a_kind_of(expected)
8
+ #
9
+ # Passes if actual.kind_of?(expected)
10
+ #
11
+ # == Examples
12
+ #
13
+ # 5.should be_kind_of(Fixnum)
14
+ # 5.should be_kind_of(Numeric)
15
+ # 5.should_not be_kind_of(Float)
16
+ def be_a_kind_of(expected)
17
+ Matcher.new :be_a_kind_of, expected do |_expected_|
18
+ match do |actual|
19
+ actual.kind_of?(_expected_)
20
+ end
21
+ end
22
+ end
23
+
24
+ alias_method :be_kind_of, :be_a_kind_of
25
+ end
26
+ end