rspec 1.0.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. data/.document +7 -0
  2. data/History.rdoc +1546 -0
  3. data/{MIT-LICENSE → License.txt} +3 -1
  4. data/Manifest.txt +384 -0
  5. data/README.rdoc +41 -0
  6. data/Rakefile +94 -229
  7. data/Ruby1.9.rdoc +31 -0
  8. data/TODO.txt +17 -0
  9. data/Upgrade.rdoc +260 -0
  10. data/bin/autospec +4 -0
  11. data/bin/spec +5 -3
  12. data/cucumber.yml +5 -0
  13. data/examples/failing/README.txt +11 -0
  14. data/examples/failing/diffing_spec.rb +36 -0
  15. data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  16. data/examples/failing/failure_in_after.rb +10 -0
  17. data/examples/failing/failure_in_before.rb +10 -0
  18. data/examples/failing/mocking_example.rb +38 -0
  19. data/examples/failing/mocking_with_flexmock.rb +26 -0
  20. data/examples/failing/mocking_with_mocha.rb +25 -0
  21. data/examples/failing/mocking_with_rr.rb +27 -0
  22. data/examples/failing/partial_mock_example.rb +18 -0
  23. data/examples/failing/pending_example.rb +7 -0
  24. data/examples/failing/predicate_example.rb +32 -0
  25. data/examples/failing/raising_example.rb +47 -0
  26. data/examples/failing/syntax_error_example.rb +7 -0
  27. data/examples/failing/team_spec.rb +41 -0
  28. data/examples/failing/timeout_behaviour.rb +5 -0
  29. data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
  30. data/examples/passing/dynamic_spec.rb +7 -0
  31. data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
  32. data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
  33. data/examples/passing/filtered_formatter.rb +17 -0
  34. data/examples/passing/filtered_formatter_example.rb +31 -0
  35. data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
  36. data/examples/passing/helper_method_example.rb +12 -0
  37. data/examples/passing/implicit_docstrings_example.rb +16 -0
  38. data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
  39. data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
  40. data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
  41. data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
  42. data/examples/passing/nested_classes_example.rb +35 -0
  43. data/examples/passing/options_example.rb +29 -0
  44. data/examples/passing/options_formatter.rb +20 -0
  45. data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
  46. data/examples/passing/pending_example.rb +18 -0
  47. data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
  48. data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
  49. data/examples/passing/shared_stack_examples.rb +36 -0
  50. data/examples/passing/simple_matcher_example.rb +29 -0
  51. data/examples/{stack.rb → passing/stack.rb} +1 -1
  52. data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
  53. data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  54. data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
  55. data/examples/passing/yielding_example.rb +31 -0
  56. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  57. data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  58. data/features/command_line/line_number_option.feature +56 -0
  59. data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  60. data/features/example_groups/define_example_attribute.feature +41 -0
  61. data/features/example_groups/example_group_with_should_methods.feature +29 -0
  62. data/features/example_groups/implicit_docstrings.feature +59 -0
  63. data/features/example_groups/nested_groups.feature +32 -0
  64. data/features/expectations/customized_message.feature +54 -0
  65. data/features/expectations/expect_change.feature +65 -0
  66. data/features/expectations/expect_error.feature +44 -0
  67. data/features/extensions/custom_example_group.feature +19 -0
  68. data/features/formatters/custom_formatter.feature +30 -0
  69. data/features/formatters/nested_formatter.feature +32 -0
  70. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  71. data/features/interop/examples_and_tests_together.feature +84 -0
  72. data/features/interop/rspec_output.feature +25 -0
  73. data/features/interop/test_but_not_test_unit.feature +26 -0
  74. data/features/interop/test_case_with_should_methods.feature +46 -0
  75. data/features/load_paths/add_lib_to_load_path.feature +20 -0
  76. data/features/load_paths/add_spec_to_load_path.feature +20 -0
  77. data/features/matchers/define_diffable_matcher.feature +26 -0
  78. data/features/matchers/define_matcher.feature +179 -0
  79. data/features/matchers/define_matcher_outside_rspec.feature +38 -0
  80. data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
  81. data/features/matchers/define_wrapped_matcher.feature +56 -0
  82. data/features/matchers/match_unless_raises.feature +60 -0
  83. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  84. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  85. data/features/mock_framework_integration/use_mocha.feature +27 -0
  86. data/features/mock_framework_integration/use_rr.feature +27 -0
  87. data/features/mocks/block_local_expectations.feature +62 -0
  88. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  89. data/features/mocks/stub_implementation.feature +26 -0
  90. data/features/pending/pending_examples.feature +81 -0
  91. data/features/runner/specify_line_number.feature +32 -0
  92. data/features/spec_helper/spec_helper.feature +25 -0
  93. data/features/step_definitions/running_rspec_steps.rb +52 -0
  94. data/features/step_definitions/stubbing_steps.rb +16 -0
  95. data/features/subject/explicit_subject.feature +31 -0
  96. data/features/subject/implicit_subject.feature +43 -0
  97. data/features/support/env.rb +83 -0
  98. data/features/support/matchers/smart_match.rb +31 -0
  99. data/geminstaller.yml +29 -0
  100. data/init.rb +9 -0
  101. data/lib/autotest/discover.rb +3 -0
  102. data/lib/autotest/rspec.rb +54 -0
  103. data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  104. data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
  105. data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  106. data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  107. data/lib/spec/autorun.rb +3 -0
  108. data/lib/spec/deprecation.rb +41 -0
  109. data/lib/spec/dsl/main.rb +93 -0
  110. data/lib/spec/dsl.rb +1 -10
  111. data/lib/spec/example/args_and_options.rb +27 -0
  112. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  113. data/lib/spec/example/errors.rb +25 -0
  114. data/lib/spec/example/example_group.rb +10 -0
  115. data/lib/spec/example/example_group_factory.rb +82 -0
  116. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  117. data/lib/spec/example/example_group_methods.rb +287 -0
  118. data/lib/spec/example/example_group_proxy.rb +61 -0
  119. data/lib/spec/example/example_matcher.rb +43 -0
  120. data/lib/spec/example/example_methods.rb +152 -0
  121. data/lib/spec/example/example_proxy.rb +41 -0
  122. data/lib/spec/example/module_reopening_fix.rb +43 -0
  123. data/lib/spec/example/pending.rb +18 -0
  124. data/lib/spec/example/predicate_matchers.rb +46 -0
  125. data/lib/spec/example/shared_example_group.rb +59 -0
  126. data/lib/spec/example/subject.rb +114 -0
  127. data/lib/spec/example.rb +164 -0
  128. data/lib/spec/expectations/errors.rb +7 -1
  129. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  130. data/lib/spec/expectations/extensions.rb +1 -2
  131. data/lib/spec/expectations/fail_with.rb +45 -0
  132. data/lib/spec/expectations/handler.rb +37 -30
  133. data/lib/spec/expectations.rb +2 -23
  134. data/lib/spec/extensions/instance_exec.rb +31 -0
  135. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  136. data/lib/spec/interop/test/unit/testcase.rb +56 -0
  137. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  138. data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
  139. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  140. data/lib/spec/interop/test.rb +44 -0
  141. data/lib/spec/matchers/be.rb +183 -140
  142. data/lib/spec/matchers/be_close.rb +18 -23
  143. data/lib/spec/matchers/be_instance_of.rb +26 -0
  144. data/lib/spec/matchers/be_kind_of.rb +26 -0
  145. data/lib/spec/matchers/change.rb +72 -41
  146. data/lib/spec/matchers/compatibility.rb +14 -0
  147. data/lib/spec/matchers/dsl.rb +20 -0
  148. data/lib/spec/matchers/eql.rb +25 -26
  149. data/lib/spec/matchers/equal.rb +35 -25
  150. data/lib/spec/matchers/errors.rb +5 -0
  151. data/lib/spec/matchers/exist.rb +16 -0
  152. data/lib/spec/matchers/generated_descriptions.rb +36 -0
  153. data/lib/spec/matchers/has.rb +17 -26
  154. data/lib/spec/matchers/have.rb +36 -24
  155. data/lib/spec/matchers/include.rb +22 -48
  156. data/lib/spec/matchers/match.rb +11 -31
  157. data/lib/spec/matchers/match_array.rb +71 -0
  158. data/lib/spec/matchers/matcher.rb +132 -0
  159. data/lib/spec/matchers/method_missing.rb +9 -0
  160. data/lib/spec/matchers/operator_matcher.rb +55 -44
  161. data/lib/spec/matchers/pretty.rb +37 -0
  162. data/lib/spec/matchers/raise_exception.rb +131 -0
  163. data/lib/spec/matchers/respond_to.rb +35 -9
  164. data/lib/spec/matchers/satisfy.rb +2 -2
  165. data/lib/spec/matchers/simple_matcher.rb +134 -0
  166. data/lib/spec/matchers/throw_symbol.rb +56 -31
  167. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  168. data/lib/spec/matchers.rb +104 -48
  169. data/lib/spec/mocks/argument_expectation.rb +28 -112
  170. data/lib/spec/mocks/argument_matchers.rb +237 -0
  171. data/lib/spec/mocks/error_generator.rb +20 -13
  172. data/lib/spec/mocks/errors.rb +1 -1
  173. data/lib/spec/mocks/example_methods.rb +69 -0
  174. data/lib/spec/mocks/extensions.rb +1 -0
  175. data/lib/spec/mocks/framework.rb +15 -0
  176. data/lib/spec/mocks/message_expectation.rb +206 -93
  177. data/lib/spec/mocks/methods.rb +66 -7
  178. data/lib/spec/mocks/mock.rb +53 -11
  179. data/lib/spec/mocks/proxy.rb +160 -55
  180. data/lib/spec/mocks/space.rb +2 -2
  181. data/lib/spec/mocks.rb +14 -23
  182. data/lib/spec/rake/spectask.rb +108 -53
  183. data/lib/spec/rake/verify_rcov.rb +4 -4
  184. data/lib/spec/ruby.rb +9 -0
  185. data/lib/spec/runner/backtrace_tweaker.rb +45 -23
  186. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  187. data/lib/spec/runner/command_line.rb +7 -14
  188. data/lib/spec/runner/configuration.rb +202 -0
  189. data/lib/spec/runner/differs/default.rb +93 -0
  190. data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  191. data/lib/spec/runner/drb_command_line.rb +18 -7
  192. data/lib/spec/runner/example_group_runner.rb +58 -0
  193. data/lib/spec/runner/extensions/kernel.rb +5 -46
  194. data/lib/spec/runner/formatter/base_formatter.rb +97 -26
  195. data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
  196. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  197. data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
  198. data/lib/spec/runner/formatter/html_formatter.rb +101 -75
  199. data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
  200. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  201. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  202. data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
  203. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  204. data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
  205. data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
  206. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  207. data/lib/spec/runner/heckle_runner.rb +56 -56
  208. data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
  209. data/lib/spec/runner/line_number_query.rb +78 -0
  210. data/lib/spec/runner/option_parser.rb +147 -148
  211. data/lib/spec/runner/options.rb +343 -95
  212. data/lib/spec/runner/reporter.rb +117 -60
  213. data/lib/spec/runner.rb +39 -138
  214. data/lib/spec/stubs/cucumber.rb +5 -0
  215. data/lib/spec/test/unit.rb +10 -0
  216. data/lib/spec/version.rb +14 -22
  217. data/lib/spec.rb +5 -10
  218. data/resources/helpers/cmdline.rb +8 -0
  219. data/resources/rake/examples.rake +7 -0
  220. data/resources/rake/examples_with_rcov.rake +9 -0
  221. data/resources/rake/failing_examples_with_html.rake +9 -0
  222. data/resources/rake/verify_rcov.rake +7 -0
  223. data/spec/README.jruby +15 -0
  224. data/spec/autotest/autotest_helper.rb +8 -0
  225. data/spec/autotest/autotest_matchers.rb +38 -0
  226. data/spec/autotest/discover_spec.rb +8 -0
  227. data/spec/autotest/failed_results_re_spec.rb +31 -0
  228. data/spec/autotest/rspec_spec.rb +126 -0
  229. data/spec/ruby_forker.rb +13 -0
  230. data/spec/spec/dsl/main_spec.rb +103 -0
  231. data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  232. data/spec/spec/example/example_group_factory_spec.rb +180 -0
  233. data/spec/spec/example/example_group_methods_spec.rb +778 -0
  234. data/spec/spec/example/example_group_proxy_spec.rb +107 -0
  235. data/spec/spec/example/example_group_spec.rb +632 -0
  236. data/spec/spec/example/example_matcher_spec.rb +85 -0
  237. data/spec/spec/example/example_methods_spec.rb +162 -0
  238. data/spec/spec/example/example_proxy_spec.rb +57 -0
  239. data/spec/spec/example/helper_method_spec.rb +24 -0
  240. data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
  241. data/spec/spec/example/pending_module_spec.rb +58 -0
  242. data/spec/spec/example/predicate_matcher_spec.rb +41 -0
  243. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  244. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  245. data/spec/spec/example/subject_spec.rb +110 -0
  246. data/spec/spec/expectations/differs/default_spec.rb +100 -13
  247. data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
  248. data/spec/spec/expectations/fail_with_spec.rb +42 -17
  249. data/spec/spec/expectations/handler_spec.rb +206 -0
  250. data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
  251. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  252. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  253. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  254. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  255. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  256. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  257. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  258. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  259. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  260. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  261. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  262. data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  263. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  264. data/spec/spec/matchers/be_close_spec.rb +32 -21
  265. data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  266. data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  267. data/spec/spec/matchers/be_spec.rb +261 -10
  268. data/spec/spec/matchers/change_spec.rb +178 -61
  269. data/spec/spec/matchers/compatibility_spec.rb +28 -0
  270. data/spec/spec/matchers/description_generation_spec.rb +47 -46
  271. data/spec/spec/matchers/dsl_spec.rb +34 -0
  272. data/spec/spec/matchers/eql_spec.rb +14 -9
  273. data/spec/spec/matchers/equal_spec.rb +43 -14
  274. data/spec/spec/matchers/exist_spec.rb +41 -24
  275. data/spec/spec/matchers/has_spec.rb +154 -1
  276. data/spec/spec/matchers/have_spec.rb +311 -189
  277. data/spec/spec/matchers/include_spec.rb +45 -2
  278. data/spec/spec/matchers/match_array_spec.rb +115 -0
  279. data/spec/spec/matchers/match_spec.rb +25 -5
  280. data/spec/spec/matchers/matcher_spec.rb +289 -0
  281. data/spec/spec/matchers/matchers_spec.rb +2 -0
  282. data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
  283. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  284. data/spec/spec/matchers/respond_to_spec.rb +78 -16
  285. data/spec/spec/matchers/satisfy_spec.rb +1 -1
  286. data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
  287. data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
  288. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  289. data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
  290. data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
  291. data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  292. data/spec/spec/mocks/at_least_spec.rb +2 -2
  293. data/spec/spec/mocks/at_most_spec.rb +3 -3
  294. data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
  295. data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  296. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  297. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  298. data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
  299. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  300. data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
  301. data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
  302. data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
  303. data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
  304. data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  305. data/spec/spec/mocks/double_spec.rb +12 -0
  306. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  307. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  308. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  309. data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
  310. data/spec/spec/mocks/mock_space_spec.rb +1 -1
  311. data/spec/spec/mocks/mock_spec.rb +346 -129
  312. data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
  313. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  314. data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
  315. data/spec/spec/mocks/once_counts_spec.rb +2 -2
  316. data/spec/spec/mocks/options_hash_spec.rb +19 -17
  317. data/spec/spec/mocks/partial_mock_spec.rb +124 -12
  318. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
  319. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  320. data/spec/spec/mocks/precise_counts_spec.rb +2 -2
  321. data/spec/spec/mocks/record_messages_spec.rb +2 -2
  322. data/spec/spec/mocks/stub_chain_spec.rb +42 -0
  323. data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  324. data/spec/spec/mocks/stub_spec.rb +147 -103
  325. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  326. data/spec/spec/mocks/twice_counts_spec.rb +2 -2
  327. data/spec/spec/mocks/unstub_spec.rb +127 -0
  328. data/spec/spec/package/bin_spec_spec.rb +11 -7
  329. data/spec/spec/rake/spectask_spec.rb +150 -0
  330. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  331. data/spec/spec/runner/command_line_spec.rb +158 -29
  332. data/spec/spec/runner/configuration_spec.rb +320 -0
  333. data/spec/spec/runner/drb_command_line_spec.rb +137 -72
  334. data/spec/spec/runner/empty_file.txt +0 -0
  335. data/spec/spec/runner/example_group_runner_spec.rb +26 -0
  336. data/spec/spec/runner/examples.txt +2 -0
  337. data/spec/spec/runner/failed.txt +3 -0
  338. data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  339. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  340. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  341. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
  342. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  343. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  344. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  345. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  346. data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
  347. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
  348. data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  349. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
  350. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
  351. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
  352. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  353. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  354. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  355. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  356. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  357. data/spec/spec/runner/heckle_runner_spec.rb +32 -17
  358. data/spec/spec/runner/heckler_spec.rb +17 -11
  359. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  360. data/spec/spec/runner/line_number_query_spec.rb +129 -0
  361. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
  362. data/spec/spec/runner/option_parser_spec.rb +367 -164
  363. data/spec/spec/runner/options_spec.rb +506 -94
  364. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  365. data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  366. data/spec/spec/runner/output_one_time_spec.rb +15 -0
  367. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
  368. data/spec/spec/runner/reporter_spec.rb +212 -121
  369. data/spec/spec/runner/resources/a_bar.rb +0 -0
  370. data/spec/spec/runner/resources/a_foo.rb +0 -0
  371. data/spec/spec/runner/resources/a_spec.rb +1 -0
  372. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  373. data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  374. data/spec/spec/runner/spec.opts +2 -0
  375. data/spec/spec/runner/spec_drb.opts +2 -0
  376. data/spec/spec/runner/spec_spaced.opts +2 -0
  377. data/spec/spec/runner_spec.rb +13 -0
  378. data/spec/spec.opts +6 -0
  379. data/spec/spec_helper.rb +87 -45
  380. data/spec/support/macros.rb +29 -0
  381. data/spec/{spec → support}/spec_classes.rb +26 -4
  382. metadata +461 -141
  383. data/CHANGES +0 -748
  384. data/EXAMPLES.rd +0 -108
  385. data/README +0 -70
  386. data/UPGRADE +0 -31
  387. data/bin/spec_translator +0 -8
  388. data/examples/auto_spec_description_example.rb +0 -19
  389. data/examples/before_and_after_example.rb +0 -39
  390. data/examples/behave_as_example.rb +0 -45
  391. data/examples/dynamic_spec.rb +0 -9
  392. data/examples/helper_method_example.rb +0 -11
  393. data/examples/legacy_spec.rb +0 -10
  394. data/examples/not_yet_implemented_spec.rb +0 -12
  395. data/examples/priority.txt +0 -1
  396. data/examples/spec_helper.rb +0 -1
  397. data/examples/test_case_adapter_example.rb +0 -26
  398. data/examples/test_case_spec.rb +0 -65
  399. data/lib/spec/dsl/behaviour.rb +0 -204
  400. data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
  401. data/lib/spec/dsl/behaviour_eval.rb +0 -177
  402. data/lib/spec/dsl/behaviour_factory.rb +0 -42
  403. data/lib/spec/dsl/composite_proc_builder.rb +0 -28
  404. data/lib/spec/dsl/configuration.rb +0 -119
  405. data/lib/spec/dsl/description.rb +0 -46
  406. data/lib/spec/dsl/example.rb +0 -127
  407. data/lib/spec/dsl/example_matcher.rb +0 -28
  408. data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
  409. data/lib/spec/expectations/differs/default.rb +0 -61
  410. data/lib/spec/expectations/extensions/object.rb +0 -66
  411. data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  412. data/lib/spec/extensions/object.rb +0 -6
  413. data/lib/spec/extensions.rb +0 -1
  414. data/lib/spec/matchers/raise_error.rb +0 -100
  415. data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
  416. data/lib/spec/mocks/spec_methods.rb +0 -30
  417. data/lib/spec/runner/behaviour_runner.rb +0 -102
  418. data/lib/spec/runner/extensions/object.rb +0 -32
  419. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
  420. data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
  421. data/lib/spec/runner/formatter.rb +0 -9
  422. data/lib/spec/runner/spec_parser.rb +0 -50
  423. data/lib/spec/test_case_adapter.rb +0 -10
  424. data/lib/spec/translator.rb +0 -106
  425. data/plugins/mock_frameworks/flexmock.rb +0 -27
  426. data/plugins/mock_frameworks/rspec.rb +0 -18
  427. data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
  428. data/spec/spec/dsl/behaviour_spec.rb +0 -604
  429. data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
  430. data/spec/spec/dsl/configuration_spec.rb +0 -50
  431. data/spec/spec/dsl/description_spec.rb +0 -81
  432. data/spec/spec/dsl/example_class_spec.rb +0 -24
  433. data/spec/spec/dsl/example_instance_spec.rb +0 -162
  434. data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
  435. data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
  436. data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
  437. data/spec/spec/matchers/handler_spec.rb +0 -88
  438. data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
  439. data/spec/spec/matchers/raise_error_spec.rb +0 -147
  440. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
  441. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
  442. data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
  443. data/spec/spec/runner/context_matching_spec.rb +0 -27
  444. data/spec/spec/runner/execution_context_spec.rb +0 -31
  445. data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
  446. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
  447. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
  448. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
  449. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
  450. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
  451. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
  452. data/spec/spec/runner/object_ext_spec.rb +0 -11
  453. data/spec/spec/runner/spec_matcher_spec.rb +0 -102
  454. data/spec/spec/runner/spec_parser_spec.rb +0 -93
  455. data/spec/spec/translator_spec.rb +0 -216
  456. /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
@@ -0,0 +1,27 @@
1
+ Feature: mock with flexmock
2
+
3
+ As an RSpec user who prefers flexmock
4
+ I want to be able to use flexmock without rspec mocks interfering
5
+
6
+ Scenario: Mock with flexmock
7
+ Given a file named "flexmock_example_spec.rb" with:
8
+ """
9
+ Spec::Runner.configure do |config|
10
+ config.mock_with :flexmock
11
+ end
12
+
13
+ describe "plugging in flexmock" do
14
+ it "allows flexmock to be used" do
15
+ target = Object.new
16
+ flexmock(target).should_receive(:foo).once
17
+ target.foo
18
+ end
19
+
20
+ it "does not include rspec mocks" do
21
+ Spec.const_defined?(:Mocks).should be_false
22
+ end
23
+ end
24
+ """
25
+ When I run "spec flexmock_example_spec.rb"
26
+ Then the exit code should be 0
27
+ And the stdout should include "2 examples, 0 failures"
@@ -0,0 +1,27 @@
1
+ Feature: mock with mocha
2
+
3
+ As an RSpec user who prefers mocha
4
+ I want to be able to use mocha without rspec mocks interfering
5
+
6
+ Scenario: Mock with mocha
7
+ Given a file named "mocha_example_spec.rb" with:
8
+ """
9
+ Spec::Runner.configure do |config|
10
+ config.mock_with :mocha
11
+ end
12
+
13
+ describe "plugging in mocha" do
14
+ it "allows mocha to be used" do
15
+ target = Object.new
16
+ target.expects(:foo).once
17
+ target.foo
18
+ end
19
+
20
+ it "does not include rspec mocks" do
21
+ Spec.const_defined?(:Mocks).should be_false
22
+ end
23
+ end
24
+ """
25
+ When I run "spec mocha_example_spec.rb"
26
+ Then the exit code should be 0
27
+ And the stdout should include "2 examples, 0 failures"
@@ -0,0 +1,27 @@
1
+ Feature: mock with rr
2
+
3
+ As an RSpec user who prefers rr
4
+ I want to be able to use rr without rspec mocks interfering
5
+
6
+ Scenario: Mock with rr
7
+ Given a file named "rr_example_spec.rb" with:
8
+ """
9
+ Spec::Runner.configure do |config|
10
+ config.mock_with :rr
11
+ end
12
+
13
+ describe "plugging in rr" do
14
+ it "allows rr to be used" do
15
+ target = Object.new
16
+ mock(target).foo
17
+ target.foo
18
+ end
19
+
20
+ it "does not include rspec mocks" do
21
+ Spec.const_defined?(:Mocks).should be_false
22
+ end
23
+ end
24
+ """
25
+ When I run "spec rr_example_spec.rb"
26
+ Then the exit code should be 0
27
+ And the stdout should include "2 examples, 0 failures"
@@ -0,0 +1,62 @@
1
+ Feature: block local expectations
2
+
3
+ In order to set message expectations on ...
4
+ As an RSpec user
5
+ I want to configure the evaluation context
6
+
7
+ Background:
8
+ Given a file named "account.rb" with:
9
+ """
10
+ class Account
11
+ def self.create
12
+ yield new
13
+ end
14
+
15
+ def opening_balance(amount, currency)
16
+ end
17
+ end
18
+ """
19
+
20
+ Scenario: passing example
21
+ Given a file named "account_dsl.rb" with:
22
+ """
23
+ require 'spec_helper'
24
+ require 'account'
25
+
26
+ describe "account DSL" do
27
+ it " .... " do
28
+ account = Account.new
29
+ Account.should_receive(:create).and_yield do |account|
30
+ account.should_receive(:opening_balance).with(100, :USD)
31
+ end
32
+ Account.create do
33
+ opening_balance 100, :USD
34
+ end
35
+ end
36
+ end
37
+ """
38
+ When I run "spec account_dsl.rb"
39
+ Then the stdout should include "1 example, 0 failures"
40
+
41
+ Scenario: failing example
42
+
43
+ Given a file named "account_dsl.rb" with:
44
+ """
45
+ require 'spec_helper'
46
+ require 'account'
47
+
48
+ describe "account DSL" do
49
+ it " .... " do
50
+ account = Account.new
51
+ Account.should_receive(:create).and_yield do |account|
52
+ account.should_receive(:opening_balance).with(100, :USD)
53
+ end
54
+ Account.create do
55
+ # opening_balance is not called here
56
+ end
57
+ end
58
+ end
59
+ """
60
+
61
+ When I run "spec account_dsl.rb"
62
+ Then the stdout should include "1 example, 1 failure"
@@ -0,0 +1,22 @@
1
+ Feature: stub and mock together
2
+
3
+ As an RSpec user
4
+ I want to use stubs and mocks together
5
+
6
+ Scenario: stub in before
7
+ Given a file named "stub_and_mocks_spec.rb" with:
8
+ """
9
+ describe "a stub in before" do
10
+ before(:each) do
11
+ @messenger = mock('messenger').as_null_object
12
+ end
13
+
14
+ it "a" do
15
+ @messenger.should_receive(:foo).with('first')
16
+ @messenger.foo('second')
17
+ @messenger.foo('third')
18
+ end
19
+ end
20
+ """
21
+ When I run "spec stub_and_mocks_spec.rb --format nested"
22
+ Then the stdout should include "received :foo with unexpected arguments\n expected: (\"first\")\n got: ([\"second\"], [\"third\"])"
@@ -0,0 +1,26 @@
1
+ Feature: stub implementation
2
+
3
+ As an rspec user, I want to stub a complete implementation, not just a
4
+ return value.
5
+
6
+ Scenario: stub implementation
7
+ Given a file named "stub_implementation.rb" with:
8
+ """
9
+ describe "a stubbed implementation" do
10
+ it "works" do
11
+ object = Object.new
12
+ object.stub(:foo) do |arg|
13
+ if arg == :this
14
+ "got this"
15
+ elsif arg == :that
16
+ "got that"
17
+ end
18
+ end
19
+
20
+ object.foo(:this).should == "got this"
21
+ object.foo(:that).should == "got that"
22
+ end
23
+ end
24
+ """
25
+ When I run "spec stub_implementation.rb"
26
+ Then the stdout should include "1 example, 0 failures"
@@ -0,0 +1,81 @@
1
+ Feature: pending examples
2
+
3
+ RSpec offers three ways to indicate that an example is disabled pending
4
+ some action.
5
+
6
+ Scenario: pending implementation
7
+ Given a file named "example_without_block_spec.rb" with:
8
+ """
9
+ describe "an example" do
10
+ it "has not yet been implemented"
11
+ end
12
+ """
13
+ When I run "spec example_without_block_spec.rb"
14
+ Then the exit code should be 0
15
+ And the stdout should include "1 example, 0 failures, 1 pending"
16
+ And the stdout should include "Not Yet Implemented"
17
+ And the stdout should include "example_without_block_spec.rb:2"
18
+
19
+ Scenario: pending implementation with spec/test/unit
20
+ Given a file named "example_without_block_spec.rb" with:
21
+ """
22
+ require 'spec/test/unit'
23
+ describe "an example" do
24
+ it "has not yet been implemented"
25
+ end
26
+ """
27
+ When I run "spec example_without_block_spec.rb"
28
+ Then the exit code should be 0
29
+ And the stdout should include "1 example, 0 failures, 1 pending"
30
+ And the stdout should include "Not Yet Implemented"
31
+ And the stdout should include "example_without_block_spec.rb:3"
32
+
33
+ Scenario: pending any arbitary reason, with no block
34
+ Given a file named "pending_without_block_spec.rb" with:
35
+ """
36
+ describe "an example" do
37
+ it "is implemented but waiting" do
38
+ pending("something else getting finished")
39
+ end
40
+ end
41
+ """
42
+ When I run "spec pending_without_block_spec.rb"
43
+ Then the exit code should be 0
44
+ And the stdout should include "1 example, 0 failures, 1 pending"
45
+ And the stdout should include "(something else getting finished)"
46
+ And the stdout should include "pending_without_block_spec.rb:2"
47
+
48
+ Scenario: pending any arbitary reason, with a block that fails
49
+ Given a file named "pending_with_failing_block_spec.rb" with:
50
+ """
51
+ describe "an example" do
52
+ it "is implemented but waiting" do
53
+ pending("something else getting finished") do
54
+ raise "this is the failure"
55
+ end
56
+ end
57
+ end
58
+ """
59
+ When I run "spec pending_with_failing_block_spec.rb"
60
+ Then the exit code should be 0
61
+ And the stdout should include "1 example, 0 failures, 1 pending"
62
+ And the stdout should include "(something else getting finished)"
63
+ And the stdout should include "pending_with_failing_block_spec.rb:2"
64
+
65
+ Scenario: pending any arbitary reason, with a block that passes
66
+ Given a file named "pending_with_passing_block_spec.rb" with:
67
+ """
68
+ describe "an example" do
69
+ it "is implemented but waiting" do
70
+ pending("something else getting finished") do
71
+ true.should be(true)
72
+ end
73
+ end
74
+ end
75
+ """
76
+ When I run "spec pending_with_passing_block_spec.rb"
77
+ Then the exit code should be 256
78
+ And the stdout should include "1 example, 1 failure"
79
+ And the stdout should include "FIXED"
80
+ And the stdout should include "Expected pending 'something else getting finished' to fail. No Error was raised."
81
+ And the stdout should include "pending_with_passing_block_spec.rb:3"
@@ -0,0 +1,32 @@
1
+ Feature: run specific examples by line number
2
+
3
+ In order to run a single example from command line
4
+ RSpec allows you to specify the line number of the example(s) to run
5
+
6
+ Scenario: --line syntax on single example
7
+ Given a file named "example_spec.rb" with:
8
+ """
9
+ describe "an example" do
10
+ it "has not yet been implemented"
11
+ it "has been implemented" do
12
+ true
13
+ end
14
+ end
15
+ """
16
+ When I run "spec example_spec.rb --line 2"
17
+ Then the stdout should include "1 example, 0 failures, 1 pending"
18
+ And the stdout should include "example_spec.rb:2"
19
+
20
+ Scenario: colon line syntax on single example
21
+ Given a file named "example_spec.rb" with:
22
+ """
23
+ describe "an example" do
24
+ it "has not yet been implemented"
25
+ it "has been implemented" do
26
+ true
27
+ end
28
+ end
29
+ """
30
+ When I run "spec example_spec.rb:2"
31
+ Then the stdout should include "1 example, 0 failures, 1 pending"
32
+ And the stdout should include "example_spec.rb:2"
@@ -0,0 +1,25 @@
1
+ Feature: spec helper
2
+ In order to centralize code needed across most specs
3
+ As a spec author
4
+ I want to require 'spec_helper'
5
+
6
+ Because rspec adds the PROJECT_ROOT/spec directory to the load path, we can
7
+ just require 'spec_helper' and it will be found.
8
+
9
+ Scenario: spec helper
10
+ Given a directory named "spec"
11
+ And a file named "spec/spec_helper.rb" with:
12
+ """
13
+ SOME_CONSTANT = 'some value'
14
+ """
15
+ And a file named "example.rb" with:
16
+ """
17
+ require 'spec_helper'
18
+ describe SOME_CONSTANT do
19
+ it { should == 'some value' }
20
+ end
21
+ """
22
+ When I run "spec example.rb"
23
+ And the stdout should include "1 example, 0 failures"
24
+ And the exit code should be 0
25
+
@@ -0,0 +1,52 @@
1
+ Given %r{^a file named "([^"]+)" with:$} do |file_name, code|
2
+ create_file(file_name, code)
3
+ end
4
+
5
+ Given /^a directory named "([^\"]*)"$/ do |dirname|
6
+ create_directory(dirname)
7
+ end
8
+
9
+ When %r{^I run "spec ([^"]+)"$} do |file_and_args|
10
+ spec(file_and_args)
11
+ end
12
+
13
+ When %r{^I run "ruby ([^"]+)"$} do |file_and_args|
14
+ ruby(file_and_args)
15
+ end
16
+
17
+ When %r{^I run "cmdline.rb ([^"]+)"$} do |file_and_args|
18
+ cmdline(file_and_args)
19
+ end
20
+
21
+ Then /^the (.*) should include (.*)$/ do |stream, string_or_regex|
22
+ written = case(stream)
23
+ when 'stdout' then last_stdout
24
+ when 'stderr' then last_stderr
25
+ else raise "Unknown stream: #{stream}"
26
+ end
27
+ written.should smart_match(string_or_regex)
28
+ end
29
+
30
+ Then /^the (.*) should include$/ do |stream, string_or_regex|
31
+ written = case(stream)
32
+ when 'stdout' then last_stdout
33
+ when 'stderr' then last_stderr
34
+ else raise "Unknown stream: #{stream}"
35
+ end
36
+ written.should smart_match(string_or_regex)
37
+ end
38
+
39
+ Then /^the (.*) should not match (.*)$/ do |stream, string_or_regex|
40
+ written = case(stream)
41
+ when 'stdout' then last_stdout
42
+ when 'stderr' then last_stderr
43
+ else raise "Unknown stream: #{stream}"
44
+ end
45
+ written.should_not smart_match(string_or_regex)
46
+ end
47
+
48
+ Then /^the exit code should be (\d+)$/ do |exit_code|
49
+ if last_exit_code != exit_code.to_i
50
+ raise "Did not exit with #{exit_code}, but with #{last_exit_code}. Standard error:\n#{last_stderr}"
51
+ end
52
+ end
@@ -0,0 +1,16 @@
1
+ When /^I stub "([^\"]*)" on "([^\"]*)" to "([^\"]*)"$/ do |method_name, const_name, value|
2
+ const = Object.const_get(const_name)
3
+ const.stub!(method_name.to_sym).and_return(value)
4
+ end
5
+
6
+ Then /^calling "([^\"]*)" on "([^\"]*)" should return "([^\"]*)"$/ do |method_name, const_name, value|
7
+ const = Object.const_get(const_name)
8
+ const.send(method_name.to_sym).should == value
9
+ end
10
+
11
+ Then /^"([^\"]*)" should not be defined on "([^\"]*)"$/ do |method_name, const_name|
12
+ const = Object.const_get(const_name)
13
+ lambda {
14
+ const.send(method_name.to_sym)
15
+ }.should raise_error(NameError, /#{method_name}/)
16
+ end
@@ -0,0 +1,31 @@
1
+ Feature: explicit subject
2
+
3
+ You can override the implicit subject using the subject() method.
4
+
5
+ Scenario: subject in top level group
6
+ Given a file named "top_level_subject_spec.rb" with:
7
+ """
8
+ describe Array, "with some elements" do
9
+ subject { [1,2,3] }
10
+ it "should have the prescribed elements" do
11
+ subject.should == [1,2,3]
12
+ end
13
+ end
14
+ """
15
+ When I run "spec top_level_subject_spec.rb"
16
+ Then the stdout should include "1 example, 0 failures"
17
+
18
+ Scenario: subject in a nested group
19
+ Given a file named "nested_subject_spec.rb" with:
20
+ """
21
+ describe Array do
22
+ subject { [1,2,3] }
23
+ describe "with some elements" do
24
+ it "should have the prescribed elements" do
25
+ subject.should == [1,2,3]
26
+ end
27
+ end
28
+ end
29
+ """
30
+ When I run "spec nested_subject_spec.rb"
31
+ Then the stdout should include "1 example, 0 failures"
@@ -0,0 +1,43 @@
1
+ Feature: implicit subject
2
+
3
+ The first argument to the outermost example group block is
4
+ made available to each example as an implicit subject of
5
+ that example.
6
+
7
+ Scenario: subject in top level group
8
+ Given a file named "top_level_subject_spec.rb" with:
9
+ """
10
+ describe Array, "when first created" do
11
+ it "should be empty" do
12
+ subject.should == []
13
+ end
14
+ end
15
+ """
16
+ When I run "spec top_level_subject_spec.rb"
17
+ Then the stdout should include "1 example, 0 failures"
18
+
19
+ Scenario: subject in a nested group
20
+ Given a file named "nested_subject_spec.rb" with:
21
+ """
22
+ describe Array do
23
+ describe "when first created" do
24
+ it "should be empty" do
25
+ subject.should == []
26
+ end
27
+ end
28
+ end
29
+ """
30
+ When I run "spec nested_subject_spec.rb"
31
+ Then the stdout should include "1 example, 0 failures"
32
+
33
+ Scenario: subject with getters
34
+ Given a file named "subject_with_getter_spec.rb" with:
35
+ """
36
+ describe Array do
37
+ describe "when first created" do
38
+ its(:length) { should == 0 }
39
+ end
40
+ end
41
+ """
42
+ When I run "spec subject_with_getter_spec.rb"
43
+ Then the stdout should include "1 example, 0 failures"
@@ -0,0 +1,83 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "/../../lib")
2
+
3
+ require 'spec/expectations'
4
+ require 'forwardable'
5
+ require 'tempfile'
6
+ require 'spec/ruby_forker'
7
+ require 'features/support/matchers/smart_match'
8
+ require 'spec/stubs/cucumber'
9
+
10
+ class RspecWorld
11
+ include Spec::Expectations
12
+ include Spec::Matchers
13
+ include RubyForker
14
+
15
+ extend Forwardable
16
+ def_delegators RspecWorld, :working_dir, :spec_command, :cmdline_file, :rspec_lib
17
+
18
+ def self.working_dir
19
+ @working_dir ||= File.expand_path(File.join(File.dirname(__FILE__), "/../../tmp/cucumber-generated-files"))
20
+ end
21
+
22
+ def self.spec_command
23
+ @spec_command ||= File.expand_path(File.join(File.dirname(__FILE__), "/../../bin/spec"))
24
+ end
25
+
26
+ def self.cmdline_file
27
+ @cmdline_file ||= File.expand_path(File.join(File.dirname(__FILE__), "/../../resources/helpers/cmdline.rb"))
28
+ end
29
+
30
+ def self.rspec_lib
31
+ @rspec_lib ||= File.join(working_dir, "/../../lib")
32
+ end
33
+
34
+ def spec(args)
35
+ ruby("#{spec_command} #{args}")
36
+ end
37
+
38
+ def cmdline(args)
39
+ ruby("#{cmdline_file} #{args}")
40
+ end
41
+
42
+ def create_file(file_name, contents)
43
+ file_path = File.join(working_dir, file_name)
44
+ File.open(file_path, "w") { |f| f << contents }
45
+ end
46
+
47
+ def create_directory(dirname)
48
+ FileUtils.mkdir_p File.join(working_dir, dirname)
49
+ end
50
+
51
+ def last_stdout
52
+ @stdout
53
+ end
54
+
55
+ def last_stderr
56
+ @stderr
57
+ end
58
+
59
+ def last_exit_code
60
+ @exit_code
61
+ end
62
+
63
+ # it seems like this, and the last_* methods, could be moved into RubyForker-- is that being used anywhere but the features?
64
+ def ruby(args)
65
+ stderr_file = Tempfile.new('rspec')
66
+ stderr_file.close
67
+ Dir.chdir(working_dir) do
68
+ @stdout = super("-I #{rspec_lib} #{args}", stderr_file.path)
69
+ end
70
+ @stderr = IO.read(stderr_file.path)
71
+ @exit_code = $?.to_i
72
+ end
73
+
74
+ end
75
+
76
+ Before do
77
+ FileUtils.rm_rf RspecWorld.working_dir if test ?d, RspecWorld.working_dir
78
+ FileUtils.mkdir_p RspecWorld.working_dir
79
+ end
80
+
81
+ World do
82
+ RspecWorld.new
83
+ end
@@ -0,0 +1,31 @@
1
+ Spec::Matchers.define :smart_match do |expected|
2
+ def regexp?
3
+ /^\/.*\/?$/
4
+ end
5
+
6
+ def quoted?
7
+ /^".*"$/
8
+ end
9
+
10
+ match do |actual|
11
+ case expected
12
+ when regexp?
13
+ actual =~ eval(expected)
14
+ when quoted?
15
+ actual.index(eval(expected))
16
+ else # multi-line string
17
+ actual.index(expected)
18
+ end
19
+ end
20
+
21
+ failure_message_for_should do |actual|
22
+ <<-MESSAGE
23
+ #{'*'*50}
24
+ got:
25
+ #{'*'*30}
26
+ #{actual}
27
+ #{'*'*50}
28
+ MESSAGE
29
+ end
30
+ end
31
+
data/geminstaller.yml ADDED
@@ -0,0 +1,29 @@
1
+ # Basics needed to run 'rake' from this directory
2
+ gems:
3
+ - name: cucumber
4
+ version: '>= 0.3.101'
5
+ - name: diff-lcs
6
+ version: '>= 1.1.2'
7
+ - name: fakefs
8
+ version: '>= 0.2'
9
+ - name: flexmock
10
+ version: '>= 0.8.6'
11
+ - name: heckle
12
+ version: '>= 1.4.2'
13
+ - name: hoe
14
+ version: '>= 2.0'
15
+ - name: nokogiri
16
+ version: '>= 1.2.3'
17
+ - name: mocha
18
+ version: '>= 0.9.5'
19
+ - name: rake
20
+ version: '>= 0.8.4'
21
+ - name: rcov
22
+ version: '>= 0.9.7.1'
23
+ - name: syntax
24
+ version: '>= 1.0.0'
25
+ - name: rr
26
+ version: '>= 0.10.0'
27
+ - name: ruby-debug
28
+ version: '>= 0.10.3'
29
+ - name: autotest-growl
data/init.rb ADDED
@@ -0,0 +1,9 @@
1
+ # Placeholder to satisfy Rails.
2
+ #
3
+ # Do NOT add any require statements to this file. Doing
4
+ # so will cause Rails to load this plugin all of the time.
5
+ #
6
+ # Running 'ruby script/generate rspec' will
7
+ # generate spec/spec_helper.rb, which includes the necessary
8
+ # require statements and configuration. This file should
9
+ # be required by all of your spec files.
@@ -0,0 +1,3 @@
1
+ Autotest.add_discovery do
2
+ "rspec" if File.directory?('spec') && ENV['RSPEC']
3
+ end