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,329 @@
1
+ require 'spec_helper'
2
+ require 'spec/runner/formatter/nested_text_formatter'
3
+
4
+ module Spec
5
+ module Runner
6
+ module Formatter
7
+ describe NestedTextFormatter do
8
+ with_sandboxed_options do
9
+ attr_reader :io, :options, :formatter, :example_group
10
+ before(:each) do
11
+ @io = StringIO.new
12
+ @formatter = NestedTextFormatter.new(options, io)
13
+ @example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("ExampleGroup")
14
+ @example_group.example("example") {}
15
+ end
16
+
17
+ describe "where ExampleGroup has no superclass with a description" do
18
+ def example_group_started
19
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
20
+ end
21
+
22
+ before(:each) do
23
+ example_group_started
24
+ end
25
+
26
+ describe "#dump_summary" do
27
+ it "produces standard summary without pending when pending has a 0 count" do
28
+ formatter.dump_summary(3, 2, 1, 0)
29
+ io.string.should == <<-OUT
30
+ ExampleGroup
31
+
32
+ Finished in 3 seconds
33
+
34
+ 2 examples, 1 failure
35
+ OUT
36
+ end
37
+
38
+ it "produces standard summary" do
39
+ formatter.dump_summary(3, 2, 1, 4)
40
+ io.string.should == <<-OUT
41
+ ExampleGroup
42
+
43
+ Finished in 3 seconds
44
+
45
+ 2 examples, 1 failure, 4 pending
46
+ OUT
47
+ end
48
+ end
49
+
50
+ describe "#example_group_started" do
51
+
52
+ describe "when ExampleGroup has a nested description" do
53
+
54
+ describe "when ExampleGroup has no parents with nested description" do
55
+ it "pushes ExampleGroup name" do
56
+ io.string.should eql("ExampleGroup\n")
57
+ end
58
+ end
59
+
60
+ describe "when ExampleGroup has one parent with nested description" do
61
+ attr_reader :child_example_group
62
+ def example_group_started
63
+ @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
64
+ end
65
+
66
+ describe "and parent ExampleGroups have not been printed" do
67
+ before do
68
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
69
+ end
70
+
71
+ it "pushes ExampleGroup name with two spaces of indentation" do
72
+ io.string.should == <<-OUT
73
+ ExampleGroup
74
+ Child ExampleGroup
75
+ OUT
76
+ end
77
+ end
78
+
79
+ describe "and parent ExampleGroups have been printed" do
80
+ before do
81
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
82
+ io.string = ""
83
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
84
+ end
85
+
86
+ it "should print only the indented ExampleGroup" do
87
+ io.string.should == <<-OUT
88
+ Child ExampleGroup
89
+ OUT
90
+ end
91
+ end
92
+ end
93
+
94
+ describe "when ExampleGroup has two parents with nested description" do
95
+ attr_reader :child_example_group, :grand_child_example_group
96
+ def example_group_started
97
+ @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
98
+ @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
99
+ end
100
+
101
+ describe "and parent ExampleGroups have not been printed" do
102
+ before do
103
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
104
+ end
105
+
106
+ it "prints the entire nested ExampleGroup heirarchy" do
107
+ io.string.should == <<-OUT
108
+ ExampleGroup
109
+ Child ExampleGroup
110
+ GrandChild ExampleGroup
111
+ OUT
112
+ end
113
+ end
114
+
115
+ describe "and parent ExampleGroups have been printed" do
116
+ before do
117
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
118
+ io.string = ""
119
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
120
+ end
121
+
122
+ it "should print only the indented ExampleGroup" do
123
+ io.string.should == <<-OUT
124
+ GrandChild ExampleGroup
125
+ OUT
126
+ end
127
+ end
128
+ end
129
+ end
130
+
131
+ describe "when ExampleGroup nested description is blank" do
132
+ attr_reader :child_example_group
133
+
134
+ describe "and parent ExampleGroups have not been printed" do
135
+ def example_group_started
136
+ @child_example_group = Class.new(example_group)
137
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
138
+ end
139
+
140
+ it "should render only the parent ExampleGroup" do
141
+ io.string.should == <<-OUT
142
+ ExampleGroup
143
+ OUT
144
+ end
145
+ end
146
+
147
+ describe "and parent ExampleGroups have been printed" do
148
+ def example_group_started
149
+ @child_example_group = Class.new(example_group)
150
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
151
+ io.string = ""
152
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
153
+ end
154
+
155
+ it "should not render anything" do
156
+ io.string.should == ""
157
+ end
158
+ end
159
+ end
160
+
161
+ describe "when ExampleGroup nested description is blank" do
162
+ def example_group_started
163
+ example_group.set_description
164
+ super
165
+ end
166
+
167
+ it "should not render anything" do
168
+ io.string.should == ""
169
+ end
170
+ end
171
+
172
+ describe "with parallel groups" do
173
+ def make_group(name, parent=::Spec::Example::ExampleGroupDouble)
174
+ Class.new(parent).describe(name)
175
+ end
176
+
177
+ it "excludes duplicated group" do
178
+ parent_1 = make_group("ExampleGroup")
179
+ child_1 = make_group("Child ExampleGroup", parent_1)
180
+ grandchild_1 = make_group("GrandChild ExampleGroup", child_1)
181
+
182
+ parent_2 = make_group("ExampleGroup")
183
+ child_2 = make_group("Child ExampleGroup 2", parent_2)
184
+ grandchild_2 = make_group("GrandChild ExampleGroup", child_2)
185
+
186
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grandchild_1))
187
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grandchild_2))
188
+ io.string.should == <<-OUTPUT
189
+ ExampleGroup
190
+ Child ExampleGroup
191
+ GrandChild ExampleGroup
192
+ Child ExampleGroup 2
193
+ GrandChild ExampleGroup
194
+ OUTPUT
195
+ end
196
+ end
197
+ end
198
+
199
+ describe "#example_failed" do
200
+ describe "where ExampleGroup has no superclasss with a description" do
201
+ describe "when having an error" do
202
+ it "should push failing spec name and failure number" do
203
+ formatter.example_failed(
204
+ example_group.it("spec"),
205
+ 98,
206
+ ::Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new)
207
+ )
208
+ io.string.should == <<-OUT
209
+ ExampleGroup
210
+ spec (FAILED - 98)
211
+ OUT
212
+ end
213
+ end
214
+
215
+ describe "when having an expectation failure" do
216
+ it "should push failing spec name and failure number" do
217
+ formatter.example_failed(
218
+ example_group.it("spec"),
219
+ 98,
220
+ ::Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new)
221
+ )
222
+ io.string.should == <<-OUT
223
+ ExampleGroup
224
+ spec (FAILED - 98)
225
+ OUT
226
+ end
227
+ end
228
+ end
229
+
230
+ describe "where ExampleGroup has two superclasses with a description" do
231
+ attr_reader :child_example_group, :grand_child_example_group
232
+
233
+ def example_group_started
234
+ @child_example_group = Class.new(example_group).describe("Child ExampleGroup")
235
+ @grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
236
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(grand_child_example_group))
237
+ end
238
+
239
+ describe "when having an error" do
240
+ it "should push failing spec name and failure number" do
241
+ formatter.example_failed(
242
+ grand_child_example_group.it("spec"),
243
+ 98,
244
+ ::Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new)
245
+ )
246
+ io.string.should == <<-OUT
247
+ ExampleGroup
248
+ Child ExampleGroup
249
+ GrandChild ExampleGroup
250
+ spec (FAILED - 98)
251
+ OUT
252
+ end
253
+ end
254
+
255
+ describe "when having an expectation" do
256
+ it "should push failing spec name and failure number" do
257
+ formatter.example_failed(
258
+ grand_child_example_group.it("spec"),
259
+ 98,
260
+ ::Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new)
261
+ )
262
+ io.string.should == <<-OUT
263
+ ExampleGroup
264
+ Child ExampleGroup
265
+ GrandChild ExampleGroup
266
+ spec (FAILED - 98)
267
+ OUT
268
+ end
269
+ end
270
+ end
271
+ end
272
+
273
+ describe "#start" do
274
+ it "should push nothing on start" do
275
+ formatter.start(5)
276
+ io.string.should == <<-OUT
277
+ ExampleGroup
278
+ OUT
279
+ end
280
+ end
281
+
282
+ describe "#start_dump" do
283
+ it "should push nothing on start dump" do
284
+ formatter.start_dump
285
+ io.string.should == <<-OUT
286
+ ExampleGroup
287
+ OUT
288
+ end
289
+ end
290
+
291
+ describe "#example_passed" do
292
+ it "should push passing spec name" do
293
+ formatter.example_passed(example_group.it("spec"))
294
+ io.string.should == <<-OUT
295
+ ExampleGroup
296
+ spec
297
+ OUT
298
+ end
299
+ end
300
+
301
+ describe "#example_pending" do
302
+ it "should push pending example name and message" do
303
+ formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
304
+ io.string.should == <<-OUT
305
+ ExampleGroup
306
+ example (PENDING: reason)
307
+ OUT
308
+ end
309
+
310
+ it "should dump pending" do
311
+ formatter.example_pending(example_group.examples.first, 'reason', "#{__FILE__}:#{__LINE__}")
312
+ io.rewind
313
+ formatter.dump_pending
314
+ io.string.should =~ /Pending\:\n\nExampleGroup example \(reason\)\n/
315
+ end
316
+ end
317
+
318
+ def have_single_level_example_group_output(expected_output)
319
+ expected = "ExampleGroup\n #{expected_output}"
320
+ ::Spec::Matchers::SimpleMatcher.new(expected) do |actual|
321
+ actual == expected
322
+ end
323
+ end
324
+ end
325
+ end
326
+ end
327
+ end
328
+ end
329
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+ require 'spec/runner/formatter/profile_formatter'
3
+
4
+ module Spec
5
+ module Runner
6
+ module Formatter
7
+ describe ProfileFormatter do
8
+
9
+ treats_method_missing_as_private
10
+
11
+ attr_reader :io, :formatter
12
+ before(:each) do
13
+ @io = StringIO.new
14
+ options = mock('options')
15
+ options.stub!(:colour).and_return(true)
16
+ options.stub!(:autospec).and_return(true)
17
+ @formatter = ProfileFormatter.new(options, io)
18
+ end
19
+
20
+ it "should print a heading" do
21
+ formatter.start(0)
22
+ io.string.should eql("Profiling enabled.\n")
23
+ end
24
+
25
+ it "should record the current time when starting a new example" do
26
+ now = Time.now
27
+ Time.stub!(:now).and_return(now)
28
+ formatter.example_started('should foo')
29
+ formatter.instance_variable_get("@time").should == now
30
+ end
31
+
32
+ it "should correctly record a passed example" do
33
+ now = Time.now
34
+ Time.stub!(:now).and_return(now)
35
+ parent_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe('Parent')
36
+ child_example_group = Class.new(parent_example_group).describe('Child')
37
+
38
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(child_example_group))
39
+
40
+ formatter.example_started('when foo')
41
+ Time.stub!(:now).and_return(now+1)
42
+ formatter.example_passed(stub('foo', :description => 'i like ice cream'))
43
+
44
+ formatter.start_dump
45
+ io.string.should include('Parent Child')
46
+ end
47
+
48
+ it "should sort the results in descending order" do
49
+ formatter.instance_variable_set("@example_times", [['a', 'a', 0.1], ['b', 'b', 0.3], ['c', 'c', 0.2]])
50
+ formatter.start_dump
51
+ formatter.instance_variable_get("@example_times").should == [ ['b', 'b', 0.3], ['c', 'c', 0.2], ['a', 'a', 0.1]]
52
+ end
53
+
54
+ it "should print the top 10 results" do
55
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("ExampleGroup")
56
+ formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
57
+ formatter.instance_variable_set("@time", Time.now)
58
+
59
+ 15.times do
60
+ formatter.example_passed(stub('foo', :description => 'i like ice cream'))
61
+ end
62
+
63
+ io.should_receive(:print).exactly(10)
64
+ formatter.start_dump
65
+ end
66
+
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,12 +1,20 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper.rb'
1
+ require 'spec_helper'
2
+ require 'spec/runner/formatter/progress_bar_formatter'
2
3
 
3
4
  module Spec
4
5
  module Runner
5
6
  module Formatter
6
- describe "ProgressBarFormatter" do
7
+ describe ProgressBarFormatter do
8
+
9
+ treats_method_missing_as_private
10
+
7
11
  before(:each) do
8
12
  @io = StringIO.new
9
- @formatter = ProgressBarFormatter.new(@io)
13
+ @options = mock('options')
14
+ @options.stub!(:dry_run).and_return(false)
15
+ @options.stub!(:colour).and_return(false)
16
+ @options.stub!(:autospec).and_return(false)
17
+ @formatter = ProgressBarFormatter.new(@options, @io)
10
18
  end
11
19
 
12
20
  it "should produce line break on start dump" do
@@ -14,24 +22,58 @@ module Spec
14
22
  @io.string.should eql("\n")
15
23
  end
16
24
 
17
- it "should produce standard summary without not implemented when not implemented has a 0 count" do
25
+ it "should produce standard summary without pending when pending has a 0 count" do
18
26
  @formatter.dump_summary(3, 2, 1, 0)
19
27
  @io.string.should eql("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
20
28
  end
21
29
 
22
30
  it "should produce standard summary" do
23
- @formatter.dump_summary(3, 2, 1, 4)
24
- @io.string.should eql("\nFinished in 3 seconds\n\n2 examples, 1 failure, 4 not implemented\n")
25
- end
31
+ example_group = ExampleGroup.describe("example_group") do
32
+ specify "example" do
33
+ end
34
+ end
35
+ example = example_group.examples.first
36
+ @formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
37
+ @formatter.example_pending(example, "message", "#{__FILE__}:#{__LINE__}")
38
+ @io.rewind
39
+ @formatter.dump_summary(3, 2, 1, 1)
40
+ @io.string.should eql(%Q|
41
+ Finished in 3 seconds
26
42
 
27
- it "should push F for failing spec" do
28
- @formatter.example_failed("spec", 98, Reporter::Failure.new("c s", RuntimeError.new))
29
- @io.string.should eql("F")
43
+ 2 examples, 1 failure, 1 pending
44
+ |)
30
45
  end
31
46
 
32
- it "should push dot for passing spec" do
47
+ it "should push green dot for passing spec" do
48
+ @formatter.stub(:output_to_file?) {false}
49
+ @io.stub(:tty?) {true}
50
+ @options.stub(:colour) {true}
33
51
  @formatter.example_passed("spec")
34
- @io.string.should eql(".")
52
+ @io.string.should == "\e[32m.\e[0m"
53
+ end
54
+
55
+ it "should push red F for failure spec" do
56
+ @formatter.stub(:output_to_file?) {false}
57
+ @io.stub(:tty?) {true}
58
+ @options.stub(:colour) {true}
59
+ @formatter.example_failed("spec", 98, Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Expectations::ExpectationNotMetError.new))
60
+ @io.string.should eql("\e[31mF\e[0m")
61
+ end
62
+
63
+ it "should push red F for error spec" do
64
+ @formatter.stub(:output_to_file?) {false}
65
+ @io.stub(:tty?) {true}
66
+ @options.stub(:colour) {true}
67
+ @formatter.example_failed("spec", 98, Spec::Runner::Reporter::Failure.new("g", "c s", RuntimeError.new))
68
+ @io.string.should eql("\e[31mF\e[0m")
69
+ end
70
+
71
+ it "should push blue F for fixed pending spec" do
72
+ @formatter.stub(:output_to_file?) {false}
73
+ @io.stub(:tty?) {true}
74
+ @options.stub(:colour) {true}
75
+ @formatter.example_failed("spec", 98, Spec::Runner::Reporter::Failure.new("g", "c s", Spec::Example::PendingExampleFixedError.new))
76
+ @io.string.should eql("\e[34mF\e[0m")
35
77
  end
36
78
 
37
79
  it "should push nothing on start" do
@@ -54,18 +96,33 @@ EOE
54
96
  /tmp/x.rb:3:
55
97
  EOE
56
98
  end
99
+
100
+ it "should dump pending with file and line number" do
101
+ example_group = ExampleGroup.describe("example_group") do
102
+ specify "example" do
103
+ end
104
+ end
105
+ example = example_group.examples.first
106
+ file = __FILE__
107
+ line = __LINE__ - 5
108
+ @formatter.example_group_started(Spec::Example::ExampleGroupProxy.new(example_group))
109
+ @formatter.example_pending(example, "message", "#{__FILE__}:#{__LINE__}")
110
+ @formatter.dump_pending
111
+ @io.string.should =~ /Pending:\n\nexample_group example \(message\)\n#{file}:#{line}/m
112
+ end
57
113
  end
58
114
 
59
115
  describe "ProgressBarFormatter outputting to custom out" do
60
116
  before(:each) do
61
117
  @out = mock("out")
118
+ @options = mock('options')
62
119
  @out.stub!(:puts)
63
- @formatter = ProgressBarFormatter.new(@out)
64
- @formatter.class.send :public, :output_to_tty?
120
+ @formatter = ProgressBarFormatter.new(@options, @out)
121
+ @formatter.class.__send__ :public, :output_to_tty?
65
122
  end
66
123
 
67
124
  after(:each) do
68
- @formatter.class.send :protected, :output_to_tty?
125
+ @formatter.class.__send__ :protected, :output_to_tty?
69
126
  end
70
127
 
71
128
  it "should not throw NoMethodError on output_to_tty?" do
@@ -73,6 +130,20 @@ EOE
73
130
  @formatter.output_to_tty?.should be_false
74
131
  end
75
132
  end
133
+
134
+ describe ProgressBarFormatter, "dry run" do
135
+ before(:each) do
136
+ @io = StringIO.new
137
+ options = mock('options')
138
+ options.stub!(:dry_run).and_return(true)
139
+ @formatter = ProgressBarFormatter.new(options, @io)
140
+ end
141
+
142
+ it "should not produce summary on dry run" do
143
+ @formatter.dump_summary(3, 2, 1, 0)
144
+ @io.string.should eql("")
145
+ end
146
+ end
76
147
  end
77
148
  end
78
- end
149
+ end
@@ -1,11 +1,18 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper.rb'
1
+ require 'spec_helper'
2
+ require 'spec/runner/formatter/snippet_extractor'
2
3
 
3
- describe Spec::Runner::Formatter::SnippetExtractor do
4
- it "should fall back on a default message when it doesn't understand a line" do
5
- Spec::Runner::Formatter::SnippetExtractor.new.snippet_for("blech").should == ["# Couldn't get snippet for blech", 1]
6
- end
4
+ module Spec
5
+ module Runner
6
+ module Formatter
7
+ describe SnippetExtractor do
8
+ it "should fall back on a default message when it doesn't understand a line" do
9
+ SnippetExtractor.new.snippet_for("blech").should == ["# Couldn't get snippet for blech", 1]
10
+ end
7
11
 
8
- it "should fall back on a default message when it doesn't find the file" do
9
- Spec::Runner::Formatter::SnippetExtractor.new.lines_around("blech", 8).should == "# Couldn't get snippet for blech"
12
+ it "should fall back on a default message when it doesn't find the file" do
13
+ SnippetExtractor.new.lines_around("blech", 8).should == "# Couldn't get snippet for blech"
14
+ end
15
+ end
16
+ end
10
17
  end
11
18
  end