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,15 @@
1
+ require 'spec_helper'
2
+ require 'ruby_forker'
3
+
4
+ module Spec
5
+ module Runner
6
+ describe CommandLine do
7
+ include RubyForker
8
+ it "should not output twice" do
9
+ output = ruby "-Ilib bin/spec spec/spec/runner/output_one_time_fixture_runner.rb"
10
+ output.should include("1 example, 0 failures")
11
+ output.should_not include("0 examples, 0 failures")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,56 +1,123 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
1
+ require 'spec_helper'
2
2
 
3
3
  module Spec
4
4
  module Runner
5
- describe "QuietBacktraceTweaker" do
5
+ describe QuietBacktraceTweaker do
6
6
  before(:each) do
7
7
  @error = RuntimeError.new
8
8
  @tweaker = QuietBacktraceTweaker.new
9
9
  end
10
10
 
11
- it "should not barf on nil backtrace" do
12
- lambda do
13
- @tweaker.tweak_backtrace(@error, "spec name")
14
- end.should_not raise_error
11
+ it "gracefully handles nil backtrace" do
12
+ expect do
13
+ @tweaker.tweak_backtrace(@error)
14
+ end.to_not raise_error
15
15
  end
16
16
 
17
- it "should remove anything from textmate ruby bundle" do
17
+ it "gracefully handles backtraces with newlines" do
18
+ @error.set_backtrace(["we like\nbin/spec:\nnewlines"])
19
+ @tweaker.tweak_backtrace(@error)
20
+ @error.backtrace.should include("we like\nnewlines")
21
+ end
22
+
23
+ it "cleans up double slashes" do
24
+ @error.set_backtrace(["/a//b/c//d.rb"])
25
+ @tweaker.tweak_backtrace(@error)
26
+ @error.backtrace.should include("/a/b/c/d.rb")
27
+ end
28
+
29
+ it "preserves lines from textmate ruby bundle" do
18
30
  @error.set_backtrace(["/Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/tmruby.rb:147"])
19
- @tweaker.tweak_backtrace(@error, "spec name")
31
+ @tweaker.tweak_backtrace(@error)
20
32
  @error.backtrace.should be_empty
21
33
  end
22
34
 
23
- it "should remove anything in lib spec dir" do
35
+ it "removes lines in lib/spec" do
24
36
  ["expectations", "mocks", "runner"].each do |child|
25
37
  element="/lib/spec/#{child}/anything.rb"
26
38
  @error.set_backtrace([element])
27
- @tweaker.tweak_backtrace(@error, "spec name")
28
- unless (@error.backtrace.empty?)
29
- raise("Should have tweaked away '#{element}'")
30
- end
39
+ @tweaker.tweak_backtrace(@error)
40
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
31
41
  end
32
42
  end
33
43
 
34
- it "should remove mock_frameworks/rspec" do
44
+ it "removes lines in bin/spec" do
45
+ @error.set_backtrace(["bin/spec:"])
46
+ @tweaker.tweak_backtrace(@error)
47
+ @error.backtrace.should be_empty
48
+ end
49
+
50
+ it "preserves lines in spec" do
51
+ @error.set_backtrace(["spec/foo/bar_spec.rb"])
52
+ @tweaker.tweak_backtrace(@error)
53
+ @error.backtrace.should == ["spec/foo/bar_spec.rb"]
54
+ end
55
+
56
+ it "preserves lines in ./spec" do
57
+ @error.set_backtrace(["./spec/foo/bar_spec.rb"])
58
+ @tweaker.tweak_backtrace(@error)
59
+ @error.backtrace.should == ["./spec/foo/bar_spec.rb"]
60
+ end
61
+
62
+ it "preserves lines in /path/to/project/spec" do
63
+ @error.set_backtrace(["/path/to/project/spec/foo/bar_spec.rb"])
64
+ @tweaker.tweak_backtrace(@error)
65
+ @error.backtrace.should == ["/path/to/project/spec/foo/bar_spec.rb"]
66
+ end
67
+
68
+ it "removes lines in mock_frameworks/rspec" do
69
+ element = "mock_frameworks/rspec"
70
+ @error.set_backtrace([element])
71
+ @tweaker.tweak_backtrace(@error)
72
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
73
+ end
74
+
75
+ it "removes custom patterns in regexp form" do
76
+ element = "/vendor/lib/custom_pattern/"
77
+ @tweaker.ignore_patterns /custom_pattern/
78
+ @error.set_backtrace([element])
79
+ @tweaker.tweak_backtrace(@error)
80
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
81
+ end
82
+
83
+ it "removes custom patterns in string form" do
84
+ element = "/vendor/lib/custom_pattern/"
85
+ @tweaker.ignore_patterns "custom_pattern"
86
+ @error.set_backtrace([element])
87
+ @tweaker.tweak_backtrace(@error)
88
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
89
+ end
90
+
91
+ it "removes lines in mock_frameworks/rspec" do
35
92
  element = "mock_frameworks/rspec"
36
93
  @error.set_backtrace([element])
37
- @tweaker.tweak_backtrace(@error, "spec name")
38
- unless (@error.backtrace.empty?)
39
- raise("Should have tweaked away '#{element}'")
94
+ @tweaker.tweak_backtrace(@error)
95
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
96
+ end
97
+
98
+ it "removes lines in rspec gem" do
99
+ ["/rspec-1.2.3/lib/spec.rb","/rspec-1.2.3/lib/spec/anything.rb","bin/spec:123"].each do |element|
100
+ @error.set_backtrace([element])
101
+ @tweaker.tweak_backtrace(@error)
102
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
40
103
  end
41
104
  end
42
105
 
43
- it "should remove bin spec" do
44
- @error.set_backtrace(["bin/spec:"])
45
- @tweaker.tweak_backtrace(@error, "spec name")
46
- @error.backtrace.should be_empty
106
+ it "removes lines in pre-release rspec gems" do
107
+ ["/rspec-1.2.3.a1.gem/lib/spec.rb","/rspec-1.2.3.b1.gem/lib/spec.rb","/rspec-1.2.3.rc1.gem/lib/spec.rb"].each do |element|
108
+ @error.set_backtrace([element])
109
+ @tweaker.tweak_backtrace(@error)
110
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
111
+ end
47
112
  end
48
-
49
- it "should clean up double slashes" do
50
- @error.set_backtrace(["/a//b/c//d.rb"])
51
- @tweaker.tweak_backtrace(@error, "spec name")
52
- @error.backtrace.should include("/a/b/c/d.rb")
113
+
114
+ it "removes lines in spork gem" do
115
+ ["/spork-1.2.3/lib/spec.rb","/spork-1.2.3/lib/spec/anything.rb","bin/spork:123"].each do |element|
116
+ @error.set_backtrace([element])
117
+ @tweaker.tweak_backtrace(@error)
118
+ @error.backtrace.should be_empty, "Should have removed line with '#{element}'"
119
+ end
53
120
  end
54
121
  end
55
122
  end
56
- end
123
+ end
@@ -1,153 +1,244 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
1
+ require 'spec_helper'
2
2
 
3
3
  module Spec
4
4
  module Runner
5
-
6
- module ReporterSpecHelper
7
- def setup
8
- @io = StringIO.new
5
+ describe Reporter do
6
+ attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group, :example_group_proxy, :example_proxy
7
+ before(:each) do
8
+ @formatter_output = StringIO.new
9
+ @options = Options.new(StringIO.new, StringIO.new)
9
10
  @backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
10
- @formatter = mock("formatter")
11
- @reporter = Reporter.new([@formatter], @backtrace_tweaker)
11
+ options.backtrace_tweaker = backtrace_tweaker
12
+ @formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(options, formatter_output)
13
+ options.formatters << formatter
14
+ @reporter = Reporter.new(options)
15
+ @example_group = create_example_group("example_group")
16
+ @example_group_proxy = Spec::Example::ExampleGroupProxy.new(@example_group)
17
+ @example_proxy = Spec::Example::ExampleProxy.new
18
+ example_group.notify(reporter)
12
19
  end
13
20
 
14
21
  def failure
15
- Mocks::DuckTypeArgConstraint.new(:header, :exception)
22
+ Mocks::ArgumentMatchers::DuckTypeMatcher.new(:header, :exception)
16
23
  end
17
- end
18
-
19
- describe Reporter do
20
- include ReporterSpecHelper
21
- before(:each) {setup}
22
-
23
- it "should tell formatter when behaviour is added" do
24
- @formatter.should_receive(:add_behaviour).with("behaviour")
25
- @reporter.add_behaviour("behaviour")
24
+
25
+ def create_example_group(text)
26
+ example_group = Spec::Example::ExampleGroup.describe(text) do
27
+ it "should do something" do
28
+ end
29
+ end
30
+ example_group
26
31
  end
27
32
 
28
- it "should handle multiple behaviours with same name" do
29
- @formatter.should_receive(:add_behaviour).exactly(3).times
30
- @formatter.should_receive(:example_started).exactly(3).times
31
- @formatter.should_receive(:example_passed).exactly(3).times
32
- @formatter.should_receive(:start_dump)
33
- @formatter.should_receive(:dump_summary).with(:anything, 3, 0, 0)
34
- @reporter.add_behaviour("behaviour")
35
- @reporter.example_started("spec 1")
36
- @reporter.example_finished("spec 1")
37
- @reporter.add_behaviour("behaviour")
38
- @reporter.example_started("spec 2")
39
- @reporter.example_finished("spec 2")
40
- @reporter.add_behaviour("behaviour")
41
- @reporter.example_started("spec 3")
42
- @reporter.example_finished("spec 3")
43
- @reporter.dump
33
+ it "should assign itself as the reporter to options" do
34
+ options.reporter.should equal(@reporter)
35
+ end
36
+
37
+ it "should tell formatter when example_group is added" do
38
+ formatter.should_receive(:example_group_started).with(example_group_proxy)
39
+ example_group.notify(reporter)
40
+ end
41
+
42
+ it "should handle multiple example_groups with same name" do
43
+ formatter.should_receive(:example_group_started).exactly(3).times
44
+ formatter.should_receive(:example_started).exactly(3).times
45
+ formatter.should_receive(:example_passed).exactly(3).times
46
+ formatter.should_receive(:start_dump)
47
+ formatter.should_receive(:dump_pending)
48
+ formatter.should_receive(:close).with(no_args)
49
+ formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
50
+ create_example_group("example_group").notify(reporter)
51
+ reporter.example_started(description_of("spec 1"))
52
+ reporter.example_finished(description_of("spec 1"))
53
+ create_example_group("example_group").notify(reporter)
54
+ reporter.example_started(description_of("spec 2"))
55
+ reporter.example_finished(description_of("spec 2"))
56
+ create_example_group("example_group").notify(reporter)
57
+ reporter.example_started(description_of("spec 3"))
58
+ reporter.example_finished(description_of("spec 3"))
59
+ reporter.dump
60
+ end
61
+
62
+ def description_of(example)
63
+ ::Spec::Example::ExampleProxy.new(String === example ? example : example.description)
44
64
  end
45
65
 
46
66
  it "should handle multiple examples with the same name" do
47
67
  error=RuntimeError.new
48
- @formatter.should_receive(:add_behaviour).exactly(2).times
49
- @formatter.should_receive(:example_passed).with("example").exactly(2).times
50
- @formatter.should_receive(:example_failed).with("example", 1, failure)
51
- @formatter.should_receive(:example_failed).with("example", 2, failure)
52
- @formatter.should_receive(:dump_failure).exactly(2).times
53
- @formatter.should_receive(:start_dump)
54
- @formatter.should_receive(:dump_summary).with(:anything, 4, 2, 0)
55
- @backtrace_tweaker.should_receive(:tweak_backtrace).twice
56
- @reporter.add_behaviour("behaviour")
57
- @reporter.example_finished("example")
58
- @reporter.example_finished("example", error)
59
- @reporter.add_behaviour("behaviour")
60
- @reporter.example_finished("example")
61
- @reporter.example_finished("example", error)
62
- @reporter.dump
68
+ passing = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
69
+ failing = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
70
+
71
+ formatter.should_receive(:example_group_started).exactly(2).times
72
+ formatter.should_receive(:example_passed).with(description_of(passing)).exactly(2).times
73
+ formatter.should_receive(:example_failed).with(description_of(failing), 1, failure)
74
+ formatter.should_receive(:example_failed).with(description_of(failing), 2, failure)
75
+ formatter.should_receive(:dump_failure).exactly(2).times
76
+ formatter.should_receive(:start_dump)
77
+ formatter.should_receive(:dump_pending)
78
+ formatter.should_receive(:close).with(no_args)
79
+ formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
80
+ backtrace_tweaker.should_receive(:tweak_backtrace).twice
81
+
82
+ create_example_group("example_group").notify(reporter)
83
+ reporter.example_finished(description_of(passing))
84
+ reporter.example_finished(description_of(failing), error)
85
+
86
+ create_example_group("example_group").notify(reporter)
87
+ reporter.example_finished(description_of(passing))
88
+ reporter.example_finished(description_of(failing), error)
89
+ reporter.dump
63
90
  end
64
91
 
65
92
  it "should push stats to formatter even with no data" do
66
- @formatter.should_receive(:start_dump)
67
- @formatter.should_receive(:dump_summary).with(:anything, 0, 0, 0)
68
- @reporter.dump
93
+ formatter.should_receive(:start_dump)
94
+ formatter.should_receive(:dump_pending)
95
+ formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
96
+ formatter.should_receive(:close).with(no_args)
97
+ reporter.dump
69
98
  end
70
99
 
71
100
  it "should push time to formatter" do
72
- @formatter.should_receive(:start).with(5)
73
- @formatter.should_receive(:start_dump)
74
- @formatter.should_receive(:dump_summary) do |time, a, b|
101
+ formatter.should_receive(:start).with(5)
102
+ formatter.should_receive(:start_dump)
103
+ formatter.should_receive(:dump_pending)
104
+ formatter.should_receive(:close).with(no_args)
105
+ formatter.should_receive(:dump_summary) do |time, a, b|
75
106
  time.to_s.should match(/[0-9].[0-9|e|-]+/)
76
107
  end
77
- @reporter.start(5)
78
- @reporter.end
79
- @reporter.dump
80
- end
81
- end
82
-
83
- describe Reporter, " reporting one passing example" do
84
- include ReporterSpecHelper
85
- before(:each) {setup}
86
-
87
- it "should tell formatter example passed" do
88
- @formatter.should_receive(:example_passed)
89
- @reporter.example_finished("example")
108
+ reporter.start(5)
109
+ reporter.end
110
+ reporter.dump
90
111
  end
91
112
 
92
- it "should not delegate to backtrace tweaker" do
93
- @formatter.should_receive(:example_passed)
94
- @backtrace_tweaker.should_not_receive(:tweak_backtrace)
95
- @reporter.example_finished("example")
96
- end
97
-
98
- it "should account for passing example in stats" do
99
- @formatter.should_receive(:example_passed)
100
- @formatter.should_receive(:start_dump)
101
- @formatter.should_receive(:dump_summary).with(:anything, 1, 0, 0)
102
- @reporter.example_finished("example")
103
- @reporter.dump
104
- end
105
- end
106
-
107
- describe Reporter, " reporting one failing example" do
108
- include ReporterSpecHelper
109
- before(:each) {setup}
110
-
111
- it "should tell formatter that example failed" do
112
- @formatter.should_receive(:example_failed)
113
- @reporter.example_finished("example", RuntimeError.new)
114
- end
113
+ describe "reporting one passing example" do
114
+ it "should tell formatter example passed" do
115
+ formatter.should_receive(:example_passed)
116
+ reporter.example_finished(description_of("example"))
117
+ end
118
+
119
+ it "should not delegate to backtrace tweaker" do
120
+ formatter.should_receive(:example_passed)
121
+ backtrace_tweaker.should_not_receive(:tweak_backtrace)
122
+ reporter.example_finished(description_of("example"))
123
+ end
115
124
 
116
- it "should delegate to backtrace tweaker" do
117
- @formatter.should_receive(:example_failed)
118
- @backtrace_tweaker.should_receive(:tweak_backtrace)
119
- @reporter.example_finished("spec", RuntimeError.new)
125
+ it "should account for passing example in stats" do
126
+ formatter.should_receive(:example_passed)
127
+ formatter.should_receive(:start_dump)
128
+ formatter.should_receive(:dump_pending)
129
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
130
+ formatter.should_receive(:close).with(no_args)
131
+ reporter.example_finished(description_of("example"))
132
+ reporter.dump
133
+ end
120
134
  end
121
-
122
- it "should account for failing example in stats" do
123
- @formatter.should_receive(:add_behaviour)
124
- @formatter.should_receive(:example_failed).with("example", 1, failure)
125
- @formatter.should_receive(:start_dump)
126
- @formatter.should_receive(:dump_failure).with(1, :anything)
127
- @formatter.should_receive(:dump_summary).with(:anything, 1, 1, 0)
128
- @reporter.add_behaviour("behaviour")
129
- @reporter.example_finished("example", RuntimeError.new)
130
- @reporter.dump
135
+
136
+ describe "reporting one failing example" do
137
+ it "should tell formatter that example failed" do
138
+ example = example_group.it("should do something") {}
139
+ formatter.should_receive(:example_failed)
140
+ reporter.example_finished(description_of(example), RuntimeError.new)
141
+ end
142
+
143
+ it "should delegate to backtrace tweaker" do
144
+ formatter.should_receive(:example_failed)
145
+ backtrace_tweaker.should_receive(:tweak_backtrace)
146
+ reporter.example_finished(example_proxy, RuntimeError.new)
147
+ end
148
+
149
+ it "should account for failing example in stats" do
150
+ example = ::Spec::Example::ExampleGroupDouble.new(example_proxy)
151
+ formatter.should_receive(:example_failed).with(description_of(example), 1, failure)
152
+ formatter.should_receive(:start_dump)
153
+ formatter.should_receive(:dump_pending)
154
+ formatter.should_receive(:dump_failure).with(1, anything())
155
+ formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
156
+ formatter.should_receive(:close).with(no_args)
157
+ reporter.example_finished(description_of(example), RuntimeError.new)
158
+ reporter.dump
159
+ end
160
+
131
161
  end
132
162
 
133
- end
134
-
135
- describe Reporter, " reporting one not implemented example" do
136
- include ReporterSpecHelper
137
- before(:each) {setup}
138
-
139
- it "should tell formatter example passed" do
140
- @formatter.should_receive(:example_not_implemented)
141
- @reporter.example_finished("example", nil, nil, true)
163
+ describe "reporting one pending example (ExamplePendingError)" do
164
+ before :each do
165
+ @pending_error = Spec::Example::ExamplePendingError.new("reason")
166
+ end
167
+
168
+ it "should tell formatter example is pending" do
169
+ example = ExampleGroup.new(example_proxy)
170
+ formatter.should_receive(:example_pending).with(description_of(example), "reason")
171
+ formatter.should_receive(:example_group_started).with(example_group_proxy)
172
+ example_group.notify(reporter)
173
+ reporter.example_finished(description_of(example), @pending_error)
174
+ end
175
+
176
+ it "should account for pending example in stats" do
177
+ example = ExampleGroup.new(example_proxy)
178
+ formatter.should_receive(:example_pending).with(description_of(example), "reason")
179
+ formatter.should_receive(:start_dump)
180
+ formatter.should_receive(:dump_pending)
181
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
182
+ formatter.should_receive(:close).with(no_args)
183
+ formatter.should_receive(:example_group_started).with(example_group_proxy)
184
+ example_group.notify(reporter)
185
+ reporter.example_finished(description_of(example), @pending_error)
186
+ reporter.dump
187
+ end
188
+
189
+ describe "to formatters which have example_pending's arity of 3 (which is now deprecated)" do
190
+ before :each do
191
+ Spec.stub!(:warn)
192
+
193
+ @deprecated_formatter = Class.new(@formatter.class) do
194
+ attr_reader :example_passed_to_method, :message_passed_to_method
195
+
196
+ def example_pending(example_passed_to_method, message_passed_to_method, deprecated_pending_location)
197
+ @example_passed_to_method = example_passed_to_method
198
+ @message_passed_to_method = message_passed_to_method
199
+ end
200
+ end.new(options, formatter_output)
201
+
202
+ options.formatters << @deprecated_formatter
203
+ end
204
+
205
+ it "should pass the correct example description to the formatter" do
206
+ proxy = Spec::Example::ExampleProxy.new("name")
207
+ example = ExampleGroup.new(proxy)
208
+ example_group.notify(reporter)
209
+ reporter.example_finished(description_of(example), @pending_error)
210
+
211
+ @deprecated_formatter.example_passed_to_method.should == proxy
212
+ end
213
+
214
+ it "should pass the correct pending error message to the formatter" do
215
+ example = ExampleGroup.new(example_proxy)
216
+ example_group.notify(reporter)
217
+ reporter.example_finished(description_of(example), @pending_error)
218
+
219
+ @deprecated_formatter.message_passed_to_method.should == @pending_error.message
220
+ end
221
+
222
+ it "should raise a deprecation warning" do
223
+ Spec.should_receive(:warn)
224
+
225
+ example = ExampleGroup.new(example_proxy)
226
+ example_group.notify(reporter)
227
+ reporter.example_finished(description_of(example), @pending_error)
228
+ end
229
+ end
142
230
  end
143
-
144
- it "should account for not implemented example in stats" do
145
- @formatter.should_receive(:example_not_implemented)
146
- @formatter.should_receive(:start_dump)
147
- @formatter.should_receive(:dump_summary).with(:anything, 1, 0, 1)
148
- @reporter.example_finished("example", nil, nil, true)
149
- @reporter.dump
231
+
232
+ describe "reporting one pending example (PendingExampleFixedError)" do
233
+ it "should tell formatter pending example is fixed" do
234
+ formatter.should_receive(:example_failed) do |name, counter, failure|
235
+ failure.header.should == "'example_group should do something' FIXED"
236
+ end
237
+ formatter.should_receive(:example_group_started).with(example_group_proxy)
238
+ example_group.notify(reporter)
239
+ reporter.example_finished(description_of(example_group.examples.first), Spec::Example::PendingExampleFixedError.new("reason"))
240
+ end
150
241
  end
151
242
  end
152
243
  end
153
- end
244
+ end
File without changes
File without changes
@@ -0,0 +1 @@
1
+ # Empty - used by ../options_spec.rb
@@ -0,0 +1,14 @@
1
+ module Custom
2
+ class ExampleGroupRunner
3
+ attr_reader :options, :arg
4
+ def initialize(options, arg)
5
+ @options, @arg = options, arg
6
+ end
7
+
8
+ def load_files(files)
9
+ end
10
+
11
+ def run
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ module Custom
3
+ class ExampleUTF8ClassNameVarietà
4
+ def self.è
5
+ così = :però
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,2 @@
1
+ --diff
2
+ --colour
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --drb
@@ -0,0 +1,2 @@
1
+ --diff --colour
2
+ --format s
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ module Spec
4
+ describe Runner do
5
+ describe ".configure" do
6
+ it "should yield global configuration" do
7
+ Spec::Runner.configure do |config|
8
+ config.should equal(Spec::Runner.configuration)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format
3
+ profile
4
+ --timeout
5
+ 20
6
+ --diff