rspec 1.0.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. data/.document +7 -0
  2. data/History.rdoc +1546 -0
  3. data/{MIT-LICENSE → License.txt} +3 -1
  4. data/Manifest.txt +384 -0
  5. data/README.rdoc +41 -0
  6. data/Rakefile +94 -229
  7. data/Ruby1.9.rdoc +31 -0
  8. data/TODO.txt +17 -0
  9. data/Upgrade.rdoc +260 -0
  10. data/bin/autospec +4 -0
  11. data/bin/spec +5 -3
  12. data/cucumber.yml +5 -0
  13. data/examples/failing/README.txt +11 -0
  14. data/examples/failing/diffing_spec.rb +36 -0
  15. data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  16. data/examples/failing/failure_in_after.rb +10 -0
  17. data/examples/failing/failure_in_before.rb +10 -0
  18. data/examples/failing/mocking_example.rb +38 -0
  19. data/examples/failing/mocking_with_flexmock.rb +26 -0
  20. data/examples/failing/mocking_with_mocha.rb +25 -0
  21. data/examples/failing/mocking_with_rr.rb +27 -0
  22. data/examples/failing/partial_mock_example.rb +18 -0
  23. data/examples/failing/pending_example.rb +7 -0
  24. data/examples/failing/predicate_example.rb +32 -0
  25. data/examples/failing/raising_example.rb +47 -0
  26. data/examples/failing/syntax_error_example.rb +7 -0
  27. data/examples/failing/team_spec.rb +41 -0
  28. data/examples/failing/timeout_behaviour.rb +5 -0
  29. data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
  30. data/examples/passing/dynamic_spec.rb +7 -0
  31. data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
  32. data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
  33. data/examples/passing/filtered_formatter.rb +17 -0
  34. data/examples/passing/filtered_formatter_example.rb +31 -0
  35. data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
  36. data/examples/passing/helper_method_example.rb +12 -0
  37. data/examples/passing/implicit_docstrings_example.rb +16 -0
  38. data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
  39. data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
  40. data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
  41. data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
  42. data/examples/passing/nested_classes_example.rb +35 -0
  43. data/examples/passing/options_example.rb +29 -0
  44. data/examples/passing/options_formatter.rb +20 -0
  45. data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
  46. data/examples/passing/pending_example.rb +18 -0
  47. data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
  48. data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
  49. data/examples/passing/shared_stack_examples.rb +36 -0
  50. data/examples/passing/simple_matcher_example.rb +29 -0
  51. data/examples/{stack.rb → passing/stack.rb} +1 -1
  52. data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
  53. data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  54. data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
  55. data/examples/passing/yielding_example.rb +31 -0
  56. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  57. data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  58. data/features/command_line/line_number_option.feature +56 -0
  59. data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  60. data/features/example_groups/define_example_attribute.feature +41 -0
  61. data/features/example_groups/example_group_with_should_methods.feature +29 -0
  62. data/features/example_groups/implicit_docstrings.feature +59 -0
  63. data/features/example_groups/nested_groups.feature +32 -0
  64. data/features/expectations/customized_message.feature +54 -0
  65. data/features/expectations/expect_change.feature +65 -0
  66. data/features/expectations/expect_error.feature +44 -0
  67. data/features/extensions/custom_example_group.feature +19 -0
  68. data/features/formatters/custom_formatter.feature +30 -0
  69. data/features/formatters/nested_formatter.feature +32 -0
  70. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  71. data/features/interop/examples_and_tests_together.feature +84 -0
  72. data/features/interop/rspec_output.feature +25 -0
  73. data/features/interop/test_but_not_test_unit.feature +26 -0
  74. data/features/interop/test_case_with_should_methods.feature +46 -0
  75. data/features/load_paths/add_lib_to_load_path.feature +20 -0
  76. data/features/load_paths/add_spec_to_load_path.feature +20 -0
  77. data/features/matchers/define_diffable_matcher.feature +26 -0
  78. data/features/matchers/define_matcher.feature +179 -0
  79. data/features/matchers/define_matcher_outside_rspec.feature +38 -0
  80. data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
  81. data/features/matchers/define_wrapped_matcher.feature +56 -0
  82. data/features/matchers/match_unless_raises.feature +60 -0
  83. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  84. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  85. data/features/mock_framework_integration/use_mocha.feature +27 -0
  86. data/features/mock_framework_integration/use_rr.feature +27 -0
  87. data/features/mocks/block_local_expectations.feature +62 -0
  88. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  89. data/features/mocks/stub_implementation.feature +26 -0
  90. data/features/pending/pending_examples.feature +81 -0
  91. data/features/runner/specify_line_number.feature +32 -0
  92. data/features/spec_helper/spec_helper.feature +25 -0
  93. data/features/step_definitions/running_rspec_steps.rb +52 -0
  94. data/features/step_definitions/stubbing_steps.rb +16 -0
  95. data/features/subject/explicit_subject.feature +31 -0
  96. data/features/subject/implicit_subject.feature +43 -0
  97. data/features/support/env.rb +83 -0
  98. data/features/support/matchers/smart_match.rb +31 -0
  99. data/geminstaller.yml +29 -0
  100. data/init.rb +9 -0
  101. data/lib/autotest/discover.rb +3 -0
  102. data/lib/autotest/rspec.rb +54 -0
  103. data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  104. data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
  105. data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  106. data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  107. data/lib/spec/autorun.rb +3 -0
  108. data/lib/spec/deprecation.rb +41 -0
  109. data/lib/spec/dsl/main.rb +93 -0
  110. data/lib/spec/dsl.rb +1 -10
  111. data/lib/spec/example/args_and_options.rb +27 -0
  112. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  113. data/lib/spec/example/errors.rb +25 -0
  114. data/lib/spec/example/example_group.rb +10 -0
  115. data/lib/spec/example/example_group_factory.rb +82 -0
  116. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  117. data/lib/spec/example/example_group_methods.rb +287 -0
  118. data/lib/spec/example/example_group_proxy.rb +61 -0
  119. data/lib/spec/example/example_matcher.rb +43 -0
  120. data/lib/spec/example/example_methods.rb +152 -0
  121. data/lib/spec/example/example_proxy.rb +41 -0
  122. data/lib/spec/example/module_reopening_fix.rb +43 -0
  123. data/lib/spec/example/pending.rb +18 -0
  124. data/lib/spec/example/predicate_matchers.rb +46 -0
  125. data/lib/spec/example/shared_example_group.rb +59 -0
  126. data/lib/spec/example/subject.rb +114 -0
  127. data/lib/spec/example.rb +164 -0
  128. data/lib/spec/expectations/errors.rb +7 -1
  129. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  130. data/lib/spec/expectations/extensions.rb +1 -2
  131. data/lib/spec/expectations/fail_with.rb +45 -0
  132. data/lib/spec/expectations/handler.rb +37 -30
  133. data/lib/spec/expectations.rb +2 -23
  134. data/lib/spec/extensions/instance_exec.rb +31 -0
  135. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  136. data/lib/spec/interop/test/unit/testcase.rb +56 -0
  137. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  138. data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
  139. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  140. data/lib/spec/interop/test.rb +44 -0
  141. data/lib/spec/matchers/be.rb +183 -140
  142. data/lib/spec/matchers/be_close.rb +18 -23
  143. data/lib/spec/matchers/be_instance_of.rb +26 -0
  144. data/lib/spec/matchers/be_kind_of.rb +26 -0
  145. data/lib/spec/matchers/change.rb +72 -41
  146. data/lib/spec/matchers/compatibility.rb +14 -0
  147. data/lib/spec/matchers/dsl.rb +20 -0
  148. data/lib/spec/matchers/eql.rb +25 -26
  149. data/lib/spec/matchers/equal.rb +35 -25
  150. data/lib/spec/matchers/errors.rb +5 -0
  151. data/lib/spec/matchers/exist.rb +16 -0
  152. data/lib/spec/matchers/generated_descriptions.rb +36 -0
  153. data/lib/spec/matchers/has.rb +17 -26
  154. data/lib/spec/matchers/have.rb +36 -24
  155. data/lib/spec/matchers/include.rb +22 -48
  156. data/lib/spec/matchers/match.rb +11 -31
  157. data/lib/spec/matchers/match_array.rb +71 -0
  158. data/lib/spec/matchers/matcher.rb +132 -0
  159. data/lib/spec/matchers/method_missing.rb +9 -0
  160. data/lib/spec/matchers/operator_matcher.rb +55 -44
  161. data/lib/spec/matchers/pretty.rb +37 -0
  162. data/lib/spec/matchers/raise_exception.rb +131 -0
  163. data/lib/spec/matchers/respond_to.rb +35 -9
  164. data/lib/spec/matchers/satisfy.rb +2 -2
  165. data/lib/spec/matchers/simple_matcher.rb +134 -0
  166. data/lib/spec/matchers/throw_symbol.rb +56 -31
  167. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  168. data/lib/spec/matchers.rb +104 -48
  169. data/lib/spec/mocks/argument_expectation.rb +28 -112
  170. data/lib/spec/mocks/argument_matchers.rb +237 -0
  171. data/lib/spec/mocks/error_generator.rb +20 -13
  172. data/lib/spec/mocks/errors.rb +1 -1
  173. data/lib/spec/mocks/example_methods.rb +69 -0
  174. data/lib/spec/mocks/extensions.rb +1 -0
  175. data/lib/spec/mocks/framework.rb +15 -0
  176. data/lib/spec/mocks/message_expectation.rb +206 -93
  177. data/lib/spec/mocks/methods.rb +66 -7
  178. data/lib/spec/mocks/mock.rb +53 -11
  179. data/lib/spec/mocks/proxy.rb +160 -55
  180. data/lib/spec/mocks/space.rb +2 -2
  181. data/lib/spec/mocks.rb +14 -23
  182. data/lib/spec/rake/spectask.rb +108 -53
  183. data/lib/spec/rake/verify_rcov.rb +4 -4
  184. data/lib/spec/ruby.rb +9 -0
  185. data/lib/spec/runner/backtrace_tweaker.rb +45 -23
  186. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  187. data/lib/spec/runner/command_line.rb +7 -14
  188. data/lib/spec/runner/configuration.rb +202 -0
  189. data/lib/spec/runner/differs/default.rb +93 -0
  190. data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  191. data/lib/spec/runner/drb_command_line.rb +18 -7
  192. data/lib/spec/runner/example_group_runner.rb +58 -0
  193. data/lib/spec/runner/extensions/kernel.rb +5 -46
  194. data/lib/spec/runner/formatter/base_formatter.rb +97 -26
  195. data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
  196. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  197. data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
  198. data/lib/spec/runner/formatter/html_formatter.rb +101 -75
  199. data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
  200. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  201. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  202. data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
  203. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  204. data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
  205. data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
  206. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  207. data/lib/spec/runner/heckle_runner.rb +56 -56
  208. data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
  209. data/lib/spec/runner/line_number_query.rb +78 -0
  210. data/lib/spec/runner/option_parser.rb +147 -148
  211. data/lib/spec/runner/options.rb +343 -95
  212. data/lib/spec/runner/reporter.rb +117 -60
  213. data/lib/spec/runner.rb +39 -138
  214. data/lib/spec/stubs/cucumber.rb +5 -0
  215. data/lib/spec/test/unit.rb +10 -0
  216. data/lib/spec/version.rb +14 -22
  217. data/lib/spec.rb +5 -10
  218. data/resources/helpers/cmdline.rb +8 -0
  219. data/resources/rake/examples.rake +7 -0
  220. data/resources/rake/examples_with_rcov.rake +9 -0
  221. data/resources/rake/failing_examples_with_html.rake +9 -0
  222. data/resources/rake/verify_rcov.rake +7 -0
  223. data/spec/README.jruby +15 -0
  224. data/spec/autotest/autotest_helper.rb +8 -0
  225. data/spec/autotest/autotest_matchers.rb +38 -0
  226. data/spec/autotest/discover_spec.rb +8 -0
  227. data/spec/autotest/failed_results_re_spec.rb +31 -0
  228. data/spec/autotest/rspec_spec.rb +126 -0
  229. data/spec/ruby_forker.rb +13 -0
  230. data/spec/spec/dsl/main_spec.rb +103 -0
  231. data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  232. data/spec/spec/example/example_group_factory_spec.rb +180 -0
  233. data/spec/spec/example/example_group_methods_spec.rb +778 -0
  234. data/spec/spec/example/example_group_proxy_spec.rb +107 -0
  235. data/spec/spec/example/example_group_spec.rb +632 -0
  236. data/spec/spec/example/example_matcher_spec.rb +85 -0
  237. data/spec/spec/example/example_methods_spec.rb +162 -0
  238. data/spec/spec/example/example_proxy_spec.rb +57 -0
  239. data/spec/spec/example/helper_method_spec.rb +24 -0
  240. data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
  241. data/spec/spec/example/pending_module_spec.rb +58 -0
  242. data/spec/spec/example/predicate_matcher_spec.rb +41 -0
  243. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  244. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  245. data/spec/spec/example/subject_spec.rb +110 -0
  246. data/spec/spec/expectations/differs/default_spec.rb +100 -13
  247. data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
  248. data/spec/spec/expectations/fail_with_spec.rb +42 -17
  249. data/spec/spec/expectations/handler_spec.rb +206 -0
  250. data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
  251. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  252. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  253. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  254. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  255. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  256. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  257. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  258. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  259. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  260. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  261. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  262. data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  263. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  264. data/spec/spec/matchers/be_close_spec.rb +32 -21
  265. data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  266. data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  267. data/spec/spec/matchers/be_spec.rb +261 -10
  268. data/spec/spec/matchers/change_spec.rb +178 -61
  269. data/spec/spec/matchers/compatibility_spec.rb +28 -0
  270. data/spec/spec/matchers/description_generation_spec.rb +47 -46
  271. data/spec/spec/matchers/dsl_spec.rb +34 -0
  272. data/spec/spec/matchers/eql_spec.rb +14 -9
  273. data/spec/spec/matchers/equal_spec.rb +43 -14
  274. data/spec/spec/matchers/exist_spec.rb +41 -24
  275. data/spec/spec/matchers/has_spec.rb +154 -1
  276. data/spec/spec/matchers/have_spec.rb +311 -189
  277. data/spec/spec/matchers/include_spec.rb +45 -2
  278. data/spec/spec/matchers/match_array_spec.rb +115 -0
  279. data/spec/spec/matchers/match_spec.rb +25 -5
  280. data/spec/spec/matchers/matcher_spec.rb +289 -0
  281. data/spec/spec/matchers/matchers_spec.rb +2 -0
  282. data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
  283. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  284. data/spec/spec/matchers/respond_to_spec.rb +78 -16
  285. data/spec/spec/matchers/satisfy_spec.rb +1 -1
  286. data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
  287. data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
  288. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  289. data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
  290. data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
  291. data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  292. data/spec/spec/mocks/at_least_spec.rb +2 -2
  293. data/spec/spec/mocks/at_most_spec.rb +3 -3
  294. data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
  295. data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  296. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  297. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  298. data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
  299. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  300. data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
  301. data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
  302. data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
  303. data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
  304. data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  305. data/spec/spec/mocks/double_spec.rb +12 -0
  306. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  307. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  308. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  309. data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
  310. data/spec/spec/mocks/mock_space_spec.rb +1 -1
  311. data/spec/spec/mocks/mock_spec.rb +346 -129
  312. data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
  313. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  314. data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
  315. data/spec/spec/mocks/once_counts_spec.rb +2 -2
  316. data/spec/spec/mocks/options_hash_spec.rb +19 -17
  317. data/spec/spec/mocks/partial_mock_spec.rb +124 -12
  318. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
  319. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  320. data/spec/spec/mocks/precise_counts_spec.rb +2 -2
  321. data/spec/spec/mocks/record_messages_spec.rb +2 -2
  322. data/spec/spec/mocks/stub_chain_spec.rb +42 -0
  323. data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  324. data/spec/spec/mocks/stub_spec.rb +147 -103
  325. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  326. data/spec/spec/mocks/twice_counts_spec.rb +2 -2
  327. data/spec/spec/mocks/unstub_spec.rb +127 -0
  328. data/spec/spec/package/bin_spec_spec.rb +11 -7
  329. data/spec/spec/rake/spectask_spec.rb +150 -0
  330. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  331. data/spec/spec/runner/command_line_spec.rb +158 -29
  332. data/spec/spec/runner/configuration_spec.rb +320 -0
  333. data/spec/spec/runner/drb_command_line_spec.rb +137 -72
  334. data/spec/spec/runner/empty_file.txt +0 -0
  335. data/spec/spec/runner/example_group_runner_spec.rb +26 -0
  336. data/spec/spec/runner/examples.txt +2 -0
  337. data/spec/spec/runner/failed.txt +3 -0
  338. data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  339. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  340. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  341. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
  342. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  343. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  344. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  345. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  346. data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
  347. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
  348. data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  349. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
  350. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
  351. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
  352. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  353. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  354. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  355. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  356. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  357. data/spec/spec/runner/heckle_runner_spec.rb +32 -17
  358. data/spec/spec/runner/heckler_spec.rb +17 -11
  359. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  360. data/spec/spec/runner/line_number_query_spec.rb +129 -0
  361. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
  362. data/spec/spec/runner/option_parser_spec.rb +367 -164
  363. data/spec/spec/runner/options_spec.rb +506 -94
  364. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  365. data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  366. data/spec/spec/runner/output_one_time_spec.rb +15 -0
  367. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
  368. data/spec/spec/runner/reporter_spec.rb +212 -121
  369. data/spec/spec/runner/resources/a_bar.rb +0 -0
  370. data/spec/spec/runner/resources/a_foo.rb +0 -0
  371. data/spec/spec/runner/resources/a_spec.rb +1 -0
  372. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  373. data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  374. data/spec/spec/runner/spec.opts +2 -0
  375. data/spec/spec/runner/spec_drb.opts +2 -0
  376. data/spec/spec/runner/spec_spaced.opts +2 -0
  377. data/spec/spec/runner_spec.rb +13 -0
  378. data/spec/spec.opts +6 -0
  379. data/spec/spec_helper.rb +87 -45
  380. data/spec/support/macros.rb +29 -0
  381. data/spec/{spec → support}/spec_classes.rb +26 -4
  382. metadata +461 -141
  383. data/CHANGES +0 -748
  384. data/EXAMPLES.rd +0 -108
  385. data/README +0 -70
  386. data/UPGRADE +0 -31
  387. data/bin/spec_translator +0 -8
  388. data/examples/auto_spec_description_example.rb +0 -19
  389. data/examples/before_and_after_example.rb +0 -39
  390. data/examples/behave_as_example.rb +0 -45
  391. data/examples/dynamic_spec.rb +0 -9
  392. data/examples/helper_method_example.rb +0 -11
  393. data/examples/legacy_spec.rb +0 -10
  394. data/examples/not_yet_implemented_spec.rb +0 -12
  395. data/examples/priority.txt +0 -1
  396. data/examples/spec_helper.rb +0 -1
  397. data/examples/test_case_adapter_example.rb +0 -26
  398. data/examples/test_case_spec.rb +0 -65
  399. data/lib/spec/dsl/behaviour.rb +0 -204
  400. data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
  401. data/lib/spec/dsl/behaviour_eval.rb +0 -177
  402. data/lib/spec/dsl/behaviour_factory.rb +0 -42
  403. data/lib/spec/dsl/composite_proc_builder.rb +0 -28
  404. data/lib/spec/dsl/configuration.rb +0 -119
  405. data/lib/spec/dsl/description.rb +0 -46
  406. data/lib/spec/dsl/example.rb +0 -127
  407. data/lib/spec/dsl/example_matcher.rb +0 -28
  408. data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
  409. data/lib/spec/expectations/differs/default.rb +0 -61
  410. data/lib/spec/expectations/extensions/object.rb +0 -66
  411. data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  412. data/lib/spec/extensions/object.rb +0 -6
  413. data/lib/spec/extensions.rb +0 -1
  414. data/lib/spec/matchers/raise_error.rb +0 -100
  415. data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
  416. data/lib/spec/mocks/spec_methods.rb +0 -30
  417. data/lib/spec/runner/behaviour_runner.rb +0 -102
  418. data/lib/spec/runner/extensions/object.rb +0 -32
  419. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
  420. data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
  421. data/lib/spec/runner/formatter.rb +0 -9
  422. data/lib/spec/runner/spec_parser.rb +0 -50
  423. data/lib/spec/test_case_adapter.rb +0 -10
  424. data/lib/spec/translator.rb +0 -106
  425. data/plugins/mock_frameworks/flexmock.rb +0 -27
  426. data/plugins/mock_frameworks/rspec.rb +0 -18
  427. data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
  428. data/spec/spec/dsl/behaviour_spec.rb +0 -604
  429. data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
  430. data/spec/spec/dsl/configuration_spec.rb +0 -50
  431. data/spec/spec/dsl/description_spec.rb +0 -81
  432. data/spec/spec/dsl/example_class_spec.rb +0 -24
  433. data/spec/spec/dsl/example_instance_spec.rb +0 -162
  434. data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
  435. data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
  436. data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
  437. data/spec/spec/matchers/handler_spec.rb +0 -88
  438. data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
  439. data/spec/spec/matchers/raise_error_spec.rb +0 -147
  440. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
  441. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
  442. data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
  443. data/spec/spec/runner/context_matching_spec.rb +0 -27
  444. data/spec/spec/runner/execution_context_spec.rb +0 -31
  445. data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
  446. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
  447. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
  448. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
  449. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
  450. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
  451. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
  452. data/spec/spec/runner/object_ext_spec.rb +0 -11
  453. data/spec/spec/runner/spec_matcher_spec.rb +0 -102
  454. data/spec/spec/runner/spec_parser_spec.rb +0 -93
  455. data/spec/spec/translator_spec.rb +0 -216
  456. /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
@@ -1,22 +1,29 @@
1
+ require 'erb'
2
+ require 'spec/runner/formatter/base_text_formatter'
3
+ require 'spec/runner/formatter/no_op_method_missing'
4
+
1
5
  module Spec
2
6
  module Runner
3
7
  module Formatter
4
8
  class HtmlFormatter < BaseTextFormatter
9
+ include ERB::Util # for the #h method
10
+ include NOOPMethodMissing
5
11
 
6
- def initialize(output)
12
+ def initialize(options, output)
7
13
  super
8
- @current_behaviour_number = 0
9
- @current_example_number = 0
14
+ @example_group_number = 0
15
+ @example_number = 0
16
+ @header_red = nil
10
17
  end
11
-
12
- # The number of the currently running behaviour
13
- def current_behaviour_number
14
- @current_behaviour_number
18
+
19
+ # The number of the currently running example_group
20
+ def example_group_number
21
+ @example_group_number
15
22
  end
16
23
 
17
- # The number of the currently running example
18
- def current_example_number
19
- @current_example_number
24
+ # The number of the currently running example (a global counter)
25
+ def example_number
26
+ @example_number
20
27
  end
21
28
 
22
29
  def start(example_count)
@@ -27,15 +34,17 @@ module Spec
27
34
  @output.flush
28
35
  end
29
36
 
30
- def add_behaviour(name)
31
- @current_behaviour_number += 1
32
- unless current_behaviour_number == 1
37
+ def example_group_started(example_group)
38
+ super
39
+ @example_group_red = false
40
+ @example_group_number += 1
41
+ unless example_group_number == 1
33
42
  @output.puts " </dl>"
34
43
  @output.puts "</div>"
35
44
  end
36
- @output.puts "<div class=\"behaviour\">"
45
+ @output.puts "<div class=\"example_group\">"
37
46
  @output.puts " <dl>"
38
- @output.puts " <dt id=\"behaviour_#{current_behaviour_number}\">#{escape(name)}</dt>"
47
+ @output.puts " <dt id=\"example_group_#{example_group_number}\">#{h(example_group.description)}</dt>"
39
48
  @output.flush
40
49
  end
41
50
 
@@ -45,24 +54,28 @@ module Spec
45
54
  @output.flush
46
55
  end
47
56
 
48
- def example_passed(name)
49
- @current_example_number += 1
57
+ def example_started(example)
58
+ @example_number += 1
59
+ end
60
+
61
+ def example_passed(example)
50
62
  move_progress
51
- @output.puts " <dd class=\"spec passed\"><span class=\"passed_spec_name\">#{escape(name)}</span></dd>"
63
+ @output.puts " <dd class=\"spec passed\"><span class=\"passed_spec_name\">#{h(example.description)}</span></dd>"
52
64
  @output.flush
53
65
  end
54
66
 
55
- def example_failed(name, counter, failure)
67
+ def example_failed(example, counter, failure)
56
68
  extra = extra_failure_content(failure)
57
-
58
- @current_example_number += 1
59
- @output.puts " <script type=\"text/javascript\">makeRed('rspec-header');</script>"
60
- @output.puts " <script type=\"text/javascript\">makeRed('behaviour_#{current_behaviour_number}');</script>"
69
+ failure_style = failure.pending_fixed? ? 'pending_fixed' : 'failed'
70
+ @output.puts " <script type=\"text/javascript\">makeRed('rspec-header');</script>" unless @header_red
71
+ @header_red = true
72
+ @output.puts " <script type=\"text/javascript\">makeRed('example_group_#{example_group_number}');</script>" unless @example_group_red
73
+ @example_group_red = true
61
74
  move_progress
62
- @output.puts " <dd class=\"spec failed\">"
63
- @output.puts " <span class=\"failed_spec_name\">#{escape(name)}</span>"
75
+ @output.puts " <dd class=\"spec #{failure_style}\">"
76
+ @output.puts " <span class=\"failed_spec_name\">#{h(example.description)}</span>"
64
77
  @output.puts " <div class=\"failure\" id=\"failure_#{counter}\">"
65
- @output.puts " <div class=\"message\"><pre>#{escape(failure.exception.message)}</pre></div>" unless failure.exception.nil?
78
+ @output.puts " <div class=\"message\"><pre>#{h(failure.exception.message)}</pre></div>" unless failure.exception.nil?
66
79
  @output.puts " <div class=\"backtrace\"><pre>#{format_backtrace(failure.exception.backtrace)}</pre></div>" unless failure.exception.nil?
67
80
  @output.puts extra unless extra == ""
68
81
  @output.puts " </div>"
@@ -70,40 +83,45 @@ module Spec
70
83
  @output.flush
71
84
  end
72
85
 
73
- def example_not_implemented(name)
74
- @current_example_number += 1
75
- @output.puts " <script type=\"text/javascript\">makeYellow('rspec-header');</script>"
76
- @output.puts " <script type=\"text/javascript\">makeYellow('behaviour_#{current_behaviour_number}');</script>"
86
+ def example_pending(example, message, deprecated_pending_location=nil)
87
+ @output.puts " <script type=\"text/javascript\">makeYellow('rspec-header');</script>" unless @header_red
88
+ @output.puts " <script type=\"text/javascript\">makeYellow('example_group_#{example_group_number}');</script>" unless @example_group_red
77
89
  move_progress
78
- @output.puts " <dd class=\"spec not_implemented\"><span class=\"not_implemented_spec_name\">#{escape(name)}</span></dd>"
90
+ @output.puts " <dd class=\"spec not_implemented\"><span class=\"not_implemented_spec_name\">#{h(example.description)} (PENDING: #{h(message)})</span></dd>"
79
91
  @output.flush
80
92
  end
93
+
81
94
  # Override this method if you wish to output extra HTML for a failed spec. For example, you
82
95
  # could output links to images or other files produced during the specs.
83
96
  #
84
97
  def extra_failure_content(failure)
98
+ require 'spec/runner/formatter/snippet_extractor'
99
+ @snippet_extractor ||= SnippetExtractor.new
85
100
  " <pre class=\"ruby\"><code>#{@snippet_extractor.snippet(failure.exception)}</code></pre>"
86
101
  end
87
102
 
88
103
  def move_progress
89
- percent_done = @example_count == 0 ? 100.0 : (current_example_number.to_f / @example_count.to_f * 1000).to_i / 10.0
90
104
  @output.puts " <script type=\"text/javascript\">moveProgressBar('#{percent_done}');</script>"
91
105
  @output.flush
92
106
  end
93
-
94
- def escape(string)
95
- string.gsub(/&/n, '&amp;').gsub(/\"/n, '&quot;').gsub(/>/n, '&gt;').gsub(/</n, '&lt;')
107
+
108
+ def percent_done
109
+ result = 100.0
110
+ if @example_count != 0
111
+ result = ((example_number).to_f / @example_count.to_f * 1000).to_i / 10.0
112
+ end
113
+ result
96
114
  end
97
115
 
98
116
  def dump_failure(counter, failure)
99
117
  end
100
118
 
101
- def dump_summary(duration, example_count, failure_count, not_implemented_count)
102
- if @dry_run
119
+ def dump_summary(duration, example_count, failure_count, pending_count)
120
+ if dry_run?
103
121
  totals = "This was a dry-run"
104
122
  else
105
123
  totals = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
106
- totals << ", #{not_implemented_count} not implemented" if not_implemented_count > 0
124
+ totals << ", #{pending_count} pending" if pending_count > 0
107
125
  end
108
126
  @output.puts "<script type=\"text/javascript\">document.getElementById('duration').innerHTML = \"Finished in <strong>#{duration} seconds</strong>\";</script>"
109
127
  @output.puts "<script type=\"text/javascript\">document.getElementById('totals').innerHTML = \"#{totals}\";</script>"
@@ -116,33 +134,24 @@ module Spec
116
134
 
117
135
  def html_header
118
136
  <<-EOF
119
- <?xml version="1.0" encoding="iso-8859-1"?>
120
- <!DOCTYPE html
121
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
122
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
123
-
137
+ <?xml version="1.0" encoding="UTF-8"?>
138
+ <!DOCTYPE html
139
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
140
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
124
141
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
125
142
  <head>
126
143
  <title>RSpec results</title>
127
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
144
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
128
145
  <meta http-equiv="Expires" content="-1" />
129
146
  <meta http-equiv="Pragma" content="no-cache" />
130
147
  <style type="text/css">
131
148
  body {
132
- margin: 0;
149
+ margin: 0;
133
150
  padding: 0;
134
151
  background: #fff;
135
152
  font-size: 80%;
136
153
  }
137
154
  </style>
138
- </head>
139
- <body>
140
- EOF
141
- end
142
-
143
- def report_header
144
- <<-EOF
145
- <div class="rspec-report">
146
155
  <script type="text/javascript">
147
156
  // <![CDATA[
148
157
  #{global_scripts}
@@ -151,13 +160,23 @@ EOF
151
160
  <style type="text/css">
152
161
  #{global_styles}
153
162
  </style>
163
+ </head>
164
+ <body>
165
+ EOF
166
+ end
167
+
168
+ def report_header
169
+ <<-EOF
170
+ <div class="rspec-report">
154
171
 
155
172
  <div id="rspec-header">
156
- <h1>RSpec Results</h1>
173
+ <div id="label">
174
+ <h1>RSpec Code Examples</h1>
175
+ </div>
157
176
 
158
177
  <div id="summary">
159
- <p id="duration">&nbsp;</p>
160
178
  <p id="totals">&nbsp;</p>
179
+ <p id="duration">&nbsp;</p>
161
180
  </div>
162
181
  </div>
163
182
 
@@ -172,28 +191,28 @@ function moveProgressBar(percentDone) {
172
191
  }
173
192
  function makeRed(element_id) {
174
193
  document.getElementById(element_id).style.background = '#C40D0D';
175
- document.getElementById(element_id).style.color = '#FFFFFF';
194
+ document.getElementById(element_id).style.color = '#FFFFFF';
195
+ }
196
+
197
+ function makeYellow(element_id) {
198
+ if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
199
+ {
200
+ document.getElementById(element_id).style.background = '#FAF834';
201
+ document.getElementById(element_id).style.color = '#000000';
176
202
  }
177
-
178
- function makeYellow(element_id) {
179
- if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
180
- {
181
- document.getElementById(element_id).style.background = '#FAF834';
182
- document.getElementById(element_id).style.color = '#000000';
183
- }
184
- else
185
- {
186
- document.getElementById(element_id).style.background = '#FAF834';
187
- document.getElementById(element_id).style.color = '#000000';
188
- }
203
+ else
204
+ {
205
+ document.getElementById(element_id).style.background = '#FAF834';
206
+ document.getElementById(element_id).style.color = '#000000';
189
207
  }
208
+ }
190
209
  EOF
191
210
  end
192
211
 
193
212
  def global_styles
194
213
  <<-EOF
195
214
  #rspec-header {
196
- background: #65C400; color: #fff;
215
+ background: #65C400; color: #fff; height: 4em;
197
216
  }
198
217
 
199
218
  .rspec-report h1 {
@@ -201,15 +220,16 @@ EOF
201
220
  padding: 10px;
202
221
  font-family: "Lucida Grande", Helvetica, sans-serif;
203
222
  font-size: 1.8em;
223
+ position: absolute;
204
224
  }
205
225
 
206
226
  #summary {
207
227
  margin: 0; padding: 5px 10px;
208
228
  font-family: "Lucida Grande", Helvetica, sans-serif;
209
229
  text-align: right;
210
- position: absolute;
211
230
  top: 0px;
212
231
  right: 0px;
232
+ float:right;
213
233
  }
214
234
 
215
235
  #summary p {
@@ -220,7 +240,7 @@ EOF
220
240
  font-size: 1.2em;
221
241
  }
222
242
 
223
- .behaviour {
243
+ .example_group {
224
244
  margin: 0 10px 5px;
225
245
  background: #fff;
226
246
  }
@@ -260,6 +280,12 @@ dd.spec.not_implemented {
260
280
  background: #FCFB98; color: #131313;
261
281
  }
262
282
 
283
+ dd.spec.pending_fixed {
284
+ border-left: 5px solid #0000C2;
285
+ border-bottom: 1px solid #0000C2;
286
+ color: #0000C2; background: #D3FBFF;
287
+ }
288
+
263
289
  .backtrace {
264
290
  color: #000;
265
291
  font-size: 12px;
@@ -299,10 +325,10 @@ a {
299
325
 
300
326
  .ruby .offending { background-color: gray; }
301
327
  .ruby .linenum {
302
- width: 75px;
303
- padding: 0.1em 1em 0.2em 0;
304
- color: #000000;
305
- background-color: #FFFBD3;
328
+ width: 75px;
329
+ padding: 0.1em 1em 0.2em 0;
330
+ color: #000000;
331
+ background-color: #FFFBD3;
306
332
  }
307
333
  EOF
308
334
  end
@@ -0,0 +1,50 @@
1
+ require 'spec/runner/formatter/base_text_formatter'
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ class NestedTextFormatter < BaseTextFormatter
7
+
8
+ INDENT = ' '
9
+
10
+ def initialize(options, where)
11
+ super
12
+ @last_nested_descriptions = []
13
+ end
14
+
15
+ def example_group_started(example_group)
16
+ super
17
+
18
+ example_group.nested_descriptions.each_with_index do |nested_description, i|
19
+ unless example_group.nested_descriptions[0..i] == @last_nested_descriptions[0..i]
20
+ output.puts "#{INDENT*i}#{nested_description}"
21
+ end
22
+ end
23
+
24
+ @last_nested_descriptions = example_group.nested_descriptions
25
+ end
26
+
27
+ def example_failed(example, counter, failure)
28
+ output.puts(red("#{current_indentation}#{example.description} (FAILED - #{counter})"))
29
+ output.flush
30
+ end
31
+
32
+ def example_passed(example)
33
+ message = "#{current_indentation}#{example.description}"
34
+ output.puts green(message)
35
+ output.flush
36
+ end
37
+
38
+ def example_pending(example, message, deprecated_pending_location=nil)
39
+ super
40
+ output.puts yellow("#{current_indentation}#{example.description} (PENDING: #{message})")
41
+ output.flush
42
+ end
43
+
44
+ def current_indentation
45
+ INDENT*@last_nested_descriptions.length
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,21 @@
1
+ module Spec
2
+ module Runner
3
+ module Formatter
4
+ module NOOPMethodMissing
5
+ def respond_to?(message, include_private = false)
6
+ if include_private
7
+ true
8
+ else
9
+ !private_methods.any? {|m| [message.to_s, message.to_sym].include?(m)}
10
+ end
11
+ end
12
+
13
+ private
14
+
15
+ def method_missing(sym, *args)
16
+ # a no-op
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec/runner/formatter/progress_bar_formatter'
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ class ProfileFormatter < ProgressBarFormatter
7
+
8
+ def initialize(options, where)
9
+ super
10
+ @example_times = []
11
+ end
12
+
13
+ def start(count)
14
+ @output.puts "Profiling enabled."
15
+ end
16
+
17
+ def example_started(example)
18
+ @time = Time.now
19
+ end
20
+
21
+ def example_passed(example)
22
+ super
23
+ @example_times << [
24
+ example_group.description,
25
+ example.description,
26
+ Time.now - @time
27
+ ]
28
+ end
29
+
30
+ def start_dump
31
+ super
32
+ @output.puts "\n\nTop 10 slowest examples:\n"
33
+
34
+ @example_times = @example_times.sort_by do |description, example, time|
35
+ time
36
+ end.reverse
37
+
38
+ @example_times[0..9].each do |description, example, time|
39
+ @output.print red(sprintf("%.7f", time))
40
+ @output.puts " #{description} #{example}"
41
+ end
42
+ @output.flush
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,21 +1,24 @@
1
+ require 'spec/runner/formatter/base_text_formatter'
2
+ require 'spec/runner/formatter/no_op_method_missing'
3
+
1
4
  module Spec
2
5
  module Runner
3
6
  module Formatter
4
7
  class ProgressBarFormatter < BaseTextFormatter
5
- def add_behaviour(name)
6
- end
7
-
8
- def example_failed(name, counter, failure)
9
- @output.print failure.expectation_not_met? ? red('F') : magenta('F')
8
+ include NOOPMethodMissing
9
+
10
+ def example_failed(example, counter, failure)
11
+ @output.print colorize_failure('F', failure)
10
12
  @output.flush
11
13
  end
12
14
 
13
- def example_passed(name)
15
+ def example_passed(example)
14
16
  @output.print green('.')
15
17
  @output.flush
16
18
  end
17
19
 
18
- def example_not_implemented(name)
20
+ def example_pending(example, message, deprecated_pending_location=nil)
21
+ super
19
22
  @output.print yellow('*')
20
23
  @output.flush
21
24
  end
@@ -27,4 +30,4 @@ module Spec
27
30
  end
28
31
  end
29
32
  end
30
- end
33
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec/runner/formatter/base_formatter'
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ class SilentFormatter < BaseFormatter
7
+ end
8
+ end
9
+ end
10
+ end
@@ -4,7 +4,7 @@ module Spec
4
4
  # This class extracts code snippets by looking at the backtrace of the passed error
5
5
  class SnippetExtractor #:nodoc:
6
6
  class NullConverter; def convert(code, pre); code; end; end #:nodoc:
7
- begin; require 'rubygems'; require 'syntax/convertors/html'; @@converter = Syntax::Convertors::HTML.for_syntax "ruby"; rescue LoadError => e; @@converter = NullConverter.new; end
7
+ begin; require 'syntax/convertors/html'; @@converter = Syntax::Convertors::HTML.for_syntax "ruby"; rescue LoadError => e; @@converter = NullConverter.new; end
8
8
 
9
9
  def snippet(error)
10
10
  raw_code, line = snippet_for(error.backtrace[0])
@@ -49,4 +49,4 @@ module Spec
49
49
  end
50
50
  end
51
51
  end
52
- end
52
+ end
@@ -1,26 +1,31 @@
1
+ require 'spec/runner/formatter/base_text_formatter'
2
+
1
3
  module Spec
2
4
  module Runner
3
5
  module Formatter
4
- class SpecdocFormatter < BaseTextFormatter
5
- def add_behaviour(name)
6
- @output.puts
7
- @output.puts name
8
- @output.flush
6
+ class SpecdocFormatter < BaseTextFormatter
7
+ def example_group_started(example_group)
8
+ super
9
+ output.puts
10
+ output.puts example_group.description
11
+ output.flush
9
12
  end
10
13
 
11
- def example_failed(name, counter, failure)
12
- @output.puts failure.expectation_not_met? ? red("- #{name} (FAILED - #{counter})") : magenta("- #{name} (ERROR - #{counter})")
13
- @output.flush
14
+ def example_failed(example, counter, failure)
15
+ output.puts(red("- #{example.description} (FAILED - #{counter})"))
16
+ output.flush
14
17
  end
15
-
16
- def example_passed(name)
17
- @output.puts green("- #{name}")
18
- @output.flush
18
+
19
+ def example_passed(example)
20
+ message = "- #{example.description}"
21
+ output.puts green(message)
22
+ output.flush
19
23
  end
20
24
 
21
- def example_not_implemented(name)
22
- @output.puts yellow("- #{name} (NOT IMPLEMENTED)")
23
- @output.flush
25
+ def example_pending(example, message, deprecated_pending_location=nil)
26
+ super
27
+ output.puts yellow("- #{example.description} (PENDING: #{message})")
28
+ output.flush
24
29
  end
25
30
  end
26
31
  end
@@ -0,0 +1,16 @@
1
+ require 'spec/runner/formatter/html_formatter'
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ # Formats backtraces so they're clickable by TextMate
7
+ class TextMateFormatter < HtmlFormatter
8
+ def backtrace_line(line)
9
+ line.gsub(/([^:]*\.rb):(\d*)/) do
10
+ "<a href=\"txmt://open?url=file://#{File.expand_path($1)}&line=#{$2}\">#{$1}:#{$2}</a> "
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end