rspec-instructure 1.3.3

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 (395) hide show
  1. data/.autotest +5 -0
  2. data/.document +7 -0
  3. data/.gitignore +15 -0
  4. data/Gemfile +20 -0
  5. data/History.rdoc +1565 -0
  6. data/License.txt +22 -0
  7. data/README.rdoc +44 -0
  8. data/Rakefile +110 -0
  9. data/Ruby1.9.rdoc +31 -0
  10. data/TODO.txt +17 -0
  11. data/Upgrade.rdoc +260 -0
  12. data/bin/autospec +4 -0
  13. data/bin/spec +5 -0
  14. data/cucumber.yml +5 -0
  15. data/example_spec.rb +4 -0
  16. data/examples/failing/README.txt +11 -0
  17. data/examples/failing/diffing_spec.rb +36 -0
  18. data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  19. data/examples/failing/failure_in_after.rb +10 -0
  20. data/examples/failing/failure_in_before.rb +10 -0
  21. data/examples/failing/mocking_example.rb +38 -0
  22. data/examples/failing/mocking_with_flexmock.rb +26 -0
  23. data/examples/failing/mocking_with_mocha.rb +25 -0
  24. data/examples/failing/mocking_with_rr.rb +27 -0
  25. data/examples/failing/partial_mock_example.rb +18 -0
  26. data/examples/failing/pending_example.rb +7 -0
  27. data/examples/failing/predicate_example.rb +32 -0
  28. data/examples/failing/raising_example.rb +47 -0
  29. data/examples/failing/syntax_error_example.rb +7 -0
  30. data/examples/failing/team_spec.rb +41 -0
  31. data/examples/failing/timeout_behaviour.rb +5 -0
  32. data/examples/passing/custom_formatter.rb +11 -0
  33. data/examples/passing/custom_matchers.rb +54 -0
  34. data/examples/passing/dynamic_spec.rb +7 -0
  35. data/examples/passing/file_accessor.rb +18 -0
  36. data/examples/passing/file_accessor_spec.rb +37 -0
  37. data/examples/passing/filtered_formatter.rb +17 -0
  38. data/examples/passing/filtered_formatter_example.rb +31 -0
  39. data/examples/passing/greeter_spec.rb +30 -0
  40. data/examples/passing/helper_method_example.rb +12 -0
  41. data/examples/passing/implicit_docstrings_example.rb +16 -0
  42. data/examples/passing/io_processor.rb +8 -0
  43. data/examples/passing/io_processor_spec.rb +20 -0
  44. data/examples/passing/mocking_example.rb +25 -0
  45. data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  46. data/examples/passing/nested_classes_example.rb +35 -0
  47. data/examples/passing/options_example.rb +29 -0
  48. data/examples/passing/options_formatter.rb +20 -0
  49. data/examples/passing/partial_mock_example.rb +27 -0
  50. data/examples/passing/pending_example.rb +18 -0
  51. data/examples/passing/predicate_example.rb +25 -0
  52. data/examples/passing/shared_example_group_example.rb +43 -0
  53. data/examples/passing/shared_stack_examples.rb +36 -0
  54. data/examples/passing/simple_matcher_example.rb +29 -0
  55. data/examples/passing/stack.rb +36 -0
  56. data/examples/passing/stack_spec.rb +63 -0
  57. data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  58. data/examples/passing/stubbing_example.rb +67 -0
  59. data/examples/passing/yielding_example.rb +31 -0
  60. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  61. data/features-pending/cli/conditional_exclusion.feature +39 -0
  62. data/features-pending/heckle/heckle.feature +56 -0
  63. data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  64. data/features/command_line/line_number_option.feature +56 -0
  65. data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  66. data/features/example_groups/define_example_attribute.feature +41 -0
  67. data/features/example_groups/example_group_with_should_methods.feature +29 -0
  68. data/features/example_groups/implicit_docstrings.feature +59 -0
  69. data/features/example_groups/nested_groups.feature +32 -0
  70. data/features/expectations/customized_message.feature +54 -0
  71. data/features/expectations/expect_change.feature +65 -0
  72. data/features/expectations/expect_error.feature +44 -0
  73. data/features/extensions/custom_example_group.feature +19 -0
  74. data/features/formatters/custom_formatter.feature +30 -0
  75. data/features/formatters/nested_formatter.feature +32 -0
  76. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  77. data/features/interop/examples_and_tests_together.feature +84 -0
  78. data/features/interop/rspec_output.feature +25 -0
  79. data/features/interop/test_but_not_test_unit.feature +26 -0
  80. data/features/interop/test_case_with_should_methods.feature +46 -0
  81. data/features/load_paths/add_lib_to_load_path.feature +20 -0
  82. data/features/load_paths/add_spec_to_load_path.feature +20 -0
  83. data/features/matchers/define_diffable_matcher.feature +26 -0
  84. data/features/matchers/define_matcher.feature +179 -0
  85. data/features/matchers/define_matcher_outside_rspec.feature +37 -0
  86. data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
  87. data/features/matchers/define_wrapped_matcher.feature +56 -0
  88. data/features/matchers/match_unless_raises.feature +60 -0
  89. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  90. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  91. data/features/mock_framework_integration/use_mocha.feature +27 -0
  92. data/features/mock_framework_integration/use_rr.feature +27 -0
  93. data/features/mocks/block_local_expectations.feature +62 -0
  94. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  95. data/features/mocks/stub_implementation.feature +26 -0
  96. data/features/pending/pending_examples.feature +81 -0
  97. data/features/runner/specify_line_number.feature +32 -0
  98. data/features/spec_helper/spec_helper.feature +25 -0
  99. data/features/step_definitions/running_rspec_steps.rb +52 -0
  100. data/features/step_definitions/stubbing_steps.rb +16 -0
  101. data/features/subject/explicit_subject.feature +31 -0
  102. data/features/subject/implicit_subject.feature +43 -0
  103. data/features/support/env.rb +83 -0
  104. data/features/support/matchers/smart_match.rb +31 -0
  105. data/init.rb +9 -0
  106. data/lib/autotest/discover.rb +3 -0
  107. data/lib/autotest/rspec.rb +54 -0
  108. data/lib/spec.rb +8 -0
  109. data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  110. data/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  111. data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  112. data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  113. data/lib/spec/autorun.rb +3 -0
  114. data/lib/spec/deprecation.rb +41 -0
  115. data/lib/spec/dsl.rb +1 -0
  116. data/lib/spec/dsl/main.rb +93 -0
  117. data/lib/spec/example.rb +164 -0
  118. data/lib/spec/example/args_and_options.rb +27 -0
  119. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  120. data/lib/spec/example/errors.rb +25 -0
  121. data/lib/spec/example/example_group.rb +10 -0
  122. data/lib/spec/example/example_group_factory.rb +82 -0
  123. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  124. data/lib/spec/example/example_group_methods.rb +287 -0
  125. data/lib/spec/example/example_group_proxy.rb +61 -0
  126. data/lib/spec/example/example_matcher.rb +43 -0
  127. data/lib/spec/example/example_methods.rb +152 -0
  128. data/lib/spec/example/example_proxy.rb +41 -0
  129. data/lib/spec/example/module_reopening_fix.rb +43 -0
  130. data/lib/spec/example/pending.rb +18 -0
  131. data/lib/spec/example/predicate_matchers.rb +46 -0
  132. data/lib/spec/example/shared_example_group.rb +59 -0
  133. data/lib/spec/example/subject.rb +114 -0
  134. data/lib/spec/expectations.rb +35 -0
  135. data/lib/spec/expectations/errors.rb +12 -0
  136. data/lib/spec/expectations/extensions.rb +1 -0
  137. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  138. data/lib/spec/expectations/fail_with.rb +45 -0
  139. data/lib/spec/expectations/handler.rb +50 -0
  140. data/lib/spec/extensions/instance_exec.rb +31 -0
  141. data/lib/spec/interop/test.rb +44 -0
  142. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  143. data/lib/spec/interop/test/unit/testcase.rb +56 -0
  144. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  145. data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
  146. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  147. data/lib/spec/matchers.rb +214 -0
  148. data/lib/spec/matchers/be.rb +249 -0
  149. data/lib/spec/matchers/be_close.rb +32 -0
  150. data/lib/spec/matchers/be_instance_of.rb +26 -0
  151. data/lib/spec/matchers/be_kind_of.rb +26 -0
  152. data/lib/spec/matchers/change.rb +151 -0
  153. data/lib/spec/matchers/compatibility.rb +14 -0
  154. data/lib/spec/matchers/dsl.rb +20 -0
  155. data/lib/spec/matchers/eql.rb +42 -0
  156. data/lib/spec/matchers/equal.rb +53 -0
  157. data/lib/spec/matchers/errors.rb +5 -0
  158. data/lib/spec/matchers/exist.rb +16 -0
  159. data/lib/spec/matchers/generated_descriptions.rb +36 -0
  160. data/lib/spec/matchers/has.rb +35 -0
  161. data/lib/spec/matchers/have.rb +152 -0
  162. data/lib/spec/matchers/include.rb +44 -0
  163. data/lib/spec/matchers/match.rb +21 -0
  164. data/lib/spec/matchers/match_array.rb +71 -0
  165. data/lib/spec/matchers/matcher.rb +132 -0
  166. data/lib/spec/matchers/method_missing.rb +9 -0
  167. data/lib/spec/matchers/operator_matcher.rb +83 -0
  168. data/lib/spec/matchers/pretty.rb +37 -0
  169. data/lib/spec/matchers/raise_exception.rb +131 -0
  170. data/lib/spec/matchers/respond_to.rb +71 -0
  171. data/lib/spec/matchers/satisfy.rb +47 -0
  172. data/lib/spec/matchers/simple_matcher.rb +134 -0
  173. data/lib/spec/matchers/throw_symbol.rb +100 -0
  174. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  175. data/lib/spec/mocks.rb +200 -0
  176. data/lib/spec/mocks/argument_expectation.rb +51 -0
  177. data/lib/spec/mocks/argument_matchers.rb +237 -0
  178. data/lib/spec/mocks/error_generator.rb +92 -0
  179. data/lib/spec/mocks/errors.rb +10 -0
  180. data/lib/spec/mocks/example_methods.rb +69 -0
  181. data/lib/spec/mocks/extensions.rb +1 -0
  182. data/lib/spec/mocks/extensions/object.rb +3 -0
  183. data/lib/spec/mocks/framework.rb +15 -0
  184. data/lib/spec/mocks/message_expectation.rb +344 -0
  185. data/lib/spec/mocks/methods.rb +94 -0
  186. data/lib/spec/mocks/mock.rb +71 -0
  187. data/lib/spec/mocks/order_group.rb +29 -0
  188. data/lib/spec/mocks/proxy.rb +254 -0
  189. data/lib/spec/mocks/space.rb +28 -0
  190. data/lib/spec/rake/spectask.rb +230 -0
  191. data/lib/spec/rake/verify_rcov.rb +52 -0
  192. data/lib/spec/ruby.rb +9 -0
  193. data/lib/spec/runner.rb +66 -0
  194. data/lib/spec/runner/backtrace_tweaker.rb +78 -0
  195. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  196. data/lib/spec/runner/command_line.rb +15 -0
  197. data/lib/spec/runner/configuration.rb +202 -0
  198. data/lib/spec/runner/differs/default.rb +93 -0
  199. data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  200. data/lib/spec/runner/drb_command_line.rb +32 -0
  201. data/lib/spec/runner/example_group_runner.rb +62 -0
  202. data/lib/spec/runner/extensions/kernel.rb +9 -0
  203. data/lib/spec/runner/formatter/base_formatter.rb +139 -0
  204. data/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  205. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  206. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  207. data/lib/spec/runner/formatter/html_formatter.rb +338 -0
  208. data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
  209. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  210. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  211. data/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  212. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  213. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  214. data/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  215. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  216. data/lib/spec/runner/heckle_runner.rb +77 -0
  217. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  218. data/lib/spec/runner/line_number_query.rb +78 -0
  219. data/lib/spec/runner/option_parser.rb +225 -0
  220. data/lib/spec/runner/options.rb +406 -0
  221. data/lib/spec/runner/reporter.rb +171 -0
  222. data/lib/spec/stubs/cucumber.rb +5 -0
  223. data/lib/spec/test/unit.rb +10 -0
  224. data/lib/spec/version.rb +14 -0
  225. data/resources/helpers/cmdline.rb +8 -0
  226. data/resources/rake/examples.rake +7 -0
  227. data/resources/rake/examples_with_rcov.rake +9 -0
  228. data/resources/rake/failing_examples_with_html.rake +9 -0
  229. data/resources/rake/verify_rcov.rake +7 -0
  230. data/rspec.gemspec +26 -0
  231. data/spec/README.jruby +15 -0
  232. data/spec/autotest/autotest_helper.rb +8 -0
  233. data/spec/autotest/autotest_matchers.rb +38 -0
  234. data/spec/autotest/discover_spec.rb +8 -0
  235. data/spec/autotest/failed_results_re_spec.rb +31 -0
  236. data/spec/autotest/rspec_spec.rb +126 -0
  237. data/spec/ruby_forker.rb +13 -0
  238. data/spec/spec.opts +6 -0
  239. data/spec/spec/dsl/main_spec.rb +103 -0
  240. data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  241. data/spec/spec/example/example_group_factory_spec.rb +180 -0
  242. data/spec/spec/example/example_group_methods_spec.rb +778 -0
  243. data/spec/spec/example/example_group_proxy_spec.rb +107 -0
  244. data/spec/spec/example/example_group_spec.rb +632 -0
  245. data/spec/spec/example/example_matcher_spec.rb +85 -0
  246. data/spec/spec/example/example_methods_spec.rb +162 -0
  247. data/spec/spec/example/example_proxy_spec.rb +57 -0
  248. data/spec/spec/example/helper_method_spec.rb +24 -0
  249. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  250. data/spec/spec/example/pending_module_spec.rb +58 -0
  251. data/spec/spec/example/predicate_matcher_spec.rb +41 -0
  252. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  253. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  254. data/spec/spec/example/subject_spec.rb +110 -0
  255. data/spec/spec/expectations/differs/default_spec.rb +194 -0
  256. data/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  257. data/spec/spec/expectations/fail_with_spec.rb +96 -0
  258. data/spec/spec/expectations/handler_spec.rb +206 -0
  259. data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
  260. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  261. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  262. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  263. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  264. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  265. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  266. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  267. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  268. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  269. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  270. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  271. data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  272. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  273. data/spec/spec/matchers/be_close_spec.rb +50 -0
  274. data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  275. data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  276. data/spec/spec/matchers/be_spec.rb +460 -0
  277. data/spec/spec/matchers/change_spec.rb +349 -0
  278. data/spec/spec/matchers/compatibility_spec.rb +28 -0
  279. data/spec/spec/matchers/description_generation_spec.rb +160 -0
  280. data/spec/spec/matchers/dsl_spec.rb +34 -0
  281. data/spec/spec/matchers/eql_spec.rb +33 -0
  282. data/spec/spec/matchers/equal_spec.rb +57 -0
  283. data/spec/spec/matchers/exist_spec.rb +65 -0
  284. data/spec/spec/matchers/has_spec.rb +190 -0
  285. data/spec/spec/matchers/have_spec.rb +381 -0
  286. data/spec/spec/matchers/include_spec.rb +88 -0
  287. data/spec/spec/matchers/match_array_spec.rb +115 -0
  288. data/spec/spec/matchers/match_spec.rb +57 -0
  289. data/spec/spec/matchers/matcher_spec.rb +289 -0
  290. data/spec/spec/matchers/matchers_spec.rb +2 -0
  291. data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  292. data/spec/spec/matchers/pretty_spec.rb +22 -0
  293. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  294. data/spec/spec/matchers/respond_to_spec.rb +116 -0
  295. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  296. data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
  297. data/spec/spec/matchers/throw_symbol_spec.rb +121 -0
  298. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  299. data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  300. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  301. data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  302. data/spec/spec/mocks/at_least_spec.rb +97 -0
  303. data/spec/spec/mocks/at_most_spec.rb +93 -0
  304. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  305. data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  306. data/spec/spec/mocks/bug_report_1049_spec.rb +30 -0
  307. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  308. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  309. data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
  310. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  311. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  312. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  313. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  314. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  315. data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  316. data/spec/spec/mocks/bug_report_957_spec.rb +22 -0
  317. data/spec/spec/mocks/double_spec.rb +12 -0
  318. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  319. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  320. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  321. data/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  322. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  323. data/spec/spec/mocks/mock_spec.rb +601 -0
  324. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  325. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  326. data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  327. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  328. data/spec/spec/mocks/options_hash_spec.rb +35 -0
  329. data/spec/spec/mocks/partial_mock_spec.rb +164 -0
  330. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  331. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  332. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  333. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  334. data/spec/spec/mocks/stub_chain_spec.rb +42 -0
  335. data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  336. data/spec/spec/mocks/stub_spec.rb +203 -0
  337. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  338. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  339. data/spec/spec/mocks/unstub_spec.rb +127 -0
  340. data/spec/spec/package/bin_spec_spec.rb +16 -0
  341. data/spec/spec/rake/spectask_spec.rb +150 -0
  342. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  343. data/spec/spec/runner/command_line_spec.rb +162 -0
  344. data/spec/spec/runner/configuration_spec.rb +320 -0
  345. data/spec/spec/runner/drb_command_line_spec.rb +146 -0
  346. data/spec/spec/runner/empty_file.txt +0 -0
  347. data/spec/spec/runner/example_group_runner_spec.rb +26 -0
  348. data/spec/spec/runner/examples.txt +2 -0
  349. data/spec/spec/runner/failed.txt +3 -0
  350. data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  351. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  352. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  353. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  354. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  355. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  356. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  357. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  358. data/spec/spec/runner/formatter/html_formatted-1.9.2.html +377 -0
  359. data/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  360. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
  361. data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  362. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  363. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  364. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  365. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  366. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  367. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  368. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  369. data/spec/spec/runner/formatter/text_mate_formatted-1.9.2.html +371 -0
  370. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  371. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  372. data/spec/spec/runner/heckler_spec.rb +20 -0
  373. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  374. data/spec/spec/runner/line_number_query_spec.rb +129 -0
  375. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  376. data/spec/spec/runner/option_parser_spec.rb +552 -0
  377. data/spec/spec/runner/options_spec.rb +554 -0
  378. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  379. data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  380. data/spec/spec/runner/output_one_time_spec.rb +15 -0
  381. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +123 -0
  382. data/spec/spec/runner/reporter_spec.rb +244 -0
  383. data/spec/spec/runner/resources/a_bar.rb +0 -0
  384. data/spec/spec/runner/resources/a_foo.rb +0 -0
  385. data/spec/spec/runner/resources/a_spec.rb +1 -0
  386. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  387. data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  388. data/spec/spec/runner/spec.opts +2 -0
  389. data/spec/spec/runner/spec_drb.opts +2 -0
  390. data/spec/spec/runner/spec_spaced.opts +2 -0
  391. data/spec/spec/runner_spec.rb +13 -0
  392. data/spec/spec_helper.rb +113 -0
  393. data/spec/support/macros.rb +29 -0
  394. data/spec/support/spec_classes.rb +133 -0
  395. metadata +727 -0
@@ -0,0 +1,12 @@
1
+ begin
2
+ require 'diff/lcs'
3
+ rescue LoadError
4
+ begin
5
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
6
+ require 'diff/lcs'
7
+ rescue LoadError
8
+ raise "You must gem install diff-lcs to use diffing"
9
+ end
10
+ end
11
+
12
+ require 'diff/lcs/hunk'
@@ -0,0 +1,32 @@
1
+ require "drb/drb"
2
+
3
+ module Spec
4
+ module Runner
5
+ # Facade to run specs by connecting to a DRB server
6
+ class DrbCommandLine
7
+
8
+ def self.port(options)
9
+ (options.drb_port || ENV["RSPEC_DRB"] || 8989).to_i
10
+ end
11
+
12
+ # Runs specs on a DRB server. Note that this API is similar to that of
13
+ # CommandLine - making it possible for clients to use both interchangeably.
14
+ def self.run(options)
15
+ begin
16
+ begin; \
17
+ DRb.start_service("druby://localhost:0"); \
18
+ rescue SocketError, Errno::EADDRNOTAVAIL; \
19
+ DRb.start_service("druby://:0"); \
20
+ end
21
+ spec_server = DRbObject.new_with_uri("druby://127.0.0.1:#{port(options)}")
22
+ spec_server.run(options.argv, options.error_stream, options.output_stream)
23
+ true
24
+ rescue DRb::DRbConnError
25
+ options.error_stream.puts "No server is running"
26
+ false
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,62 @@
1
+ module Spec
2
+ module Runner
3
+ class ExampleGroupRunner
4
+ def initialize(options)
5
+ @options = options
6
+ end
7
+
8
+ def load_files(files)
9
+ $KCODE = 'u' if RUBY_VERSION.to_f < 1.9
10
+ # It's important that loading files (or choosing not to) stays the
11
+ # responsibility of the ExampleGroupRunner. Some implementations (like)
12
+ # the one using DRb may choose *not* to load files, but instead tell
13
+ # someone else to do it over the wire.
14
+ files.each do |file|
15
+ load file
16
+ end
17
+ end
18
+
19
+ def run
20
+ prepare
21
+ success = true
22
+ example_groups.each do |example_group|
23
+ success = success & example_group.run(@options)
24
+ end
25
+ finish
26
+
27
+ if $rerun_success
28
+ success = true
29
+ end
30
+ success
31
+ end
32
+
33
+ protected
34
+
35
+ def prepare
36
+ reporter.start(number_of_examples)
37
+ example_groups.reverse! if reverse
38
+ end
39
+
40
+ def finish
41
+ reporter.end
42
+ reporter.dump
43
+ end
44
+
45
+ def reporter
46
+ @options.reporter
47
+ end
48
+
49
+ def reverse
50
+ @options.reverse
51
+ end
52
+
53
+ def example_groups
54
+ @options.example_groups
55
+ end
56
+
57
+ def number_of_examples
58
+ @options.number_of_examples
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,9 @@
1
+ module Kernel
2
+ unless respond_to?(:debugger)
3
+ # Start a debugging session if ruby-debug is loaded with the -u/--debugger option
4
+ def debugger(steps=1)
5
+ # If not then just comment and proceed
6
+ $stderr.puts "debugger statement ignored, use -u or --debugger option on rspec to enable debugging"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,139 @@
1
+ module Spec
2
+ module Runner
3
+ module Formatter
4
+ # Formatter base-class, which implements all required methods as no-ops, with the exception
5
+ class BaseFormatter
6
+ # Formatters are initialized with <tt>options</tt> and <tt>output</tt>
7
+ # arguments. RSpec's built-in formatters already expect this, and any
8
+ # custom formatters should as well.
9
+ #
10
+ # ==== Parameters
11
+ # options::
12
+ # A struct containing boolean values for colour, autospec,
13
+ # and dry_run
14
+ # output::
15
+ # Used by RSpec's built-in formatters to determine where to
16
+ # write the output. Default is <tt>STDOUT</tt>, otherwise a
17
+ # filename is expected.
18
+ #
19
+ # === Example
20
+ # If you invoke the <tt>spec</tt> command with:
21
+ #
22
+ # --format progress:progress_report.txt
23
+ #
24
+ # ... the value of <tt>output</tt> will be progress_report.txt. If you
25
+ # don't identify an output destination, the default is STDOUT.
26
+ def initialize(options, output)
27
+ end
28
+
29
+ # This method is invoked before any examples are run, right after
30
+ # they have all been collected. This can be useful for special
31
+ # formatters that need to provide progress on feedback (graphical ones)
32
+ #
33
+ # This method will only be invoked once, and the next one to be invoked
34
+ # is #example_group_started
35
+ #
36
+ # ==== Parameters
37
+ # example_count:: the total number of examples to be run
38
+ def start(example_count)
39
+ end
40
+
41
+ # This method is invoked at the beginning of the execution of each
42
+ # example_group. The next method to be invoked after this is
43
+ # #example_started
44
+ #
45
+ # ==== Parameters
46
+ # example_group_proxy:: instance of Spec::Example::ExampleGroupProxy
47
+ def example_group_started(example_group_proxy)
48
+ end
49
+
50
+ # Deprecated - use example_group_started instead
51
+ def add_example_group(example_group_proxy)
52
+ Spec.deprecate("BaseFormatter#add_example_group", "BaseFormatter#example_group_started")
53
+ example_group_started(example_group_proxy)
54
+ end
55
+
56
+ # This method is invoked when an +example+ starts. The next method to be
57
+ # invoked after this is #example_passed, #example_failed, or
58
+ # #example_pending
59
+ #
60
+ # ==== Parameters
61
+ # example_proxy:: instance of Spec::Example::ExampleProxy
62
+ def example_started(example_proxy)
63
+ end
64
+
65
+ # This method is invoked when an +example+ passes.
66
+ # +example_proxy+ is the same instance of Spec::Example::ExampleProxy
67
+ # that was passed to example_started
68
+ #
69
+ # ==== Parameters
70
+ # example_proxy:: instance of Spec::Example::ExampleProxy
71
+ def example_passed(example_proxy)
72
+ end
73
+
74
+ # This method is invoked when an +example+ fails, i.e. an exception occurred
75
+ # inside it (such as a failed should or other exception).
76
+ #
77
+ # ==== Parameters
78
+ # example_proxy::
79
+ # The same instance of Spec::Example::ExampleProxy that was passed
80
+ # to <tt>example_started</tt>
81
+ #
82
+ # counter:: the sequential number of this failure
83
+ #
84
+ # failure:: instance of Spec::Runner::Reporter::Failure
85
+ def example_failed(example_proxy, counter, failure)
86
+ end
87
+
88
+ # This method is invoked when an example is not yet implemented (i.e. has not
89
+ # been provided a block), or when an ExamplePendingError is raised.
90
+ # +message+ is the message from the ExamplePendingError, if it exists, or the
91
+ # default value of "Not Yet Implemented". +deprecated_pending_location+ is
92
+ # deprecated - use example_proxy.location instead
93
+ #
94
+ # ==== Parameters
95
+ # example_proxy:: instance of Spec::Example::ExampleProxy
96
+ # message::
97
+ # the message passed to the pending message, or an internal
98
+ # default
99
+ #
100
+ def example_pending(example_proxy, message, deprecated_pending_location=nil)
101
+ end
102
+
103
+ # This method is invoked after all of the examples have executed. The next method
104
+ # to be invoked after this one is #dump_failure (once for each failed example)
105
+ def start_dump
106
+ end
107
+
108
+ # Dumps detailed information about an example failure.
109
+ # This method is invoked for each failed example after all examples have run. +counter+ is the sequence number
110
+ # of the associated example. +failure+ is a Failure object, which contains detailed
111
+ # information about the failure.
112
+ #
113
+ # ==== Parameters
114
+ # counter:: the sequential number of this failure
115
+ # failure:: instance of Spec::Runner::Reporter::Failure
116
+ def dump_failure(counter, failure)
117
+ end
118
+
119
+ # This method is invoked after the dumping of examples and failures.
120
+ #
121
+ # ==== Parameters
122
+ # duration:: the total time for the entire run
123
+ # example_count:: the number of examples run
124
+ # failure_count:: the number of examples that failed
125
+ # pending_count:: the number of examples that are pending
126
+ def dump_summary(duration, example_count, failure_count, pending_count)
127
+ end
128
+
129
+ # This gets invoked after the summary
130
+ def dump_pending
131
+ end
132
+
133
+ # This method is invoked at the very end. Allows the formatter to clean up, like closing open streams.
134
+ def close
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,142 @@
1
+ require 'spec/runner/formatter/base_formatter'
2
+ require 'fileutils'
3
+
4
+ module Spec
5
+ module Runner
6
+ module Formatter
7
+ # Baseclass for text-based formatters. Can in fact be used for
8
+ # non-text based ones too - just ignore the +output+ constructor
9
+ # argument.
10
+ class BaseTextFormatter < BaseFormatter
11
+ attr_reader :output, :example_group
12
+ # Creates a new instance that will write to +output+. If +output+ is a
13
+ # String, output will be written to the File with that name, otherwise
14
+ # +output+ is exected to be an IO (or an object that responds to #puts
15
+ # and #write).
16
+ def initialize(options, output)
17
+ @options = options
18
+ if String === output
19
+ FileUtils.mkdir_p(File.dirname(output))
20
+ @output = File.open(output, 'w')
21
+ else
22
+ @output = output
23
+ end
24
+ @pending_examples = []
25
+ end
26
+
27
+ def example_group_started(example_group_proxy)
28
+ @example_group = example_group_proxy
29
+ end
30
+
31
+ def example_pending(example, message, deprecated_pending_location=nil)
32
+ @pending_examples << ["#{@example_group.description} #{example.description}", message, example.location]
33
+ end
34
+
35
+ def dump_failure(counter, failure)
36
+ @output.puts
37
+ @output.puts "#{counter.to_s})"
38
+ @output.puts colorize_failure("#{failure.header}\n#{failure.exception.message}", failure)
39
+ @output.puts format_backtrace(failure.exception.backtrace)
40
+ @output.flush
41
+ end
42
+
43
+ def colorize_failure(message, failure)
44
+ failure.pending_fixed? ? blue(message) : red(message)
45
+ end
46
+
47
+ def colourise(message, failure)
48
+ Spec::deprecate("BaseTextFormatter#colourise", "colorize_failure")
49
+ colorize_failure(message, failure)
50
+ end
51
+
52
+ def dump_summary(duration, example_count, failure_count, pending_count)
53
+ return if dry_run?
54
+ @output.puts
55
+ @output.puts "Finished in #{duration} seconds"
56
+ @output.puts
57
+
58
+ summary = "#{example_count} example#{'s' unless example_count == 1}, #{failure_count} failure#{'s' unless failure_count == 1}"
59
+ summary << ", #{pending_count} pending" if pending_count > 0
60
+
61
+ if failure_count == 0
62
+ if pending_count > 0
63
+ @output.puts yellow(summary)
64
+ else
65
+ @output.puts green(summary)
66
+ end
67
+ else
68
+ @output.puts red(summary)
69
+ end
70
+ @output.flush
71
+ end
72
+
73
+ def dump_pending
74
+ unless @pending_examples.empty?
75
+ @output.puts
76
+ @output.puts "Pending:"
77
+ @pending_examples.each do |pending_example|
78
+ @output.puts "\n#{pending_example[0]} (#{pending_example[1]})"
79
+ @output.puts "#{pending_example[2]}\n"
80
+ end
81
+ end
82
+ @output.flush
83
+ end
84
+
85
+ def close
86
+ @output.close if (IO === @output) & (@output != $stdout)
87
+ end
88
+
89
+ def format_backtrace(backtrace)
90
+ return "" if backtrace.nil?
91
+ backtrace.map { |line| backtrace_line(line) }.join("\n")
92
+ end
93
+
94
+ protected
95
+
96
+ def colour?
97
+ !!@options.colour
98
+ end
99
+
100
+ def dry_run?
101
+ !!@options.dry_run
102
+ end
103
+
104
+ def autospec?
105
+ !!@options.autospec || ENV.has_key?("AUTOTEST")
106
+ end
107
+
108
+ def backtrace_line(line)
109
+ line.sub(/\A([^:]+:\d+)$/, '\\1:')
110
+ end
111
+
112
+ def colour(text, colour_code)
113
+ return text if output_to_file?
114
+ return text unless ENV['RSPEC_COLOR'] || (colour? & (autospec? || output_to_tty?))
115
+ "#{colour_code}#{text}\e[0m"
116
+ end
117
+
118
+ def output_to_file?
119
+ File === @output
120
+ end
121
+
122
+ def output_to_tty?
123
+ begin
124
+ @output.tty?
125
+ rescue NoMethodError
126
+ false
127
+ end
128
+ end
129
+
130
+ def green(text); colour(text, "\e[32m"); end
131
+ def red(text); colour(text, "\e[31m"); end
132
+ def yellow(text); colour(text, "\e[33m"); end
133
+ def blue(text); colour(text, "\e[34m"); end
134
+
135
+ def magenta(text)
136
+ Spec::deprecate("BaseTextFormatter#magenta")
137
+ red(text)
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec/runner/formatter/base_text_formatter'
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ class FailingExampleGroupsFormatter < BaseTextFormatter
7
+ def example_failed(example, counter, failure)
8
+ if @example_group
9
+ @output.puts @example_group.description.gsub(/ \(druby.*\)/,"")
10
+
11
+ @output.flush
12
+ @example_group = nil
13
+ end
14
+ end
15
+
16
+ def dump_failure(counter, failure)
17
+ end
18
+
19
+ def dump_summary(duration, example_count, failure_count, pending_count)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec/runner/formatter/base_text_formatter'
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ class FailingExamplesFormatter < BaseTextFormatter
7
+ def example_failed(example, counter, failure)
8
+ @output.puts "#{example_group.description} #{example.description}"
9
+ @output.flush
10
+ end
11
+
12
+ def dump_failure(counter, failure)
13
+ end
14
+
15
+ def dump_summary(duration, example_count, failure_count, pending_count)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end