ageweke-rspec 1.2.9

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 (378) hide show
  1. data/.document +7 -0
  2. data/History.rdoc +1496 -0
  3. data/License.txt +22 -0
  4. data/Manifest.txt +377 -0
  5. data/README.rdoc +55 -0
  6. data/Rakefile +145 -0
  7. data/Ruby1.9.rdoc +31 -0
  8. data/TODO.txt +17 -0
  9. data/Upgrade.rdoc +199 -0
  10. data/bin/autospec +4 -0
  11. data/bin/spec +5 -0
  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/passing/custom_formatter.rb +11 -0
  30. data/examples/passing/custom_matchers.rb +54 -0
  31. data/examples/passing/dynamic_spec.rb +7 -0
  32. data/examples/passing/file_accessor.rb +18 -0
  33. data/examples/passing/file_accessor_spec.rb +37 -0
  34. data/examples/passing/filtered_formatter.rb +17 -0
  35. data/examples/passing/filtered_formatter_example.rb +31 -0
  36. data/examples/passing/greeter_spec.rb +30 -0
  37. data/examples/passing/helper_method_example.rb +12 -0
  38. data/examples/passing/implicit_docstrings_example.rb +16 -0
  39. data/examples/passing/io_processor.rb +8 -0
  40. data/examples/passing/io_processor_spec.rb +20 -0
  41. data/examples/passing/mocking_example.rb +25 -0
  42. data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  43. data/examples/passing/nested_classes_example.rb +35 -0
  44. data/examples/passing/options_example.rb +29 -0
  45. data/examples/passing/options_formatter.rb +20 -0
  46. data/examples/passing/partial_mock_example.rb +27 -0
  47. data/examples/passing/pending_example.rb +18 -0
  48. data/examples/passing/predicate_example.rb +25 -0
  49. data/examples/passing/shared_example_group_example.rb +79 -0
  50. data/examples/passing/shared_stack_examples.rb +36 -0
  51. data/examples/passing/simple_matcher_example.rb +29 -0
  52. data/examples/passing/stack.rb +36 -0
  53. data/examples/passing/stack_spec.rb +63 -0
  54. data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  55. data/examples/passing/stubbing_example.rb +67 -0
  56. data/examples/passing/yielding_example.rb +31 -0
  57. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  58. data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  59. data/features/command_line/line_number_option.feature +56 -0
  60. data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  61. data/features/example_groups/define_example_attribute.feature +41 -0
  62. data/features/example_groups/example_group_with_should_methods.feature +29 -0
  63. data/features/example_groups/implicit_docstrings.feature +59 -0
  64. data/features/example_groups/nested_groups.feature +32 -0
  65. data/features/expectations/customized_message.feature +54 -0
  66. data/features/expectations/expect_change.feature +65 -0
  67. data/features/expectations/expect_error.feature +44 -0
  68. data/features/extensions/custom_example_group.feature +19 -0
  69. data/features/formatters/custom_formatter.feature +30 -0
  70. data/features/interop/examples_and_tests_together.feature +84 -0
  71. data/features/interop/rspec_output.feature +25 -0
  72. data/features/interop/test_but_not_test_unit.feature +26 -0
  73. data/features/interop/test_case_with_should_methods.feature +46 -0
  74. data/features/load_paths/add_lib_to_load_path.feature +20 -0
  75. data/features/load_paths/add_spec_to_load_path.feature +20 -0
  76. data/features/matchers/define_diffable_matcher.feature +26 -0
  77. data/features/matchers/define_matcher.feature +179 -0
  78. data/features/matchers/define_matcher_outside_rspec.feature +38 -0
  79. data/features/matchers/define_matcher_with_fluent_interface.feature +27 -0
  80. data/features/matchers/define_wrapped_matcher.feature +29 -0
  81. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  82. data/features/mock_framework_integration/use_mocha.feature +27 -0
  83. data/features/mock_framework_integration/use_rr.feature +27 -0
  84. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  85. data/features/mocks/stub_implementation.feature +26 -0
  86. data/features/pending/pending_examples.feature +81 -0
  87. data/features/runner/specify_line_number.feature +32 -0
  88. data/features/spec_helper/spec_helper.feature +25 -0
  89. data/features/step_definitions/running_rspec_steps.rb +43 -0
  90. data/features/subject/explicit_subject.feature +31 -0
  91. data/features/subject/implicit_subject.feature +43 -0
  92. data/features/support/env.rb +82 -0
  93. data/features/support/matchers/smart_match.rb +12 -0
  94. data/init.rb +9 -0
  95. data/lib/autotest/discover.rb +3 -0
  96. data/lib/autotest/rspec.rb +47 -0
  97. data/lib/spec.rb +8 -0
  98. data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  99. data/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  100. data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  101. data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  102. data/lib/spec/autorun.rb +3 -0
  103. data/lib/spec/deprecation.rb +40 -0
  104. data/lib/spec/dsl.rb +1 -0
  105. data/lib/spec/dsl/main.rb +92 -0
  106. data/lib/spec/example.rb +164 -0
  107. data/lib/spec/example/args_and_options.rb +27 -0
  108. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  109. data/lib/spec/example/errors.rb +25 -0
  110. data/lib/spec/example/example_group.rb +10 -0
  111. data/lib/spec/example/example_group_factory.rb +82 -0
  112. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  113. data/lib/spec/example/example_group_methods.rb +282 -0
  114. data/lib/spec/example/example_group_proxy.rb +61 -0
  115. data/lib/spec/example/example_matcher.rb +43 -0
  116. data/lib/spec/example/example_methods.rb +148 -0
  117. data/lib/spec/example/example_proxy.rb +41 -0
  118. data/lib/spec/example/module_reopening_fix.rb +43 -0
  119. data/lib/spec/example/pending.rb +18 -0
  120. data/lib/spec/example/predicate_matchers.rb +46 -0
  121. data/lib/spec/example/shared_example_group.rb +59 -0
  122. data/lib/spec/example/subject.rb +108 -0
  123. data/lib/spec/expectations.rb +35 -0
  124. data/lib/spec/expectations/errors.rb +12 -0
  125. data/lib/spec/expectations/extensions.rb +1 -0
  126. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  127. data/lib/spec/expectations/fail_with.rb +45 -0
  128. data/lib/spec/expectations/handler.rb +50 -0
  129. data/lib/spec/interop/test.rb +44 -0
  130. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  131. data/lib/spec/interop/test/unit/testcase.rb +56 -0
  132. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  133. data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  134. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  135. data/lib/spec/matchers.rb +195 -0
  136. data/lib/spec/matchers/be.rb +210 -0
  137. data/lib/spec/matchers/be_close.rb +32 -0
  138. data/lib/spec/matchers/be_instance_of.rb +26 -0
  139. data/lib/spec/matchers/be_kind_of.rb +26 -0
  140. data/lib/spec/matchers/change.rb +151 -0
  141. data/lib/spec/matchers/compatibility.rb +14 -0
  142. data/lib/spec/matchers/dsl.rb +20 -0
  143. data/lib/spec/matchers/eql.rb +42 -0
  144. data/lib/spec/matchers/equal.rb +53 -0
  145. data/lib/spec/matchers/errors.rb +5 -0
  146. data/lib/spec/matchers/exist.rb +16 -0
  147. data/lib/spec/matchers/extensions/instance_exec.rb +31 -0
  148. data/lib/spec/matchers/generated_descriptions.rb +36 -0
  149. data/lib/spec/matchers/has.rb +35 -0
  150. data/lib/spec/matchers/have.rb +151 -0
  151. data/lib/spec/matchers/include.rb +44 -0
  152. data/lib/spec/matchers/match.rb +21 -0
  153. data/lib/spec/matchers/match_array.rb +71 -0
  154. data/lib/spec/matchers/matcher.rb +87 -0
  155. data/lib/spec/matchers/method_missing.rb +9 -0
  156. data/lib/spec/matchers/operator_matcher.rb +78 -0
  157. data/lib/spec/matchers/pretty.rb +37 -0
  158. data/lib/spec/matchers/raise_error.rb +129 -0
  159. data/lib/spec/matchers/respond_to.rb +71 -0
  160. data/lib/spec/matchers/satisfy.rb +47 -0
  161. data/lib/spec/matchers/simple_matcher.rb +133 -0
  162. data/lib/spec/matchers/throw_symbol.rb +104 -0
  163. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  164. data/lib/spec/mocks.rb +200 -0
  165. data/lib/spec/mocks/argument_expectation.rb +51 -0
  166. data/lib/spec/mocks/argument_matchers.rb +237 -0
  167. data/lib/spec/mocks/error_generator.rb +92 -0
  168. data/lib/spec/mocks/errors.rb +10 -0
  169. data/lib/spec/mocks/example_methods.rb +69 -0
  170. data/lib/spec/mocks/extensions.rb +1 -0
  171. data/lib/spec/mocks/extensions/object.rb +3 -0
  172. data/lib/spec/mocks/framework.rb +15 -0
  173. data/lib/spec/mocks/message_expectation.rb +329 -0
  174. data/lib/spec/mocks/methods.rb +89 -0
  175. data/lib/spec/mocks/mock.rb +71 -0
  176. data/lib/spec/mocks/order_group.rb +29 -0
  177. data/lib/spec/mocks/proxy.rb +245 -0
  178. data/lib/spec/mocks/space.rb +28 -0
  179. data/lib/spec/rake/spectask.rb +230 -0
  180. data/lib/spec/rake/verify_rcov.rb +52 -0
  181. data/lib/spec/ruby.rb +9 -0
  182. data/lib/spec/runner.rb +66 -0
  183. data/lib/spec/runner/backtrace_tweaker.rb +77 -0
  184. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  185. data/lib/spec/runner/command_line.rb +15 -0
  186. data/lib/spec/runner/configuration.rb +194 -0
  187. data/lib/spec/runner/differs/default.rb +93 -0
  188. data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  189. data/lib/spec/runner/drb_command_line.rb +33 -0
  190. data/lib/spec/runner/example_group_runner.rb +59 -0
  191. data/lib/spec/runner/extensions/kernel.rb +9 -0
  192. data/lib/spec/runner/formatter/base_formatter.rb +139 -0
  193. data/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  194. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  195. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  196. data/lib/spec/runner/formatter/html_formatter.rb +338 -0
  197. data/lib/spec/runner/formatter/nested_text_formatter.rb +47 -0
  198. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  199. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  200. data/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  201. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  202. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  203. data/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  204. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  205. data/lib/spec/runner/heckle_runner.rb +72 -0
  206. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  207. data/lib/spec/runner/line_number_query.rb +78 -0
  208. data/lib/spec/runner/option_parser.rb +225 -0
  209. data/lib/spec/runner/options.rb +406 -0
  210. data/lib/spec/runner/reporter.rb +171 -0
  211. data/lib/spec/stubs/cucumber.rb +5 -0
  212. data/lib/spec/test/unit.rb +10 -0
  213. data/lib/spec/version.rb +14 -0
  214. data/resources/helpers/cmdline.rb +8 -0
  215. data/resources/rake/examples.rake +7 -0
  216. data/resources/rake/examples_with_rcov.rake +9 -0
  217. data/resources/rake/failing_examples_with_html.rake +9 -0
  218. data/resources/rake/verify_rcov.rake +7 -0
  219. data/spec/README.jruby +15 -0
  220. data/spec/autotest/autotest_helper.rb +8 -0
  221. data/spec/autotest/autotest_matchers.rb +38 -0
  222. data/spec/autotest/discover_spec.rb +8 -0
  223. data/spec/autotest/failed_results_re_spec.rb +31 -0
  224. data/spec/autotest/rspec_spec.rb +111 -0
  225. data/spec/ruby_forker.rb +13 -0
  226. data/spec/spec.opts +6 -0
  227. data/spec/spec/dsl/main_spec.rb +95 -0
  228. data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  229. data/spec/spec/example/example_group_factory_spec.rb +180 -0
  230. data/spec/spec/example/example_group_methods_spec.rb +758 -0
  231. data/spec/spec/example/example_group_proxy_spec.rb +107 -0
  232. data/spec/spec/example/example_group_spec.rb +643 -0
  233. data/spec/spec/example/example_matcher_spec.rb +86 -0
  234. data/spec/spec/example/example_methods_spec.rb +162 -0
  235. data/spec/spec/example/example_proxy_spec.rb +57 -0
  236. data/spec/spec/example/helper_method_spec.rb +24 -0
  237. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  238. data/spec/spec/example/pending_module_spec.rb +58 -0
  239. data/spec/spec/example/predicate_matcher_spec.rb +41 -0
  240. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  241. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  242. data/spec/spec/example/subject_spec.rb +103 -0
  243. data/spec/spec/expectations/differs/default_spec.rb +194 -0
  244. data/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  245. data/spec/spec/expectations/fail_with_spec.rb +96 -0
  246. data/spec/spec/expectations/handler_spec.rb +206 -0
  247. data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  248. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  249. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  250. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  251. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  252. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  253. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  254. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  255. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  256. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  257. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  258. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  259. data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  260. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  261. data/spec/spec/matchers/be_close_spec.rb +50 -0
  262. data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  263. data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  264. data/spec/spec/matchers/be_spec.rb +311 -0
  265. data/spec/spec/matchers/change_spec.rb +349 -0
  266. data/spec/spec/matchers/compatibility_spec.rb +28 -0
  267. data/spec/spec/matchers/description_generation_spec.rb +160 -0
  268. data/spec/spec/matchers/dsl_spec.rb +34 -0
  269. data/spec/spec/matchers/eql_spec.rb +33 -0
  270. data/spec/spec/matchers/equal_spec.rb +57 -0
  271. data/spec/spec/matchers/exist_spec.rb +65 -0
  272. data/spec/spec/matchers/has_spec.rb +81 -0
  273. data/spec/spec/matchers/have_spec.rb +396 -0
  274. data/spec/spec/matchers/include_spec.rb +88 -0
  275. data/spec/spec/matchers/match_array_spec.rb +108 -0
  276. data/spec/spec/matchers/match_spec.rb +57 -0
  277. data/spec/spec/matchers/matcher_methods_spec.rb +63 -0
  278. data/spec/spec/matchers/matcher_spec.rb +228 -0
  279. data/spec/spec/matchers/matchers_spec.rb +2 -0
  280. data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  281. data/spec/spec/matchers/raise_error_spec.rb +333 -0
  282. data/spec/spec/matchers/respond_to_spec.rb +116 -0
  283. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  284. data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  285. data/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  286. data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  287. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  288. data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  289. data/spec/spec/mocks/at_least_spec.rb +97 -0
  290. data/spec/spec/mocks/at_most_spec.rb +93 -0
  291. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  292. data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  293. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  294. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  295. data/spec/spec/mocks/bug_report_496_spec.rb +19 -0
  296. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  297. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  298. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  299. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  300. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  301. data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  302. data/spec/spec/mocks/double_spec.rb +12 -0
  303. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  304. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  305. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  306. data/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  307. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  308. data/spec/spec/mocks/mock_spec.rb +594 -0
  309. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  310. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  311. data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  312. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  313. data/spec/spec/mocks/options_hash_spec.rb +35 -0
  314. data/spec/spec/mocks/partial_mock_spec.rb +164 -0
  315. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  316. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  317. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  318. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  319. data/spec/spec/mocks/stub_chain_spec.rb +42 -0
  320. data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  321. data/spec/spec/mocks/stub_spec.rb +203 -0
  322. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  323. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  324. data/spec/spec/mocks/unstub_spec.rb +127 -0
  325. data/spec/spec/package/bin_spec_spec.rb +16 -0
  326. data/spec/spec/rake/spectask_spec.rb +150 -0
  327. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  328. data/spec/spec/runner/command_line_spec.rb +141 -0
  329. data/spec/spec/runner/configuration_spec.rb +320 -0
  330. data/spec/spec/runner/drb_command_line_spec.rb +148 -0
  331. data/spec/spec/runner/empty_file.txt +0 -0
  332. data/spec/spec/runner/example_group_runner_spec.rb +26 -0
  333. data/spec/spec/runner/examples.txt +2 -0
  334. data/spec/spec/runner/failed.txt +3 -0
  335. data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  336. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  337. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  338. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  339. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  340. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  341. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  342. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  343. data/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  344. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +305 -0
  345. data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  346. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  347. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  348. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  349. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  350. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  351. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  352. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  353. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  354. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  355. data/spec/spec/runner/heckler_spec.rb +20 -0
  356. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  357. data/spec/spec/runner/line_number_query_spec.rb +129 -0
  358. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  359. data/spec/spec/runner/option_parser_spec.rb +554 -0
  360. data/spec/spec/runner/options_spec.rb +554 -0
  361. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  362. data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  363. data/spec/spec/runner/output_one_time_spec.rb +15 -0
  364. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +105 -0
  365. data/spec/spec/runner/reporter_spec.rb +244 -0
  366. data/spec/spec/runner/resources/a_bar.rb +0 -0
  367. data/spec/spec/runner/resources/a_foo.rb +0 -0
  368. data/spec/spec/runner/resources/a_spec.rb +1 -0
  369. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  370. data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  371. data/spec/spec/runner/spec.opts +2 -0
  372. data/spec/spec/runner/spec_drb.opts +2 -0
  373. data/spec/spec/runner/spec_spaced.opts +2 -0
  374. data/spec/spec/runner_spec.rb +13 -0
  375. data/spec/spec_helper.rb +112 -0
  376. data/spec/support/macros.rb +29 -0
  377. data/spec/support/spec_classes.rb +133 -0
  378. metadata +505 -0
@@ -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,195 @@
1
+ require 'spec/matchers/extensions/instance_exec'
2
+ require 'spec/matchers/pretty'
3
+ require 'spec/matchers/matcher'
4
+ require 'spec/matchers/operator_matcher'
5
+ require 'spec/matchers/be'
6
+ require 'spec/matchers/be_close'
7
+ require 'spec/matchers/be_instance_of'
8
+ require 'spec/matchers/be_kind_of'
9
+ require 'spec/matchers/change'
10
+ require 'spec/matchers/eql'
11
+ require 'spec/matchers/equal'
12
+ require 'spec/matchers/errors'
13
+ require 'spec/matchers/exist'
14
+ require 'spec/matchers/generated_descriptions'
15
+ require 'spec/matchers/has'
16
+ require 'spec/matchers/have'
17
+ require 'spec/matchers/include'
18
+ require 'spec/matchers/match'
19
+ require 'spec/matchers/match_array'
20
+ require 'spec/matchers/method_missing'
21
+ require 'spec/matchers/raise_error'
22
+ require 'spec/matchers/respond_to'
23
+ require 'spec/matchers/satisfy'
24
+ require 'spec/matchers/simple_matcher'
25
+ require 'spec/matchers/throw_symbol'
26
+ require 'spec/matchers/wrap_expectation'
27
+ require 'spec/matchers/compatibility'
28
+ require 'spec/matchers/dsl'
29
+
30
+ module Spec
31
+
32
+ # RSpec ships with a number of useful Expression Matchers. An Expression Matcher
33
+ # is any object that responds to the following methods:
34
+ #
35
+ # matches?(actual)
36
+ # failure_message_for_should
37
+ #
38
+ # These methods are also part of the matcher protocol, but are optional:
39
+ #
40
+ # does_not_match?(actual)
41
+ # failure_message_for_should_not
42
+ # description #optional
43
+ #
44
+ # These methods are from older versions of the protocol. They are still supported,
45
+ # but are not recommended:
46
+ #
47
+ # failure_message (use failure_message_for_should instead)
48
+ # negative_failure_message (use failure_message_for_should_not instead)
49
+ #
50
+ # See Spec::Expectations to learn how to use these as Expectation Matchers.
51
+ #
52
+ # == Predicates
53
+ #
54
+ # In addition to those Expression Matchers that are defined explicitly, RSpec will
55
+ # create custom Matchers on the fly for any arbitrary predicate, giving your specs
56
+ # a much more natural language feel.
57
+ #
58
+ # A Ruby predicate is a method that ends with a "?" and returns true or false.
59
+ # Common examples are +empty?+, +nil?+, and +instance_of?+.
60
+ #
61
+ # All you need to do is write +should be_+ followed by the predicate without
62
+ # the question mark, and RSpec will figure it out from there. For example:
63
+ #
64
+ # [].should be_empty => [].empty? #passes
65
+ # [].should_not be_empty => [].empty? #fails
66
+ #
67
+ # In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
68
+ # and "be_an_", making your specs read much more naturally:
69
+ #
70
+ # "a string".should be_an_instance_of(String) =>"a string".instance_of?(String) #passes
71
+ #
72
+ # 3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
73
+ # 3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
74
+ # 3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
75
+ # 3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
76
+ #
77
+ # RSpec will also create custom matchers for predicates like +has_key?+. To
78
+ # use this feature, just state that the object should have_key(:key) and RSpec will
79
+ # call has_key?(:key) on the target. For example:
80
+ #
81
+ # {:a => "A"}.should have_key(:a) => {:a => "A"}.has_key?(:a) #passes
82
+ # {:a => "A"}.should have_key(:b) => {:a => "A"}.has_key?(:b) #fails
83
+ #
84
+ # You can use this feature to invoke any predicate that begins with "has_", whether it is
85
+ # part of the Ruby libraries (like +Hash#has_key?+) or a method you wrote on your own class.
86
+ #
87
+ # == Custom Matchers
88
+ #
89
+ # When you find that none of the stock Expectation Matchers provide a natural
90
+ # feeling expectation, you can very easily write your own using RSpec's matcher
91
+ # DSL or writing one from scratch.
92
+ #
93
+ # === Matcher DSL
94
+ #
95
+ # Imagine that you are writing a game in which players can be in various
96
+ # zones on a virtual board. To specify that bob should be in zone 4, you
97
+ # could say:
98
+ #
99
+ # bob.current_zone.should eql(Zone.new("4"))
100
+ #
101
+ # But you might find it more expressive to say:
102
+ #
103
+ # bob.should be_in_zone("4")
104
+ #
105
+ # and/or
106
+ #
107
+ # bob.should_not be_in_zone("3")
108
+ #
109
+ # You can create such a matcher like so:
110
+ #
111
+ # Spec::Matchers.define :be_in_zone do |zone|
112
+ # match do |player|
113
+ # player.in_zone?(zone)
114
+ # end
115
+ # end
116
+ #
117
+ # This will generate a <tt>be_in_zone</tt> method that returns a matcher
118
+ # with logical default messages for failures. You can override the failure
119
+ # messages and the generated description as follows:
120
+ #
121
+ # Spec::Matchers.define :be_in_zone do |zone|
122
+ # match do |player|
123
+ # player.in_zone?(zone)
124
+ # end
125
+ # failure_message_for_should do |player|
126
+ # # generate and return the appropriate string.
127
+ # end
128
+ # failure_message_for_should_not do |player|
129
+ # # generate and return the appropriate string.
130
+ # end
131
+ # description do
132
+ # # generate and return the appropriate string.
133
+ # end
134
+ # end
135
+ #
136
+ # Each of the message-generation methods has access to the block arguments
137
+ # passed to the <tt>create</tt> method (in this case, <tt>zone</tt>). The
138
+ # failure message methods (<tt>failure_message_for_should</tt> and
139
+ # <tt>failure_message_for_should_not</tt>) are passed the actual value (the
140
+ # receiver of <tt>should</tt> or <tt>should_not</tt>).
141
+ #
142
+ # === Custom Matcher from scratch
143
+ #
144
+ # You could also write a custom matcher from scratch, as follows:
145
+ #
146
+ # class BeInZone
147
+ # def initialize(expected)
148
+ # @expected = expected
149
+ # end
150
+ # def matches?(target)
151
+ # @target = target
152
+ # @target.current_zone.eql?(Zone.new(@expected))
153
+ # end
154
+ # def failure_message_for_should
155
+ # "expected #{@target.inspect} to be in Zone #{@expected}"
156
+ # end
157
+ # def failure_message_for_should_not
158
+ # "expected #{@target.inspect} not to be in Zone #{@expected}"
159
+ # end
160
+ # end
161
+ #
162
+ # ... and a method like this:
163
+ #
164
+ # def be_in_zone(expected)
165
+ # BeInZone.new(expected)
166
+ # end
167
+ #
168
+ # And then expose the method to your specs. This is normally done
169
+ # by including the method and the class in a module, which is then
170
+ # included in your spec:
171
+ #
172
+ # module CustomGameMatchers
173
+ # class BeInZone
174
+ # ...
175
+ # end
176
+ #
177
+ # def be_in_zone(expected)
178
+ # ...
179
+ # end
180
+ # end
181
+ #
182
+ # describe "Player behaviour" do
183
+ # include CustomGameMatchers
184
+ # ...
185
+ # end
186
+ #
187
+ # or you can include in globally in a spec_helper.rb file <tt>require</tt>d
188
+ # from your spec file(s):
189
+ #
190
+ # Spec::Runner.configure do |config|
191
+ # config.include(CustomGameMatchers)
192
+ # end
193
+ #
194
+ module Matchers; end
195
+ end
@@ -0,0 +1,210 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class Be #:nodoc:
5
+ include Spec::Matchers::Pretty
6
+
7
+ def initialize(*args)
8
+ @expected = args.empty? ? true : set_expected(args.shift)
9
+ @args = args
10
+ @comparison_method = nil
11
+ end
12
+
13
+ def matches?(actual)
14
+ @actual = actual
15
+ handling_predicate? ? run_predicate_on(actual) : match_or_compare(actual)
16
+ end
17
+
18
+ def run_predicate_on(actual)
19
+ begin
20
+ return @result = actual.__send__(predicate, *@args)
21
+ rescue NameError => predicate_missing_error
22
+ "this needs to be here or rcov will not count this branch even though it's executed in a code example"
23
+ end
24
+
25
+ begin
26
+ return @result = actual.__send__(present_tense_predicate, *@args)
27
+ rescue NameError
28
+ raise predicate_missing_error
29
+ end
30
+ end
31
+
32
+ def failure_message_for_should
33
+ if handling_predicate?
34
+ if predicate == :nil?
35
+ "expected nil, got #{@actual.inspect}"
36
+ else
37
+ "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
38
+ end
39
+ else
40
+ "expected #{@comparison_method} #{expected}, got #{@actual.inspect}".gsub(' ',' ')
41
+ end
42
+ end
43
+
44
+ def failure_message_for_should_not
45
+ if handling_predicate?
46
+ if predicate == :nil?
47
+ "expected not nil, got nil"
48
+ else
49
+ "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
50
+ end
51
+ else
52
+ message = <<-MESSAGE
53
+ 'should_not be #{@comparison_method} #{expected}' not only FAILED,
54
+ it is a bit confusing.
55
+ MESSAGE
56
+
57
+ raise message << ([:===,:==].include?(@comparison_method) ?
58
+ "It might be more clearly expressed without the \"be\"?" :
59
+ "It might be more clearly expressed in the positive?")
60
+ end
61
+ end
62
+
63
+ def description
64
+ "#{prefix_to_sentence}#{comparison} #{expected_to_sentence}#{args_to_sentence}".gsub(/\s+/,' ')
65
+ end
66
+
67
+ [:==, :<, :<=, :>=, :>, :===].each do |method|
68
+ define_method method do |expected|
69
+ compare_to(expected, :using => method)
70
+ self
71
+ end
72
+ end
73
+
74
+ private
75
+ def match_or_compare(actual)
76
+ TrueClass === @expected ? @actual : @actual.__send__(comparison_method, @expected)
77
+ end
78
+
79
+ def comparison_method
80
+ @comparison_method || :equal?
81
+ end
82
+
83
+ def expected
84
+ @expected
85
+ end
86
+
87
+ def compare_to(expected, opts)
88
+ @expected, @comparison_method = expected, opts[:using]
89
+ end
90
+
91
+ def set_expected(expected)
92
+ Symbol === expected ? parse_expected(expected) : expected
93
+ end
94
+
95
+ def parse_expected(expected)
96
+ ["be_an_","be_a_","be_"].each do |prefix|
97
+ handling_predicate!
98
+ if expected.to_s =~ /^#{prefix}/
99
+ set_prefix(prefix)
100
+ expected = expected.to_s.sub(prefix,"")
101
+ [true, false, nil].each do |val|
102
+ return val if val.to_s == expected
103
+ end
104
+ return expected.to_sym
105
+ end
106
+ end
107
+ end
108
+
109
+ def set_prefix(prefix)
110
+ @prefix = prefix
111
+ end
112
+
113
+ def prefix
114
+ # FIXME - this is a bit goofy - but we get failures
115
+ # if just defining @prefix = nil in initialize
116
+ @prefix = nil unless defined?(@prefix)
117
+ @prefix
118
+ end
119
+
120
+ def handling_predicate!
121
+ @handling_predicate = true
122
+ end
123
+
124
+ def handling_predicate?
125
+ return false if [true, false, nil].include?(expected)
126
+ # FIXME - this is a bit goofy - but we get failures
127
+ # if just defining @handling_predicate = nil or false in initialize
128
+ return defined?(@handling_predicate) ? @handling_predicate : nil
129
+ end
130
+
131
+ def predicate
132
+ "#{@expected.to_s}?".to_sym
133
+ end
134
+
135
+ def present_tense_predicate
136
+ "#{@expected.to_s}s?".to_sym
137
+ end
138
+
139
+ def args_to_s
140
+ @args.empty? ? "" : parenthesize(inspected_args.join(', '))
141
+ end
142
+
143
+ def parenthesize(string)
144
+ return "(#{string})"
145
+ end
146
+
147
+ def inspected_args
148
+ @args.collect{|a| a.inspect}
149
+ end
150
+
151
+ def comparison
152
+ @comparison_method.nil? ? " " : "be #{@comparison_method.to_s} "
153
+ end
154
+
155
+ def expected_to_sentence
156
+ split_words(expected)
157
+ end
158
+
159
+ def prefix_to_sentence
160
+ split_words(prefix)
161
+ end
162
+
163
+ def args_to_sentence
164
+ to_sentence(@args)
165
+ end
166
+
167
+ end
168
+
169
+ # :call-seq:
170
+ # should be_true
171
+ # should be_false
172
+ # should be_nil
173
+ # should be_[arbitrary_predicate](*args)
174
+ # should_not be_nil
175
+ # should_not be_[arbitrary_predicate](*args)
176
+ #
177
+ # Given true, false, or nil, will pass if actual value is
178
+ # true, false or nil (respectively). Given no args means
179
+ # the caller should satisfy an if condition (to be or not to be).
180
+ #
181
+ # Predicates are any Ruby method that ends in a "?" and returns true or false.
182
+ # Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
183
+ # convert that into a query against the target object.
184
+ #
185
+ # The arbitrary_predicate feature will handle any predicate
186
+ # prefixed with "be_an_" (e.g. be_an_instance_of), "be_a_" (e.g. be_a_kind_of)
187
+ # or "be_" (e.g. be_empty), letting you choose the prefix that best suits the predicate.
188
+ #
189
+ # == Examples
190
+ #
191
+ # target.should be_true
192
+ # target.should be_false
193
+ # target.should be_nil
194
+ # target.should_not be_nil
195
+ #
196
+ # collection.should be_empty #passes if target.empty?
197
+ # target.should_not be_empty #passes unless target.empty?
198
+ # target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
199
+ def be(*args)
200
+ Matchers::Be.new(*args)
201
+ end
202
+
203
+ # passes if target.kind_of?(klass)
204
+ def be_a(klass)
205
+ be_a_kind_of(klass)
206
+ end
207
+
208
+ alias_method :be_an, :be_a
209
+ end
210
+ end