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
@@ -1,38 +1,53 @@
1
1
  module Spec
2
2
  module Runner
3
3
  class Reporter
4
+ attr_reader :options
4
5
 
5
- def initialize(formatters, backtrace_tweaker)
6
- @formatters = formatters
7
- @backtrace_tweaker = backtrace_tweaker
8
- clear!
6
+ def initialize(options)
7
+ @options = options
8
+ @options.reporter = self
9
+ @failures = []
10
+ @pending_count = 0
11
+ @example_count = 0
12
+ @start_time = nil
13
+ @end_time = nil
9
14
  end
10
15
 
11
- def add_behaviour(name)
12
- @formatters.each{|f| f.add_behaviour(name)}
13
- @behaviour_names << name
16
+ def example_group_started(example_group)
17
+ @example_group = example_group
18
+ formatters.each do |f|
19
+ f.example_group_started(example_group)
20
+ end
14
21
  end
15
22
 
16
- def example_started(name)
17
- @formatters.each{|f| f.example_started(name)}
23
+ def example_started(example)
24
+ formatters.each{|f| f.example_started(example)}
18
25
  end
19
26
 
20
- def example_finished(name, error=nil, failure_location=nil, not_implemented = false)
21
- @example_names << name
27
+ def example_finished(example, error=nil)
28
+ @example_count += 1
22
29
 
23
- if not_implemented
24
- example_not_implemented(name)
25
- elsif error.nil?
26
- example_passed(name)
30
+ if error.nil?
31
+ example_passed(example)
32
+ elsif Spec::Example::ExamplePendingError === error
33
+ example_pending(example, example.location, error.message)
27
34
  else
28
- example_failed(name, error, failure_location)
35
+ example_failed(example, error)
36
+ end
37
+ end
38
+
39
+ def example_failed(example, error)
40
+ backtrace_tweaker.tweak_backtrace(error)
41
+ failure = Failure.new(@example_group.description, example.description, error)
42
+ @failures << failure
43
+ formatters.each do |f|
44
+ f.example_failed(example, @failures.length, failure)
29
45
  end
30
46
  end
31
47
 
32
48
  def start(number_of_examples)
33
- clear!
34
49
  @start_time = Time.new
35
- @formatters.each{|f| f.start(number_of_examples)}
50
+ formatters.each{|f| f.start(number_of_examples)}
36
51
  end
37
52
 
38
53
  def end
@@ -41,74 +56,116 @@ module Spec
41
56
 
42
57
  # Dumps the summary and returns the total number of failures
43
58
  def dump
44
- @formatters.each{|f| f.start_dump}
59
+ formatters.each{|f| f.start_dump}
60
+ dump_pending
45
61
  dump_failures
46
- @formatters.each{|f| f.dump_summary(duration, @example_names.length, @failures.length, @not_implemented_count)}
62
+ formatters.each do |f|
63
+ f.dump_summary(duration, @example_count, @failures.length, @pending_count)
64
+ f.close
65
+ end
47
66
  @failures.length
48
67
  end
49
68
 
69
+ class Failure
70
+ def initialize(group_description, example_description, exception) # :nodoc:
71
+ @example_name = "#{group_description} #{example_description}"
72
+ @exception = exception
73
+ end
74
+
75
+ # The Exception object raised
76
+ attr_reader :exception
77
+
78
+ # Header messsage for reporting this failure, including the name of the
79
+ # example and an indicator of the type of failure. FAILED indicates a
80
+ # failed expectation. FIXED indicates a pending example that passes, and
81
+ # no longer needs to be pending. RuntimeError indicates that a
82
+ # RuntimeError occured.
83
+ #
84
+ # == Examples
85
+ #
86
+ # 'A new account should have a zero balance' FAILED
87
+ # 'A new account should have a zero balance' FIXED
88
+ # RuntimeError in 'A new account should have a zero balance'
89
+ def header
90
+ if expectation_not_met?
91
+ "'#{@example_name}' FAILED"
92
+ elsif pending_fixed?
93
+ "'#{@example_name}' FIXED"
94
+ else
95
+ "#{@exception.class.name} in '#{@example_name}'"
96
+ end
97
+ end
98
+
99
+ def pending_fixed? # :nodoc:
100
+ @exception.is_a?(Spec::Example::PendingExampleFixedError)
101
+ end
102
+
103
+ def expectation_not_met? # :nodoc:
104
+ @exception.is_a?(Spec::Expectations::ExpectationNotMetError)
105
+ end
106
+ end
107
+
50
108
  private
51
-
52
- def clear!
53
- @behaviour_names = []
54
- @failures = []
55
- @not_implemented_count = 0
56
- @example_names = []
57
- @start_time = nil
58
- @end_time = nil
109
+
110
+ def formatters
111
+ @options.formatters
112
+ end
113
+
114
+ def backtrace_tweaker
115
+ @options.backtrace_tweaker
59
116
  end
60
117
 
61
118
  def dump_failures
62
119
  return if @failures.empty?
63
120
  @failures.inject(1) do |index, failure|
64
- @formatters.each{|f| f.dump_failure(index, failure)}
121
+ formatters.each{|f| f.dump_failure(index, failure)}
65
122
  index + 1
66
123
  end
67
124
  end
68
125
 
126
+ def dump_pending
127
+ formatters.each{|f| f.dump_pending}
128
+ end
129
+
69
130
  def duration
70
131
  return @end_time - @start_time unless (@end_time.nil? or @start_time.nil?)
71
132
  return "0.0"
72
133
  end
73
134
 
74
- def example_passed(name)
75
- @formatters.each{|f| f.example_passed(name)}
135
+ def example_passed(example)
136
+ formatters.each{|f| f.example_passed(example)}
76
137
  end
77
138
 
78
- def example_failed(name, error, failure_location)
79
- @backtrace_tweaker.tweak_backtrace(error, failure_location)
80
- example_name = "#{@behaviour_names.last} #{name}"
81
- failure = Failure.new(example_name, error)
82
- @failures << failure
83
- @formatters.each{|f| f.example_failed(name, @failures.length, failure)}
84
- end
85
-
86
- def example_not_implemented(name)
87
- @not_implemented_count += 1
88
- @formatters.each{|f| f.example_not_implemented(name)}
89
- end
90
-
91
- class Failure
92
- attr_reader :exception
93
-
94
- def initialize(example_name, exception)
95
- @example_name = example_name
96
- @exception = exception
97
- end
139
+ EXAMPLE_PENDING_DEPRECATION_WARNING = <<-WARNING
98
140
 
99
- def header
100
- if expectation_not_met?
101
- "'#{@example_name}' FAILED"
141
+ *********************************************************************
142
+ DEPRECATION WARNING: RSpec's formatters have changed example_pending
143
+ to accept two arguments instead of three. Please see the rdoc
144
+ for Spec::Runner::Formatter::BaseFormatter#example_pending
145
+ for more information.
146
+
147
+ Please update any custom formatters to accept only two arguments
148
+ to example_pending. Support for example_pending with two arguments
149
+ and this warning message will be removed after the RSpec 2.0 release.
150
+ *********************************************************************
151
+ WARNING
152
+
153
+ def example_pending(example, ignore, message="Not Yet Implemented")
154
+ @pending_count += 1
155
+ formatters.each do |formatter|
156
+ if formatter_uses_deprecated_example_pending_method?(formatter)
157
+ Spec.warn EXAMPLE_PENDING_DEPRECATION_WARNING
158
+ formatter.example_pending(example, message, example.location)
102
159
  else
103
- "#{@exception.class.name} in '#{@example_name}'"
160
+ formatter.example_pending(example, message)
104
161
  end
105
162
  end
106
-
107
- def expectation_not_met?
108
- @exception.is_a?(Spec::Expectations::ExpectationNotMetError)
109
- end
110
-
111
163
  end
164
+
165
+ def formatter_uses_deprecated_example_pending_method?(formatter)
166
+ formatter.method(:example_pending).arity == 3
167
+ end
168
+
112
169
  end
113
170
  end
114
171
  end
data/lib/spec/runner.rb CHANGED
@@ -1,151 +1,31 @@
1
- require 'spec/runner/formatter'
2
- require 'spec/runner/behaviour_runner'
1
+ require 'spec/runner/configuration'
3
2
  require 'spec/runner/options'
4
3
  require 'spec/runner/option_parser'
4
+ require 'spec/runner/example_group_runner'
5
5
  require 'spec/runner/command_line'
6
6
  require 'spec/runner/drb_command_line'
7
7
  require 'spec/runner/backtrace_tweaker'
8
8
  require 'spec/runner/reporter'
9
- require 'spec/runner/extensions/object'
9
+ require 'spec/runner/line_number_query'
10
+ require 'spec/runner/class_and_arguments_parser'
10
11
  require 'spec/runner/extensions/kernel'
11
- require 'spec/runner/spec_parser'
12
12
 
13
13
  module Spec
14
- # == Behaviours and Examples
15
- #
16
- # Rather than expressing examples in classes, RSpec uses a custom domain specific language to
17
- # describe Behaviours and Examples of those behaviours.
18
- #
19
- # A Behaviour is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
20
- # in which you will run your executable example - a set of known objects in a known starting state.
21
- # We begin be describing
22
- #
23
- # describe Account do
24
- #
25
- # before do
26
- # @account = Account.new
27
- # end
28
- #
29
- # it "should have a balance of $0" do
30
- # @account.balance.should == Money.new(0, :dollars)
31
- # end
32
- #
33
- # end
34
- #
35
- # We use the before block to set up the Behaviour (given), and then the #it method to
36
- # hold the example code that expresses the event (when) and the expected outcome (then).
37
- #
38
- # == Helper Methods
39
- #
40
- # A primary goal of RSpec is to keep the examples clear. We therefore prefer
41
- # less indirection than you might see in xUnit examples and in well factored, DRY production code. We feel
42
- # that duplication is OK if removing it makes it harder to understand an example without
43
- # having to look elsewhere to understand its context.
44
- #
45
- # That said, RSpec does support some level of encapsulating common code in helper
46
- # methods that can exist within a context or within an included module.
47
- #
48
- # == Setup and Teardown
49
- #
50
- # You can use before and after within a Behaviour. Both methods take an optional
51
- # scope argument so you can run the block before :each example or before :all examples
52
- #
53
- # describe "..." do
54
- # before :all do
55
- # ...
56
- # end
57
- #
58
- # before :each do
59
- # ...
60
- # end
61
- #
62
- # it "should do something" do
63
- # ...
64
- # end
65
- #
66
- # it "should do something else" do
67
- # ...
68
- # end
69
- #
70
- # after :each do
71
- # ...
72
- # end
73
- #
74
- # after :all do
75
- # ...
76
- # end
77
- #
78
- # end
79
- #
80
- # The <tt>before :each</tt> block will run before each of the examples, once for each example. Likewise,
81
- # the <tt>after :each</tt> block will run after each of the examples.
82
- #
83
- # It is also possible to specify a <tt>before :all</tt> and <tt>after :all</tt>
84
- # block that will run only once for each behaviour, respectively before the first <code>before :each</code>
85
- # and after the last <code>after :each</code>. The use of these is generally discouraged, because it
86
- # introduces dependencies between the examples. Still, it might prove useful for very expensive operations
87
- # if you know what you are doing.
88
- #
89
- # == Local helper methods
90
- #
91
- # You can include local helper methods by simply expressing them within a context:
92
- #
93
- # describe "..." do
94
- #
95
- # it "..." do
96
- # helper_method
97
- # end
98
- #
99
- # def helper_method
100
- # ...
101
- # end
102
- #
103
- # end
104
- #
105
- # == Included helper methods
106
- #
107
- # You can include helper methods in multiple contexts by expressing them within
108
- # a module, and then including that module in your context:
109
- #
110
- # module AccountExampleHelperMethods
111
- # def helper_method
112
- # ...
113
- # end
114
- # end
115
- #
116
- # describe "A new account" do
117
- # include AccountExampleHelperMethods
118
- # before do
119
- # @account = Account.new
120
- # end
121
- #
122
- # it "should have a balance of $0" do
123
- # helper_method
124
- # @account.balance.should eql(Money.new(0, :dollars))
125
- # end
126
- # end
127
- #
128
- # == Shared behaviour
129
- #
130
- # You can define a shared behaviour, that may be used on other behaviours
131
- #
132
- # describe "All Editions", :shared => true do
133
- # it "all editions behaviour" ...
134
- # end
135
- #
136
- # describe SmallEdition do
137
- # it_should_behave_like "All Editions"
138
- #
139
- # it "should do small edition stuff" do
140
- # ...
141
- # end
142
- # end
143
14
  module Runner
15
+
16
+ class ExampleGroupCreationListener
17
+ def register_example_group(klass)
18
+ Spec::Runner.options.add_example_group klass
19
+ end
20
+ end
21
+
22
+ Spec::Example::ExampleGroupFactory.example_group_creation_listeners << ExampleGroupCreationListener.new
23
+
144
24
  class << self
145
25
  def configuration # :nodoc:
146
- @configuration ||= Spec::DSL::Configuration.new
26
+ @configuration ||= Spec::Runner::Configuration.new
147
27
  end
148
-
28
+
149
29
  # Use this to configure various configurable aspects of
150
30
  # RSpec:
151
31
  #
@@ -154,12 +34,33 @@ module Spec
154
34
  # end
155
35
  #
156
36
  # The yielded <tt>configuration</tt> object is a
157
- # Spec::DSL::Configuration instance. See its RDoc
37
+ # Spec::Runner::Configuration instance. See its RDoc
158
38
  # for details about what you can do with it.
159
39
  #
160
40
  def configure
161
- yield configuration if @configuration.nil?
41
+ yield configuration
42
+ end
43
+
44
+ def autorun # :nodoc:
45
+ at_exit {exit run unless $!}
162
46
  end
47
+
48
+ def options # :nodoc:
49
+ @options ||= begin
50
+ parser = ::Spec::Runner::OptionParser.new($stderr, $stdout)
51
+ parser.order!(ARGV)
52
+ parser.options
53
+ end
54
+ end
55
+
56
+ def use options
57
+ @options = options
58
+ end
59
+
60
+ def run
61
+ options.examples_run? || options.run_examples
62
+ end
63
+
163
64
  end
164
65
  end
165
- end
66
+ end
@@ -0,0 +1,5 @@
1
+ # This plugs RSpec's mocking/stubbing framework into cucumber
2
+ require 'spec/mocks'
3
+ Before {$rspec_mocks ||= Spec::Mocks::Space.new}
4
+ After {$rspec_mocks.reset_all}
5
+ World(Spec::Mocks::ExampleMethods)
@@ -0,0 +1,10 @@
1
+ require 'spec/interop/test'
2
+
3
+ # Hack to stop active_support/dependencies from complaining about
4
+ # 'spec/test/unit' not defining Spec::Test::Unit
5
+ module Spec
6
+ module Test
7
+ module Unit
8
+ end
9
+ end
10
+ end
data/lib/spec/version.rb CHANGED
@@ -1,22 +1,14 @@
1
- module Spec
2
- module VERSION
3
- unless defined? MAJOR
4
- MAJOR = 1
5
- MINOR = 0
6
- TINY = 0
7
- RELEASE_CANDIDATE = nil
8
-
9
- # RANDOM_TOKEN: 0.805184248412641
10
- REV = "$LastChangedRevision: 1986 $".match(/LastChangedRevision: (\d+)/)[1]
11
-
12
- STRING = [MAJOR, MINOR, TINY].join('.')
13
- TAG = "REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}".upcase.gsub(/\.|-/, '_')
14
- FULL_VERSION = "#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')} (r#{REV})"
15
-
16
- NAME = "RSpec"
17
- URL = "http://rspec.rubyforge.org/"
18
-
19
- DESCRIPTION = "#{NAME}-#{FULL_VERSION} - BDD for Ruby\n#{URL}"
20
- end
21
- end
22
- end
1
+ module Spec # :nodoc:
2
+ module VERSION # :nodoc:
3
+ unless defined? MAJOR
4
+ MAJOR = 1
5
+ MINOR = 3
6
+ TINY = 1
7
+ PRE = nil
8
+
9
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
10
+
11
+ SUMMARY = "rspec #{STRING}"
12
+ end
13
+ end
14
+ end
data/lib/spec.rb CHANGED
@@ -1,13 +1,8 @@
1
- require 'spec/extensions'
2
- require 'spec/version'
1
+ require 'spec/deprecation'
2
+ require 'spec/ruby'
3
3
  require 'spec/matchers'
4
4
  require 'spec/expectations'
5
- require 'spec/translator'
6
- require 'spec/dsl'
5
+ require 'spec/example'
7
6
  require 'spec/runner'
8
-
9
- class Object
10
- def metaclass
11
- class << self; self; end
12
- end
13
- end
7
+ require 'spec/version'
8
+ require 'spec/dsl'
@@ -0,0 +1,8 @@
1
+ require 'spec'
2
+
3
+ # Uncommenting next line will break the output feature (no output!!)
4
+ # rspec_options
5
+ options = Spec::Runner::OptionParser.parse(
6
+ ARGV, $stderr, $stdout
7
+ )
8
+ Spec::Runner::CommandLine.run(options)
@@ -0,0 +1,7 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all examples"
5
+ Spec::Rake::SpecTask.new('examples') do |t|
6
+ t.spec_files = FileList['examples/**/*.rb']
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all examples with RCov"
5
+ Spec::Rake::SpecTask.new('examples_with_rcov') do |t|
6
+ t.spec_files = FileList['examples/**/*.rb']
7
+ t.rcov = true
8
+ t.rcov_opts = ['--exclude', 'examples']
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Generate HTML report for failing examples"
5
+ Spec::Rake::SpecTask.new('failing_examples_with_html') do |t|
6
+ t.spec_files = FileList['failing_examples/**/*.rb']
7
+ t.spec_opts = ["--format", "html:doc/reports/tools/failing_examples.html", "--diff"]
8
+ t.fail_on_error = false
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'rake'
2
+ require 'spec/rake/verify_rcov'
3
+
4
+ RCov::VerifyTask.new(:verify_rcov => 'spec:rcov') do |t|
5
+ t.threshold = 100.0
6
+ t.index_html = 'coverage/index.html'
7
+ end
data/spec/README.jruby ADDED
@@ -0,0 +1,15 @@
1
+ = Running specs on JRuby =
2
+
3
+ svn co http://svn.codehaus.org/jruby/trunk jruby
4
+ cd jruby/jruby
5
+ ant clean
6
+ ant
7
+ # put JRuby's bin dir on your PATH
8
+ jruby -S gem install rake --no-ri --no-rdoc
9
+ jruby -S gem install diff-lcs
10
+ jruby -S gem install syntax
11
+ cd ../testsuites/rspec
12
+ mkdir target
13
+ jruby -S rake checkout_code
14
+ cd target/rspec
15
+ jruby bin/spec spec -c
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ begin
3
+ require 'autotest'
4
+ rescue LoadError
5
+ raise "You must install ZenTest to use autotest"
6
+ end
7
+ require 'autotest/rspec'
8
+ require 'autotest/autotest_matchers'
@@ -0,0 +1,38 @@
1
+ module Spec
2
+ module Matchers
3
+ class AutotestMappingMatcher
4
+ def initialize(specs)
5
+ @specs = specs
6
+ end
7
+
8
+ def to(file)
9
+ @file = file
10
+ self
11
+ end
12
+
13
+ def matches?(autotest)
14
+ @autotest = prepare(autotest)
15
+ @actual = autotest.test_files_for(@file)
16
+ @actual == @specs
17
+ end
18
+
19
+ def failure_message
20
+ "expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
21
+ end
22
+
23
+ private
24
+
25
+ def prepare(autotest)
26
+ find_order = @specs.dup << @file
27
+ autotest.instance_eval { @find_order = find_order }
28
+ autotest
29
+ end
30
+
31
+ end
32
+
33
+ def map_specs(specs)
34
+ AutotestMappingMatcher.new(specs)
35
+ end
36
+
37
+ end
38
+ end
@@ -0,0 +1,8 @@
1
+ require 'autotest/autotest_helper'
2
+
3
+ describe Autotest::Rspec, "discovery" do
4
+ it "adds the rspec autotest plugin" do
5
+ Autotest.should_receive(:add_discovery)
6
+ load File.expand_path("../../../lib/autotest/discover.rb", __FILE__)
7
+ end
8
+ end
@@ -0,0 +1,31 @@
1
+ require 'autotest/autotest_helper'
2
+
3
+ describe "failed_results_re" do
4
+ it "should match a failure" do
5
+ re = Autotest::Rspec.new.failed_results_re
6
+ re =~ "1)\n'this example' FAILED\nreason\n/path.rb:37:\n\n"
7
+ $1.should == "this example"
8
+ $2.should == "reason\n/path.rb:37:"
9
+ end
10
+
11
+ it "should match a failure when matcher outputs multiple lines" do
12
+ re = Autotest::Rspec.new.failed_results_re
13
+ re =~ "1)\n'other example' FAILED\n\nreason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:\n\n"
14
+ $1.should == "other example"
15
+ $2.should == "reason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:"
16
+ end
17
+
18
+ it "should match an Error" do
19
+ re = Autotest::Rspec.new.failed_results_re
20
+ re =~ "1)\nRuntimeError in 'this example'\nreason\n/path.rb:37:\n\n"
21
+ $1.should == "this example"
22
+ $2.should == "reason\n/path.rb:37:"
23
+ end
24
+
25
+ it "should match an Error that doesn't end in Error" do
26
+ re = Autotest::Rspec.new.failed_results_re
27
+ re =~ "1)\nInvalidArgument in 'this example'\nreason\n/path.rb:37:\n\n"
28
+ $1.should == "this example"
29
+ $2.should == "reason\n/path.rb:37:"
30
+ end
31
+ end