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,52 @@
1
+ module RCov
2
+ # A task that can verify that the RCov coverage doesn't
3
+ # drop below a certain threshold. It should be run after
4
+ # running Spec::Rake::SpecTask.
5
+ class VerifyTask < Rake::TaskLib
6
+ # Name of the task. Defaults to :verify_rcov
7
+ attr_accessor :name
8
+
9
+ # Path to the index.html file generated by RCov, which
10
+ # is the file containing the total coverage.
11
+ # Defaults to 'coverage/index.html'
12
+ attr_accessor :index_html
13
+
14
+ # Whether or not to output details. Defaults to true.
15
+ attr_accessor :verbose
16
+
17
+ # The threshold value (in percent) for coverage. If the
18
+ # actual coverage is not equal to this value, the task will raise an
19
+ # exception.
20
+ attr_accessor :threshold
21
+
22
+ # Require the threshold value be met exactly. This is the default.
23
+ attr_accessor :require_exact_threshold
24
+
25
+ def initialize(name=:verify_rcov)
26
+ @name = name
27
+ @index_html = 'coverage/index.html'
28
+ @verbose = true
29
+ @require_exact_threshold = true
30
+ yield self if block_given?
31
+ raise "Threshold must be set" if @threshold.nil?
32
+ define
33
+ end
34
+
35
+ def define
36
+ desc "Verify that rcov coverage is at least #{threshold}%"
37
+ task @name do
38
+ total_coverage = 0
39
+
40
+ File.open(index_html).each_line do |line|
41
+ if line =~ /<tt class='coverage_total'>\s*(\d+\.\d+)%\s*<\/tt>/
42
+ total_coverage = $1.to_f
43
+ break
44
+ end
45
+ end
46
+ puts "Coverage: #{total_coverage}% (threshold: #{threshold}%)" if verbose
47
+ raise "Coverage must be at least #{threshold}% but was #{total_coverage}%" if total_coverage < threshold
48
+ raise "Coverage has increased above the threshold of #{threshold}% to #{total_coverage}%. You should update your threshold value." if (total_coverage > threshold) and require_exact_threshold
49
+ end
50
+ end
51
+ end
52
+ end
data/lib/spec/ruby.rb ADDED
@@ -0,0 +1,9 @@
1
+ module Spec
2
+ module Ruby
3
+ class << self
4
+ def version
5
+ RUBY_VERSION
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec/runner/configuration'
2
+ require 'spec/runner/options'
3
+ require 'spec/runner/option_parser'
4
+ require 'spec/runner/example_group_runner'
5
+ require 'spec/runner/command_line'
6
+ require 'spec/runner/drb_command_line'
7
+ require 'spec/runner/backtrace_tweaker'
8
+ require 'spec/runner/reporter'
9
+ require 'spec/runner/line_number_query'
10
+ require 'spec/runner/class_and_arguments_parser'
11
+ require 'spec/runner/extensions/kernel'
12
+
13
+ module Spec
14
+ module Runner
15
+
16
+ class ExampleGroupCreationListener
17
+ def register_example_group(klass)
18
+ Spec::Runner.options.add_example_group klass
19
+ end
20
+ end
21
+
22
+ Spec::Example::ExampleGroupFactory.example_group_creation_listeners << ExampleGroupCreationListener.new
23
+
24
+ class << self
25
+ def configuration # :nodoc:
26
+ @configuration ||= Spec::Runner::Configuration.new
27
+ end
28
+
29
+ # Use this to configure various configurable aspects of
30
+ # RSpec:
31
+ #
32
+ # Spec::Runner.configure do |configuration|
33
+ # # Configure RSpec here
34
+ # end
35
+ #
36
+ # The yielded <tt>configuration</tt> object is a
37
+ # Spec::Runner::Configuration instance. See its RDoc
38
+ # for details about what you can do with it.
39
+ #
40
+ def configure
41
+ yield configuration
42
+ end
43
+
44
+ def autorun # :nodoc:
45
+ at_exit {exit run unless $!}
46
+ end
47
+
48
+ def options # :nodoc:
49
+ @options ||= begin
50
+ parser = ::Spec::Runner::OptionParser.new($stderr, $stdout)
51
+ parser.order!(ARGV)
52
+ parser.options
53
+ end
54
+ end
55
+
56
+ def use options
57
+ @options = options
58
+ end
59
+
60
+ def run
61
+ options.examples_run? || options.run_examples
62
+ end
63
+
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,78 @@
1
+ module Spec
2
+ module Runner
3
+ class BacktraceTweaker
4
+ def initialize(*patterns)
5
+ @ignore_patterns = []
6
+ end
7
+
8
+ def clean_up_double_slashes(line)
9
+ line.gsub!('//','/')
10
+ end
11
+
12
+ def ignore_patterns(*patterns)
13
+ # do nothing. Only QuietBacktraceTweaker ignores patterns.
14
+ end
15
+
16
+ def ignored_patterns
17
+ []
18
+ end
19
+
20
+ def tweak_backtrace(error)
21
+ return if error.backtrace.nil?
22
+ tweaked = error.backtrace.collect do |message|
23
+ clean_up_double_slashes(message)
24
+ kept_lines = message.split("\n").select do |line|
25
+ ignored_patterns.each do |ignore|
26
+ break if line =~ ignore
27
+ end
28
+ end
29
+ kept_lines.empty?? nil : kept_lines.join("\n")
30
+ end
31
+ error.set_backtrace(tweaked.select {|line| line})
32
+ end
33
+ end
34
+
35
+ class NoisyBacktraceTweaker < BacktraceTweaker
36
+ end
37
+
38
+ # Tweaks raised Exceptions to mask noisy (unneeded) parts of the backtrace
39
+ class QuietBacktraceTweaker < BacktraceTweaker
40
+ unless defined?(IGNORE_PATTERNS)
41
+ root_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', '..'))
42
+ spec_files = Dir["#{root_dir}/lib/*"].map do |path|
43
+ subpath = path[root_dir.length..-1]
44
+ /#{subpath}/
45
+ end
46
+ IGNORE_PATTERNS = spec_files + [
47
+ /\/rspec-[^\/]*\/lib\/spec\//,
48
+ /\/spork-[^\/]*\/lib\/spork\//,
49
+ /\/lib\/ruby\//,
50
+ /bin\/spec:/,
51
+ /bin\/spork:/,
52
+ /bin\/rcov:/,
53
+ /lib\/rspec-rails/,
54
+ /vendor\/rails/,
55
+ # TextMate's Ruby and RSpec plugins
56
+ /Ruby\.tmbundle\/Support\/tmruby.rb:/,
57
+ /RSpec\.tmbundle\/Support\/lib/,
58
+ /temp_textmate\./,
59
+ /mock_frameworks\/rspec/,
60
+ /spec_server/
61
+ ]
62
+ end
63
+
64
+ def initialize(*patterns)
65
+ super
66
+ ignore_patterns(*patterns)
67
+ end
68
+
69
+ def ignore_patterns(*patterns)
70
+ @ignore_patterns += patterns.flatten.map { |pattern| Regexp.new(pattern) }
71
+ end
72
+
73
+ def ignored_patterns
74
+ IGNORE_PATTERNS + @ignore_patterns
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,14 @@
1
+ module Spec
2
+ module Runner
3
+ class ClassAndArgumentsParser
4
+ def self.parse(s)
5
+ if s =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/
6
+ arg = $2 == "" ? nil : $2
7
+ [$1, arg]
8
+ else
9
+ raise "Couldn't parse #{s.inspect}"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec/runner/option_parser'
2
+
3
+ module Spec
4
+ module Runner
5
+ class CommandLine
6
+ def self.run(tmp_options=Spec::Runner.options)
7
+ orig_options = Spec::Runner.options
8
+ Spec::Runner.use tmp_options
9
+ tmp_options.run_examples
10
+ ensure
11
+ Spec::Runner.use orig_options
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,202 @@
1
+ module Spec
2
+ module Runner
3
+ class Configuration
4
+ include Spec::Example::ArgsAndOptions
5
+
6
+ # Chooses what mock framework to use. Example:
7
+ #
8
+ # Spec::Runner.configure do |config|
9
+ # config.mock_with :rspec, :mocha, :flexmock, or :rr
10
+ # end
11
+ #
12
+ # To use any other mock framework, you'll have to provide your own
13
+ # adapter. This is simply a module that responds to the following
14
+ # methods:
15
+ #
16
+ # setup_mocks_for_rspec
17
+ # verify_mocks_for_rspec
18
+ # teardown_mocks_for_rspec.
19
+ #
20
+ # These are your hooks into the lifecycle of a given example. RSpec will
21
+ # call setup_mocks_for_rspec before running anything else in each
22
+ # Example. After executing the #after methods, RSpec will then call
23
+ # verify_mocks_for_rspec and teardown_mocks_for_rspec (this is
24
+ # guaranteed to run even if there are failures in
25
+ # verify_mocks_for_rspec).
26
+ #
27
+ # Once you've defined this module, you can pass that to mock_with:
28
+ #
29
+ # Spec::Runner.configure do |config|
30
+ # config.mock_with MyMockFrameworkAdapter
31
+ # end
32
+ #
33
+ def mock_with(mock_framework)
34
+ @mock_framework = case mock_framework
35
+ when Symbol
36
+ mock_framework_path(mock_framework.to_s)
37
+ else
38
+ mock_framework
39
+ end
40
+ end
41
+
42
+ def mock_framework # :nodoc:
43
+ @mock_framework ||= mock_framework_path("rspec")
44
+ end
45
+
46
+ # :call-seq:
47
+ # include(Some::Helpers)
48
+ # include(Some::Helpers, More::Helpers)
49
+ # include(My::Helpers, :type => :key)
50
+ #
51
+ # Declares modules to be included in multiple example groups
52
+ # (<tt>describe</tt> blocks). With no <tt>:type</tt>, the modules listed
53
+ # will be included in all example groups.
54
+ #
55
+ # Use <tt>:type</tt> to restrict
56
+ # the inclusion to a subset of example groups. The value assigned to
57
+ # <tt>:type</tt> should be a key that maps to a class that is either a
58
+ # subclass of Spec::Example::ExampleGroup or extends
59
+ # Spec::Example::ExampleGroupMethods and includes
60
+ # Spec::Example::ExampleMethods.
61
+ #
62
+ # For example, the rspec-rails gem/plugin extends Test::Unit::TestCase
63
+ # with Spec::Example::ExampleGroupMethods and includes
64
+ # Spec::Example::ExampleMethods in it. So if you have a module of helper
65
+ # methods for controller examples, you could do this:
66
+ #
67
+ # config.include(ControllerExampleHelpers, :type => :controller)
68
+ #
69
+ # Only example groups that have that type will get the modules included:
70
+ #
71
+ # describe Account, :type => :model do
72
+ # # Will *not* include ControllerExampleHelpers
73
+ # end
74
+ #
75
+ # describe AccountsController, :type => :controller do
76
+ # # *Will* include ControllerExampleHelpers
77
+ # end
78
+ #
79
+ def include(*modules_and_options)
80
+ include_or_extend(:include, *modules_and_options)
81
+ end
82
+
83
+ # :call-seq:
84
+ # extend(Some::Helpers)
85
+ # extend(Some::Helpers, More::Helpers)
86
+ # extend(My::Helpers, :type => :key)
87
+ #
88
+ # Works just like #include, but extends the example groups
89
+ # with the modules rather than including them.
90
+ def extend(*modules_and_options)
91
+ include_or_extend(:extend, *modules_and_options)
92
+ end
93
+
94
+ # Appends a global <tt>before</tt> block to all example groups.
95
+ # <tt>scope</tt> can be any of <tt>:each</tt> (default), <tt>:all</tt>, or
96
+ # <tt>:suite</tt>. When <tt>:each</tt>, the block is executed before each
97
+ # example. When <tt>:all</tt>, the block is executed once per example
98
+ # group, before any of its examples are run. When <tt>:suite</tt> the
99
+ # block is run once before the entire suite is run.
100
+ def append_before(scope = :each, options={}, &proc)
101
+ add_callback(:append_before, scope, options, &proc)
102
+ end
103
+ alias_method :before, :append_before
104
+
105
+ # Prepends a global <tt>before</tt> block to all example groups.
106
+ #
107
+ # See <tt>append_before</tt> for scoping semantics.
108
+ def prepend_before(scope = :each, options={}, &proc)
109
+ add_callback(:prepend_before, scope, options, &proc)
110
+ end
111
+
112
+ # Prepends a global <tt>after</tt> block to all example groups.
113
+ #
114
+ # See <tt>append_before</tt> for scoping semantics.
115
+ def prepend_after(scope = :each, options={}, &proc)
116
+ add_callback(:prepend_after, scope, options, &proc)
117
+ end
118
+ alias_method :after, :prepend_after
119
+
120
+ # Appends a global <tt>after</tt> block to all example groups.
121
+ #
122
+ # See <tt>append_before</tt> for scoping semantics.
123
+ def append_after(scope = :each, options={}, &proc)
124
+ add_callback(:append_after, scope, options, &proc)
125
+ end
126
+
127
+ # DEPRECATED - use Spec::Matchers::DSL instead
128
+ #
129
+ # Defines global predicate matchers. Example:
130
+ #
131
+ # config.predicate_matchers[:swim] = :can_swim?
132
+ #
133
+ # This makes it possible to say:
134
+ #
135
+ # person.should swim # passes if person.can_swim? returns true
136
+ #
137
+ def predicate_matchers
138
+ @predicate_matchers ||= Spec::HashWithDeprecationNotice.new("predicate_matchers", "the new Matcher DSL")
139
+ end
140
+
141
+ # Adds patterns to the list of patterns ignored in the backtrace when a
142
+ # failure is output by rspec. Example:
143
+ #
144
+ # config.ignore_backtrace_patterns /spork/, /shoulda/, "/some/weird/path/"
145
+ #
146
+ # When quiet backtraces are turned on (default), this will exclude any
147
+ # lines that match any of the Regexps and Strings passed.
148
+ #
149
+ def ignore_backtrace_patterns(*patterns)
150
+ @ignored_backtrace_patterns ||= []
151
+ @ignored_backtrace_patterns += patterns
152
+ end
153
+
154
+ def ignored_backtrace_patterns # :nodoc:
155
+ @ignored_backtrace_patterns ||= []
156
+ end
157
+
158
+ def suppress_deprecation_warnings!
159
+ @suppress_deprecation_warnings = true
160
+ end
161
+
162
+ def suppress_deprecation_warnings?
163
+ @suppress_deprecation_warnings ||= false
164
+ end
165
+
166
+ private
167
+
168
+ def include_or_extend(action, *args)
169
+ modules, options = args_and_options(*args)
170
+ [get_type_from_options(options)].flatten.each do |required_example_group|
171
+ required_example_group = required_example_group.to_sym if required_example_group
172
+ modules.each do |mod|
173
+ Spec::Example::ExampleGroupFactory[required_example_group].__send__(action, mod)
174
+ end
175
+ end
176
+ end
177
+
178
+ def add_callback(sym, *args, &proc)
179
+ scope, options = scope_and_options(*args)
180
+ example_group = Spec::Example::ExampleGroupFactory[get_type_from_options(options)]
181
+ example_group.__send__(sym, scope, &proc)
182
+ end
183
+
184
+ def get_type_from_options(options)
185
+ options[:type] || options[:behaviour_type]
186
+ end
187
+
188
+ def mock_framework_path(framework_name)
189
+ "spec/adapters/mock_frameworks/#{framework_name}"
190
+ end
191
+
192
+ def scope_and_options(*args) # :nodoc:
193
+ args, options = args_and_options(*args)
194
+ return scope_from(*args), options
195
+ end
196
+
197
+ def scope_from(*args) # :nodoc:
198
+ args[0] || :each
199
+ end
200
+ end
201
+ end
202
+ end
@@ -0,0 +1,93 @@
1
+ require 'spec/runner/differs/load-diff-lcs'
2
+ require 'pp'
3
+
4
+ module Spec
5
+ module Expectations
6
+ module Differs
7
+ unless defined?(Spec::Expectations::Differs::Default)
8
+ class Default
9
+ def initialize(options)
10
+ @options = options
11
+ end
12
+
13
+ # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
14
+ def diff_as_string(data_new, data_old)
15
+ data_old = data_old.split(/\n/).map! { |e| e.chomp }
16
+ data_new = data_new.split(/\n/).map! { |e| e.chomp }
17
+ output = ""
18
+ diffs = Diff::LCS.diff(data_old, data_new)
19
+ return output if diffs.empty?
20
+ oldhunk = hunk = nil
21
+ file_length_difference = 0
22
+ diffs.each do |piece|
23
+ begin
24
+ hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, context_lines,
25
+ file_length_difference)
26
+ file_length_difference = hunk.file_length_difference
27
+ next unless oldhunk
28
+ # Hunks may overlap, which is why we need to be careful when our
29
+ # diff includes lines of context. Otherwise, we might print
30
+ # redundant lines.
31
+ if (context_lines > 0) and hunk.overlaps?(oldhunk)
32
+ hunk.unshift(oldhunk)
33
+ else
34
+ output << oldhunk.diff(format)
35
+ end
36
+ ensure
37
+ oldhunk = hunk
38
+ output << "\n"
39
+ end
40
+ end
41
+ #Handle the last remaining hunk
42
+ output << oldhunk.diff(format) << "\n"
43
+ end
44
+
45
+ def diff_as_object(target,expected)
46
+ diff_as_string(PP.pp(target,""), PP.pp(expected,""))
47
+ end
48
+
49
+ def diff_as_hash(target, expected)
50
+ contains_hash = false
51
+ contains_array = false
52
+
53
+ extra_expected_keys = expected.keys - target.keys
54
+ extra_target_keys = target.keys - expected.keys
55
+
56
+ o = "\n"
57
+
58
+ o << "Expected hash contains keys that target hash does not: " << extra_expected_keys.inspect << "\n" if !extra_expected_keys.empty?
59
+ o << "Target hash contains keys that expected hash does not: " << extra_target_keys.inspect << "\n" if !extra_target_keys.empty?
60
+
61
+ expected.delete_if do |key, value|
62
+ contains_hash = true if value.is_a?(Hash)
63
+ contains_array = true if value.is_a?(Array)
64
+ target[key] == value
65
+ end
66
+
67
+ expected.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
68
+ o << "Expected the key #{key.inspect} to be #{expected[key].inspect}, but was #{target[key].inspect}\n"
69
+ end
70
+
71
+ o << "\n"
72
+
73
+ if contains_hash || contains_array
74
+ o << diff_as_object(target, expected)
75
+ else
76
+ o
77
+ end
78
+ end
79
+
80
+ protected
81
+ def format
82
+ @options.diff_format
83
+ end
84
+
85
+ def context_lines
86
+ @options.context_lines
87
+ end
88
+ end
89
+
90
+ end
91
+ end
92
+ end
93
+ end