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
data/Rakefile CHANGED
@@ -1,121 +1,105 @@
1
- $:.unshift('lib')
2
- require 'rubygems'
3
- require 'rake/gempackagetask'
4
- require 'rake/contrib/rubyforgepublisher'
5
- require 'rake/clean'
6
- require 'rake/rdoctask'
1
+ # -*- ruby -*-
2
+ gem 'hoe', '>=2.0.0'
3
+ require 'hoe'
4
+
5
+ $:.unshift 'lib'
6
+
7
7
  require 'spec/version'
8
- dir = File.dirname(__FILE__)
9
- $LOAD_PATH.unshift(File.expand_path("#{dir}/../pre_commit/lib"))
10
- require "pre_commit"
8
+ require 'spec/rake/spectask'
9
+ require 'spec/ruby'
11
10
 
12
- # Some of the tasks are in separate files since they are also part of the website documentation
13
- load File.dirname(__FILE__) + '/rake_tasks/examples.rake'
14
- load File.dirname(__FILE__) + '/rake_tasks/examples_specdoc.rake'
15
- load File.dirname(__FILE__) + '/rake_tasks/examples_with_rcov.rake'
16
- load File.dirname(__FILE__) + '/rake_tasks/failing_examples_with_html.rake'
17
- load File.dirname(__FILE__) + '/rake_tasks/verify_rcov.rake'
11
+ Hoe.spec 'rspec' do
12
+ self.version = Spec::VERSION::STRING
13
+ self.summary = Spec::VERSION::SUMMARY
14
+ self.description = "Behaviour Driven Development for Ruby."
15
+ self.rubyforge_name = 'rspec'
16
+ self.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
17
+ self.extra_dev_deps << ["cucumber",">=0.3"] << ["fakefs",">=0.2.1"] << ["syntax",">=1.0"] << ["diff-lcs",">=1.1.2"]
18
+ self.extra_dev_deps << ["heckle",">=1.4.3"] unless Spec::Ruby.version >= "1.9"
19
+ self.remote_rdoc_dir = "rspec/#{Spec::VERSION::STRING}"
20
+ self.rspec_options = ['--options', 'spec/spec.opts']
21
+ self.history_file = 'History.rdoc'
22
+ self.readme_file = 'README.rdoc'
23
+ self.post_install_message = <<-POST_INSTALL_MESSAGE
24
+ #{'*'*50}
18
25
 
19
- PKG_NAME = "rspec"
20
- PKG_VERSION = Spec::VERSION::STRING
21
- PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
22
- PKG_FILES = FileList[
23
- '[A-Z]*',
24
- 'lib/**/*.rb',
25
- 'spec/**/*.rb',
26
- 'examples/**/*',
27
- 'plugins/**/*'
28
- ]
29
- FileUtils.touch(File.dirname(__FILE__) + '/previous_failures.txt')
26
+ Thank you for installing rspec-#{Spec::VERSION::STRING}
30
27
 
31
- task :default => [:verify_rcov]
28
+ Please be sure to read History.rdoc and Upgrade.rdoc
29
+ for useful information about this release.
32
30
 
33
- desc "Run all specs"
34
- Spec::Rake::SpecTask.new do |t|
35
- t.spec_files = FileList[
36
- 'spec/**/*_spec.rb',
37
- '../RSpec.tmbundle/Support/spec/*_spec.rb'
38
- # TODO: get these in too - need to fix coverage
39
- # '../spec_ui/spec/**/*_spec.rb'
40
- ]
41
- t.spec_opts = ['--options', 'spec.opts']
42
- t.rcov = true
43
- t.rcov_dir = '../doc/output/coverage'
44
- t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
31
+ #{'*'*50}
32
+ POST_INSTALL_MESSAGE
45
33
  end
46
34
 
47
- desc "Run all translated specs"
48
- Spec::Rake::SpecTask.new('translated_specs') do |t|
49
- t.spec_files = FileList['translated_specs/**/*_spec.rb'].exclude( # These translate, but have other quirks
50
- 'translated_specs/spec/translator_spec.rb',
51
- 'translated_specs/spec/runner/formatter/html_formatter_spec.rb',
52
- 'translated_specs/spec/runner/option_parser_spec.rb'
53
- )
54
- t.spec_opts = ['--options', 'spec.opts']
55
- t.rcov = true
56
- t.rcov_dir = '../doc/output/coverage'
57
- t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
35
+ ['audit','test','test_deps','default','post_blog'].each do |task|
36
+ Rake.application.instance_variable_get('@tasks').delete(task)
58
37
  end
59
38
 
60
- desc "Run all specs and store html output in doc/output/report.html"
61
- Spec::Rake::SpecTask.new('spec_html') do |t|
62
- t.spec_files = FileList['spec/**/*_spec.rb', 'vendor/RSpec.tmbundle/Support/spec/*_spec.rb']
63
- t.spec_opts = ['--format html:../doc/output/report.html','--backtrace']
39
+ task :post_blog do
40
+ # no-op
64
41
  end
65
42
 
66
- desc "Run all failing examples"
67
- Spec::Rake::SpecTask.new('failing_examples') do |t|
68
- t.spec_files = FileList['failing_examples/**/*_spec.rb']
69
- end
43
+ # Some of the tasks are in separate files since they are also part of the website documentation
44
+ load 'resources/rake/examples.rake'
45
+ load 'resources/rake/examples_with_rcov.rake'
46
+ load 'resources/rake/failing_examples_with_html.rake'
47
+ load 'resources/rake/verify_rcov.rake'
70
48
 
71
- desc 'Generate HTML documentation for website'
72
- task :webgen do
73
- core.webgen
49
+ task :cleanup_rcov_files do
50
+ rm_rf 'coverage.data'
74
51
  end
75
52
 
76
- desc 'Generate RDoc'
77
- rd = Rake::RDocTask.new do |rdoc|
78
- rdoc.rdoc_dir = '../doc/output/rdoc'
79
- rdoc.options << '--title' << 'RSpec' << '--line-numbers' << '--inline-source' << '--main' << 'README'
80
- rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'EXAMPLES.rd', 'UPGRADE', 'lib/**/*.rb')
81
- end
82
53
 
83
- desc "Generate EXAMPLES.rb"
84
- task :rdoc do
85
- core.rdoc
54
+ if RUBY_VERSION =~ /^1.8/
55
+ task :default => [:cleanup_rcov_files, :features, :verify_rcov]
56
+ else
57
+ task :default => [:spec, :features]
86
58
  end
87
59
 
88
- spec = Gem::Specification.new do |s|
89
- s.name = PKG_NAME
90
- s.version = PKG_VERSION
91
- s.summary = Spec::VERSION::DESCRIPTION
92
- s.description = <<-EOF
93
- RSpec is a behaviour driven development (BDD) framework for Ruby. RSpec was
94
- created in response to Dave Astels' article _A New Look at Test Driven Development_
95
- which can be read at: http://daveastels.com/index.php?p=5 RSpec is intended to
96
- provide the features discussed in Dave's article.
97
- EOF
98
-
99
- s.files = PKG_FILES.to_a
100
- s.require_path = 'lib'
60
+ namespace :spec do
101
61
 
102
- s.has_rdoc = true
103
- s.rdoc_options = rd.options
104
- s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$|^EXAMPLES.rd$/ }.to_a
62
+ desc "Run all specs with rcov"
63
+ Spec::Rake::SpecTask.new(:rcov) do |t|
64
+ t.spec_files = FileList['spec/**/*_spec.rb']
65
+ t.spec_opts = ['--options', 'spec/spec.opts']
66
+ t.rcov = true
67
+ t.rcov_dir = 'coverage'
68
+ t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
69
+ t.rcov_opts << '--sort coverage --text-summary --aggregate coverage.data'
70
+ end
71
+
72
+ desc "Run files listed in spec/spec_files.txt"
73
+ Spec::Rake::SpecTask.new(:focus) do |t|
74
+ if File.exists?('spec/spec_files.txt')
75
+ t.spec_files = File.readlines('spec/spec_files.txt').collect{|f| f.chomp}
76
+ end
77
+ end
78
+ end
105
79
 
106
- s.autorequire = 'spec'
107
- s.bindir = 'bin'
108
- s.executables = ['spec', 'spec_translator']
109
- s.default_executable = 'spec'
110
- s.author = ["RSpec Development Team"]
111
- s.email = "rspec-devel@rubyforge.org"
112
- s.homepage = "http://rspec.rubyforge.org"
113
- s.rubyforge_project = "rspec"
80
+ begin
81
+ require 'cucumber/rake/task'
82
+ desc "Run Cucumber features"
83
+ if RUBY_VERSION =~ /^1.8/
84
+ Cucumber::Rake::Task.new :features do |t|
85
+ t.rcov = true
86
+ t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
87
+ t.rcov_opts << '--no-html --aggregate coverage.data'
88
+ t.cucumber_opts = %w{--format progress}
89
+ end
90
+ else
91
+ task :features do
92
+ sh 'cucumber --profile no_heckle'
93
+ end
94
+ end
95
+ rescue LoadError
96
+ puts "You need cucumber installed to run cucumber tasks"
114
97
  end
115
98
 
116
- Rake::GemPackageTask.new(spec) do |pkg|
117
- pkg.need_zip = true
118
- pkg.need_tar = true
99
+ desc "Run failing examples (see failure output)"
100
+ Spec::Rake::SpecTask.new('failing_examples') do |t|
101
+ t.spec_files = FileList['failing_examples/**/*_spec.rb']
102
+ t.spec_opts = ['--options', 'spec/spec.opts']
119
103
  end
120
104
 
121
105
  def egrep(pattern)
@@ -137,148 +121,29 @@ task :todo do
137
121
  egrep /(FIXME|TODO|TBD)/
138
122
  end
139
123
 
140
- task :clobber do
141
- core.clobber
142
- end
143
-
144
- task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_website, :publish_news]
124
+ desc "verify_committed, verify_rcov, post_news, release"
125
+ task :complete_release => [:verify_committed, :verify_rcov, :post_news, :release]
145
126
 
146
127
  desc "Verifies that there is no uncommitted code"
147
128
  task :verify_committed do
148
- IO.popen('svn stat') do |io|
129
+ IO.popen('git status') do |io|
149
130
  io.each_line do |line|
150
- raise "\n!!! Do a svn commit first !!!\n\n" if line =~ /^\s*M\s*/
131
+ raise "\n!!! Do a git commit first !!!\n\n" if line =~ /^#\s*modified:/
151
132
  end
152
133
  end
153
134
  end
154
135
 
155
- desc "Creates a tag in svn"
156
- task :tag do
157
- from = `svn info #{File.dirname(__FILE__)}`.match(/URL: (.*)\/rspec/n)[1]
158
- to = from.gsub(/trunk/, "tags/#{Spec::VERSION::TAG}")
159
- tag_cmd = "svn cp #{from} #{to} -m \"Tag release #{Spec::VERSION::FULL_VERSION}\""
160
- raise "Can't tag to the same place: #{tag_cmd}" if to == from
161
- puts "Creating tag in SVN"
162
- `#{tag_cmd}`
163
- raise "Tagging failed" unless $? == 0
164
- end
165
-
166
- desc "Run this task before you commit. You should see 'OK TO COMMIT'"
167
- task(:pre_commit) {core.pre_commit}
168
-
169
- desc "Build the website, but do not publish it"
170
- task(:website) {core.website}
171
-
172
- task :rdoc_rails do
173
- core.rdoc_rails
174
- end
175
-
176
- task :verify_user do
177
- raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
178
- end
179
-
180
- desc "Upload Website to RubyForge"
181
- task :publish_website => [:verify_user, :website] do
182
- unless Spec::VERSION::RELEASE_CANDIDATE
183
- publisher = Rake::SshDirPublisher.new(
184
- "rspec-website@rubyforge.org",
185
- "/var/www/gforge-projects/#{PKG_NAME}",
186
- "../doc/output"
187
- )
188
- publisher.upload
189
- else
190
- puts "** Not publishing packages to RubyForge - this is a prerelease"
191
- end
192
- end
193
-
194
- desc "Upload Website archive to RubyForge"
195
- task :archive_website => [:verify_user, :website] do
196
- publisher = Rake::SshDirPublisher.new(
197
- "rspec-website@rubyforge.org",
198
- "/var/www/gforge-projects/#{PKG_NAME}/#{Spec::VERSION::TAG}",
199
- "../doc/output"
200
- )
201
- publisher.upload
202
- end
203
-
204
- desc "Package the RSpec.tmbundle"
205
- task :package_tmbundle do
206
- mkdir 'pkg' rescue nil
207
- rm_rf 'pkg/RSpec.tmbundle' rescue nil
208
- `svn export ../RSpec.tmbundle pkg/RSpec.tmbundle`
209
- Dir.chdir 'pkg' do
210
- `tar cvzf RSpec-#{PKG_VERSION}.tmbundle.tgz RSpec.tmbundle`
211
- end
212
- end
213
- task :pkg => :package_tmbundle
214
-
215
- desc "Package the Spec::Ui gem"
216
- task :package_spec_ui do
217
- Dir.chdir '../spec_ui' do
218
- `rake clobber gem`
219
- end
220
- end
221
- task :pkg => :package_spec_ui
222
-
223
- desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
224
- task :publish_packages => [:verify_user, :package] do
225
- require File.dirname(__FILE__) + '/../spec_ui/lib/spec/ui/version'
226
- release_files = FileList[
227
- "pkg/#{PKG_FILE_NAME}.gem",
228
- "pkg/#{PKG_FILE_NAME}.tgz",
229
- "pkg/#{PKG_FILE_NAME}.zip",
230
- "pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz",
231
- "../spec_ui/pkg/spec_ui-#{Spec::Ui::VERSION::STRING}.gem"
232
- ]
233
- unless Spec::VERSION::RELEASE_CANDIDATE
234
- require 'meta_project'
235
- require 'rake/contrib/xforge'
236
-
237
- Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |xf|
238
- # Never hardcode user name and password in the Rakefile!
239
- xf.user_name = ENV['RUBYFORGE_USER']
240
- xf.files = release_files.to_a
241
- xf.release_name = "RSpec #{PKG_VERSION}"
242
- end
243
- else
244
- puts "SINCE THIS IS A PRERELEASE, FILES ARE UPLOADED WITH SSH, NOT TO THE RUBYFORGE FILE SECTION"
245
- puts "YOU MUST TYPE THE PASSWORD #{release_files.length} TIMES..."
246
-
247
- host = "rspec-website@rubyforge.org"
248
- remote_dir = "/var/www/gforge-projects/#{PKG_NAME}"
249
-
250
- publisher = Rake::SshFilePublisher.new(
251
- host,
252
- remote_dir,
253
- File.dirname(__FILE__),
254
- *release_files
255
- )
256
- publisher.upload
257
-
258
- puts "UPLADED THE FOLLOWING FILES:"
259
- release_files.each do |file|
260
- name = file.match(/pkg\/(.*)/)[1]
261
- puts "* http://rspec.rubyforge.org/#{name}"
262
- end
263
-
264
- puts "They are not linked to anywhere, so don't forget to tell people!"
136
+ namespace :update do
137
+ desc "update the manifest"
138
+ task :manifest do
139
+ system %q[touch Manifest.txt; rake check_manifest | grep -v "(in " | patch]
265
140
  end
266
141
  end
267
142
 
268
- desc "Publish news on RubyForge"
269
- task :publish_news => [:verify_user] do
270
- unless Spec::VERSION::RELEASE_CANDIDATE
271
- require 'meta_project'
272
- require 'rake/contrib/xforge'
273
- Rake::XForge::NewsPublisher.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |news|
274
- # Never hardcode user name and password in the Rakefile!
275
- news.user_name = ENV['RUBYFORGE_USER']
276
- end
277
- else
278
- puts "** Not publishing news to RubyForge - this is a prerelease"
279
- end
280
- end
143
+ task :clobber => :clobber_tmp
281
144
 
282
- def core
283
- PreCommit::Core.new(self)
145
+ task :clobber_tmp do
146
+ cmd = %q[rm -r tmp]
147
+ puts cmd
148
+ system cmd if test ?d, 'tmp'
284
149
  end
data/Ruby1.9.rdoc ADDED
@@ -0,0 +1,31 @@
1
+ = RSpec and Ruby 1.9
2
+
3
+ RSpec runs on Ruby 1.9.1 with the following caveats.
4
+
5
+ == Test::Unit
6
+
7
+ RSpec/Test::Unit interop will run with the test-unit-1.2.3 gem, but you must install it.
8
+
9
+ == Class Variables
10
+
11
+ Due to changes in scoping rules, class variables within example groups are not
12
+ supported in Ruby 1.9.
13
+
14
+ describe "a class variable" do
15
+ @@class_variable = "a class variable"
16
+
17
+ it "can access class variables in examples in Ruby 1.8" do
18
+ with_ruby 1.8 do
19
+ @@class_variable.should == "a class variable"
20
+ end
21
+ end
22
+
23
+ it "can NOT access class variables in examples in Ruby 1.9" do
24
+ with_ruby 1.9 do
25
+ lambda do
26
+ @@class_variable.should == "a class variable"
27
+ end.should raise_error(NameError)
28
+ end
29
+ end
30
+ end
31
+
data/TODO.txt ADDED
@@ -0,0 +1,17 @@
1
+ == Refactoring
2
+
3
+ ** global predictate matchers should be stored in run_options
4
+ * eliminate dependency on global options and configuration
5
+ ** the only place they should exist is in the Runner, which should manage them
6
+
7
+ == Future
8
+
9
+ * do SOMETHING with the website
10
+ * separate the underlying framework from the DSL
11
+ * be able to do everything with classes and methods
12
+ * tweak raise_error rdoc to show only one arg
13
+
14
+ == rspec-2.0
15
+
16
+ * rename top level namespace to Rspec and commands to 'rspec' and 'autorspec'
17
+ * continue to support Spec 'spec' and 'autospec' as aliases for a reasonable time
data/Upgrade.rdoc ADDED
@@ -0,0 +1,260 @@
1
+ = Upgrade to 1.3.0
2
+
3
+ == What's changed
4
+
5
+ === +be_true+ and +be_false+
6
+
7
+ These methods now align with Ruby's conditional semantics:
8
+
9
+ * +be_false+ passes for +false+ and +nil+
10
+ * +be_true+ passes for everything else
11
+
12
+ This is a change from the previous behaviour (which wasn't working correctly
13
+ anyway), which was supposed to treat +be_true+ as <tt>equal(true)</tt>, and +be_false+ as
14
+ <tt>equal(false)</tt>.
15
+
16
+ If the actual values +true+ and +false+ are meaningful to your examples, you'll
17
+ want to change the to use <tt>equal(true)</tt> and <tt>equal(false)</tt> (or
18
+ <tt>==(true)</tt> and <tt>==(false)</tt>).
19
+
20
+ === +raise_exception+
21
+
22
+ We changed the +raise_error+ matcher to +raise_exception+, and aliased it with
23
+ +raise_error+. This maintains backward compatibility, and also gives you the
24
+ option of being more precise in specs about what is expected.
25
+
26
+ === Matcher DSL
27
+
28
+ ==== +match+ rescues from +ExpectationNotMetErrror+ by default
29
+
30
+ This allows you to wrap other expectations in the +match+ method. Consider
31
+ this matcher:
32
+
33
+ Spec::Matchers.define :teach do |subject|
34
+ match do |teacher|
35
+ teacher.subjects.should include(subject)
36
+ end
37
+ end
38
+
39
+ The block passed to +match+ is called internally by Rspec, and is expected to
40
+ return a boolean value. In this case, if <tt>should include(subject)</tt>
41
+ fails, it raises an +ExpectationNotMetError+.
42
+
43
+ Beginning with rspec-1.3.0, when the match block raises an
44
+ +ExpectationNotMetError+, it is captured and the block returns +false+.
45
+ Otherwise it returns +true+, so it works like any other matcher.
46
+
47
+ ==== match_unless_raises
48
+
49
+ The new +match_unless_raises+ method allows you to wrap <tt>Test::Unit</tt>
50
+ assertions by capturing +AssertionFailedError+ and returning false, just as the
51
+ +match+ method now does with +ExpectationNotMetError+.
52
+
53
+ Spec::Matchers.define :teach do |subject|
54
+ match_unless_raises Test::Unit::AssertionFailedError do |teacher|
55
+ assert teacher.subjects.include?(subject)
56
+ end
57
+ end
58
+
59
+ = Upgrade to rspec-1.2.9
60
+
61
+ == What's new
62
+
63
+ === spec/spec.opts
64
+
65
+ If you have a spec/spec.opts file, the spec command will now use that
66
+ automatically as long as you don't include any options on the command line.
67
+
68
+ === let()
69
+
70
+ Writing specs tends to follow a regular pattern of using local variables,
71
+ discovering duplication, and then having to convert to local variables to
72
+ instance variables by adding an "@" symbol. The let() method assigns the result
73
+ of a lazy eval'd block as the return value of an instance method using the same
74
+ name. This way you can go from this:
75
+
76
+ describe Subscription do
77
+ it "does something" do
78
+ subscription = Subscription.create :limit => 1
79
+ subscription...
80
+ end
81
+
82
+ it "does something else" do
83
+ subscription = Subscription.create :limit => 1
84
+ subscription...
85
+ end
86
+ end
87
+
88
+ to this:
89
+
90
+ describe Subscription do
91
+ let(:subscription) { Subscription.create :limit => 1 }
92
+
93
+ it "does something" do
94
+ subscription...
95
+ end
96
+
97
+ it "does something else" do
98
+ subscription...
99
+ end
100
+ end
101
+
102
+ === its()
103
+
104
+ If you're in the habit of writing one-liners using implicit subject, this new
105
+ its() feature is for you. Here's the basic idea:
106
+
107
+ describe Array do
108
+ its(:length) { should == 0 }
109
+ end
110
+
111
+ = Upgrade to rspec-1.2.3-1.2.7
112
+
113
+ == What's Changed
114
+
115
+ === Matcher DSL
116
+
117
+ Use Spec::Matchers.define instead of Spec::Matchers.create (which is now
118
+ deprecated).
119
+
120
+ === Explicit Predicate Matchers are deprecated
121
+
122
+ With the addition of the new Matcher DSL the old, confusing, and
123
+ almost-nobody-uses-it explicit predicate matcher functionality's days are now
124
+ numbered.
125
+
126
+ If you're not familiar with this feature, don't worry about it. If you have anything
127
+ that looks like this:
128
+
129
+ predicate_matchers[:swim] = :can_swim?
130
+
131
+ Or this
132
+
133
+ config.predicate_matchers[:swim] = :can_swim?
134
+
135
+ Change it to this:
136
+
137
+ Spec::Matchers.define :swim do
138
+ match do |potential_swimmer|
139
+ potential_swimmer.can_swim?
140
+ end
141
+ end
142
+
143
+ == Custom Formatters
144
+
145
+ If you have an custom formatter, the <tt>add_example_group</tt> method has
146
+ been changed to <tt>example_group_started</tt>, and kept as an alias so your
147
+ formatters will still work. Though not yet, <tt>add_example_group</tt> will be
148
+ deprecated in a future minor release, and removed in a future major release,
149
+ so we recommend you make this change now.
150
+
151
+ = Upgrade to rspec-1.2.2
152
+
153
+ == What's Changed
154
+
155
+ === <tt>require 'rubygems' unless ENV['NO_RUBYGEMS']</tt>
156
+
157
+ After minor public outcry and confusion, we restored necessary references to
158
+ rubygems in rspec. If you use a different mechanism for managing gems, just
159
+ set a <tt>NO_RUBYGEMS</tt> environment variable (to any non-nil value).
160
+
161
+ === Proxies and locations
162
+
163
+ This is probably only interesting to you if you use custom formatters.
164
+
165
+ Formatters now receive Spec::Example::ExampleGroupProxy and
166
+ Spec::Example::ExampleGroup objects with cohesive APIs for reporting. See the
167
+ RDoc for those classes and Spec::Runner::Formatter::BaseFormatter for more
168
+ information.
169
+
170
+ == What's new
171
+
172
+ === The new matcher DSL works with test/unit (without the rest of rspec)
173
+
174
+ We'll be separating this out to its own gem for rspec 2.0, but for now, just install
175
+ rspec >= 1.2.1 and add the following to your <tt>test_helper</tt> file:
176
+
177
+ require 'spec/expectations'
178
+ class Test::Unit::TestCase
179
+ include Spec::Matchers
180
+ end
181
+
182
+ This will add <tt>should()</tt> and <tt>should_not()</tt> to your objects, make all of
183
+ rspec's built-in matchers available to your tests, INCLUDING rspec's DSL for
184
+ creating matchers (see below, under Upgrade to rspec-1.2.0)
185
+
186
+ === debugger
187
+
188
+ If you have ruby-debug installed, you can set a breakpoint by adding <tt>debugger()</tt>
189
+ in your code:
190
+
191
+ # some code .....
192
+ debugger
193
+ # some more code ....
194
+
195
+ ... and using the <tt>--debugger</tt> or <tt>-u</tt> command line option.
196
+
197
+ spec path/to/file.rb --debugger
198
+
199
+ = Upgrade to rspec-1.2.0
200
+
201
+ == What's Changed
202
+
203
+ === WARNINGS
204
+
205
+ * If you use the ruby command to run specs instead of the spec command, you'll
206
+ need to require 'spec/autorun' or they won't run. This won't affect you if
207
+ you use the spec command or the Spec::Rake::SpecTask that ships with RSpec.
208
+
209
+ * require 'spec/test/unit' to invoke test/unit interop if you're using
210
+ RSpec's core (this is handled implicitly with spec-rails)
211
+
212
+ * setup and teardown are gone - use before and after instead
213
+
214
+ * you can still use setup and teardown if you're using
215
+ Test::Unit::TestCase as the base ExampleGroup class (which is implicit
216
+ in rspec-rails)
217
+
218
+ * The matcher protocol has been improved. The old protocol is still supported,
219
+ but we added support for two new methods that speak a bit more clearly:
220
+
221
+ failure_message => failure_message_for_should
222
+ negative_failure_message => failure_message_for_should_not
223
+
224
+ * All references to rubygems have been removed from within rspec's code.
225
+
226
+ * See http://gist.github.com/54177 for rationale and suggestions on
227
+ alternative approaches to loading rubygems
228
+
229
+ == What's New
230
+
231
+ === Ruby 1.9
232
+
233
+ RSpec now works with Ruby 1.9.1. See http://wiki.github.com/dchelimsky/rspec/ruby-191
234
+ for useful information.
235
+
236
+ === Improved heckle integration
237
+
238
+ RSpec works with heckle again! Gotta use heckle >= 1.4.2 for this to work
239
+ though, and it only works with ruby-1.8.6 and 1.8.7 (heckle doesn't support
240
+ 1.9.1 yet).
241
+
242
+ [sudo] gem install heckle --version ">=1.4.2"
243
+ spec spec/game/mastermind.rb --heckle Game::Mastermind
244
+
245
+ === New Matcher DSL
246
+
247
+ We've added a new DSL for generating custom matchers very simply and cleanly.
248
+ We'll still support the simple_matcher method, so never fear if you're using
249
+ that, but we recommend that you start developing your new matchers with this
250
+ new syntax.
251
+
252
+ Spec::Matchers.create :be_a_multiple_of do |smaller|
253
+ match do |bigger|
254
+ bigger % smaller == 0
255
+ end
256
+ end
257
+
258
+ 9.should be_a_multiple_of(3)
259
+
260
+ See <tt>features/matchers/define_matcher.feature</tt> for more examples
data/bin/autospec ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['RSPEC'] = 'true' # allows autotest to discover rspec
3
+ ENV['AUTOTEST'] = 'true' # allows autotest to run w/ color on linux
4
+ system (RUBY_PLATFORM =~ /mswin|mingw/ ? 'autotest.bat' : 'autotest'), *ARGV