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,164 @@
1
+ module Spec
2
+ # == Example Groups and Code Examples
3
+ #
4
+ # A Code Example is an executable example of how a bit of code is expected
5
+ # to behave.
6
+ #
7
+ # An Example Group is a group of code examples.
8
+ #
9
+ # RSpec exposes a DSL to describe groups of examples.
10
+ #
11
+ # describe Account do
12
+ # it "should have a balance of $0" do
13
+ # account = Account.new
14
+ # account.balance.should == Money.new(0, :dollars)
15
+ # end
16
+ # end
17
+ #
18
+ # == Before and After
19
+ #
20
+ # You can use the <tt>before()</tt> and <tt>after()</tt> methods to extract
21
+ # common code within an Example Group. Both methods take an optional scope
22
+ # argument so you can run the block before :each example or before :all
23
+ # examples
24
+ #
25
+ # describe "..." do
26
+ # before :all do
27
+ # ...
28
+ # end
29
+ #
30
+ # before :each do
31
+ # ...
32
+ # end
33
+ #
34
+ # it "should do something" do
35
+ # ...
36
+ # end
37
+ #
38
+ # it "should do something else" do
39
+ # ...
40
+ # end
41
+ #
42
+ # after :each do
43
+ # ...
44
+ # end
45
+ #
46
+ # after :all do
47
+ # ...
48
+ # end
49
+ #
50
+ # end
51
+ #
52
+ # The <tt>before :each</tt> block will run before each of the examples, once
53
+ # for each example. Likewise, the <tt>after :each</tt> block will run after
54
+ # each of the examples.
55
+ #
56
+ # It is also possible to specify a <tt>before :all</tt> and <tt>after
57
+ # :all</tt> block that will run only once for each example group, before the
58
+ # first <code>before :each</code> and after the last <code>after
59
+ # :each</code> respectively. The use of these is generally discouraged,
60
+ # because it introduces dependencies between the examples. Still, it might
61
+ # prove useful for very expensive operations if you know what you are doing.
62
+ #
63
+ # == Local helper methods
64
+ #
65
+ # You can include local helper methods by simply expressing them within an
66
+ # example group:
67
+ #
68
+ # describe "..." do
69
+ #
70
+ # it "..." do
71
+ # helper_method
72
+ # end
73
+ #
74
+ # def helper_method
75
+ # ...
76
+ # end
77
+ #
78
+ # end
79
+ #
80
+ # == Included helper methods
81
+ #
82
+ # You can include helper methods in multiple example groups by expressing
83
+ # them within a module, and then including that module in your example
84
+ # groups:
85
+ #
86
+ # module AccountExampleHelperMethods
87
+ # def helper_method
88
+ # ...
89
+ # end
90
+ # end
91
+ #
92
+ # describe "A new account" do
93
+ # include AccountExampleHelperMethods
94
+ # before do
95
+ # @account = Account.new
96
+ # end
97
+ #
98
+ # it "should have a balance of $0" do
99
+ # helper_method
100
+ # @account.balance.should eql(Money.new(0, :dollars))
101
+ # end
102
+ # end
103
+ #
104
+ # == Shared Example Groups
105
+ #
106
+ # You can define a shared example group, that may be used on other groups
107
+ #
108
+ # share_examples_for "All Editions" do
109
+ # it "all editions behaviour" ...
110
+ # end
111
+ #
112
+ # describe SmallEdition do
113
+ # it_should_behave_like "All Editions"
114
+ #
115
+ # it "should do small edition stuff" do
116
+ # ...
117
+ # end
118
+ # end
119
+ #
120
+ # You can also assign the shared group to a module and include that
121
+ #
122
+ # share_as :AllEditions do
123
+ # it "should do all editions stuff" ...
124
+ # end
125
+ #
126
+ # describe SmallEdition do
127
+ # it_should_behave_like AllEditions
128
+ #
129
+ # it "should do small edition stuff" do
130
+ # ...
131
+ # end
132
+ # end
133
+ #
134
+ # And, for those of you who prefer to use something more like Ruby, you can
135
+ # just include the module directly
136
+ #
137
+ # describe SmallEdition do
138
+ # include AllEditions
139
+ #
140
+ # it "should do small edition stuff" do
141
+ # ...
142
+ # end
143
+ # end
144
+ module Example
145
+ end
146
+ end
147
+
148
+ require 'timeout'
149
+ require 'spec/example/args_and_options'
150
+ require 'spec/example/predicate_matchers'
151
+ require 'spec/example/example_group_proxy'
152
+ require 'spec/example/example_proxy'
153
+ require 'spec/example/subject'
154
+ require 'spec/example/before_and_after_hooks'
155
+ require 'spec/example/pending'
156
+ require 'spec/example/module_reopening_fix'
157
+ require 'spec/example/example_group_hierarchy'
158
+ require 'spec/example/example_group_methods'
159
+ require 'spec/example/example_methods'
160
+ require 'spec/example/example_group'
161
+ require 'spec/example/shared_example_group'
162
+ require 'spec/example/example_group_factory'
163
+ require 'spec/example/errors'
164
+ require 'spec/example/example_matcher'
@@ -0,0 +1,27 @@
1
+ module Spec
2
+ module Example
3
+ module ArgsAndOptions
4
+ def args_and_options(*args) # :nodoc:
5
+ options = Hash === args.last ? args.pop : {}
6
+ return args, options
7
+ end
8
+
9
+ def add_options(args, options={}) # :nodoc:
10
+ args << {} unless Hash === args.last
11
+ args.extend WithOptions
12
+ args.options.merge!(options)
13
+ args.options
14
+ end
15
+
16
+ def set_location(options, location) # :nodoc:
17
+ options[:location] ||= location
18
+ end
19
+
20
+ module WithOptions # :nodoc:
21
+ def options
22
+ last
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,93 @@
1
+ module Spec
2
+ module Example
3
+ module BeforeAndAfterHooks
4
+ class << self
5
+ def before_suite_parts # :nodoc:
6
+ @before_suite_parts ||= []
7
+ end
8
+
9
+ def after_suite_parts # :nodoc:
10
+ @after_suite_parts ||= []
11
+ end
12
+ end
13
+
14
+ # Registers a block to be executed before examples. <tt>scope</tt> can be
15
+ # <tt>:each</tt> (default), <tt>:all</tt>, or <tt>:suite</tt>. When
16
+ # <tt>:each</tt>, the block is executed before each example. When
17
+ # <tt>:all</tt>, the block is executed only once before any examples are
18
+ # run.
19
+ def append_before(scope = :each, &block)
20
+ before_parts(scope) << block
21
+ end
22
+ alias_method :before, :append_before
23
+
24
+ # Registers a block to be executed before each example.
25
+ # This method prepends +block+ to existing before blocks.
26
+ #
27
+ # See <tt>append_before</tt> for scoping semantics.
28
+ def prepend_before(scope = :each, &block)
29
+ before_parts(scope).unshift(block)
30
+ end
31
+
32
+ # Registers a block to be executed after each example.
33
+ # This method prepends +block+ to existing after blocks.
34
+ #
35
+ # See <tt>append_before</tt> for scoping semantics.
36
+ def prepend_after(scope = :each, &block)
37
+ after_parts(scope).unshift(block)
38
+ end
39
+ alias_method :after, :prepend_after
40
+
41
+ # Registers a block to be executed after each example.
42
+ # This method appends +block+ to existing after blocks.
43
+ #
44
+ # See <tt>append_before</tt> for scoping semantics.
45
+ def append_after(scope = :each, &block)
46
+ after_parts(scope) << block
47
+ end
48
+
49
+ def before_each_parts # :nodoc:
50
+ @before_each_parts ||= []
51
+ end
52
+
53
+ def after_each_parts # :nodoc:
54
+ @after_each_parts ||= []
55
+ end
56
+
57
+ def before_all_parts # :nodoc:
58
+ @before_all_parts ||= []
59
+ end
60
+
61
+ def after_all_parts # :nodoc:
62
+ @after_all_parts ||= []
63
+ end
64
+
65
+ def before_suite_parts # :nodoc:
66
+ BeforeAndAfterHooks.before_suite_parts
67
+ end
68
+
69
+ def after_suite_parts # :nodoc:
70
+ BeforeAndAfterHooks.after_suite_parts
71
+ end
72
+
73
+ private
74
+
75
+ def before_parts(scope)
76
+ case scope
77
+ when :each; before_each_parts
78
+ when :all; before_all_parts
79
+ when :suite; before_suite_parts
80
+ end
81
+ end
82
+
83
+ def after_parts(scope)
84
+ case scope
85
+ when :each; after_each_parts
86
+ when :all; after_all_parts
87
+ when :suite; after_suite_parts
88
+ end
89
+ end
90
+
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,25 @@
1
+ module Spec
2
+ module Example
3
+ class ExamplePendingError < StandardError; end
4
+
5
+ class NotYetImplementedError < ExamplePendingError
6
+ MESSAGE = "Not Yet Implemented"
7
+ def initialize
8
+ super(MESSAGE)
9
+ end
10
+ end
11
+
12
+ class PendingExampleFixedError < StandardError; end
13
+
14
+ class NoDescriptionError < ArgumentError
15
+ class << self
16
+ def message(kind, location)
17
+ "No description supplied for #{kind} declared on #{location}"
18
+ end
19
+ end
20
+ def initialize(kind, location)
21
+ super(self.class.message(kind, location))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,10 @@
1
+ module Spec
2
+ module Example
3
+ # Base class for customized example groups. Use this if you
4
+ # want to make a custom example group.
5
+ class ExampleGroup
6
+ extend Spec::Example::ExampleGroupMethods
7
+ include Spec::Example::ExampleMethods
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,82 @@
1
+ module Spec
2
+ module Example
3
+
4
+ class ExampleGroupFactory
5
+ module ClassMethods
6
+ include Spec::Example::ArgsAndOptions
7
+
8
+ def reset
9
+ @example_group_types = nil
10
+ default(ExampleGroup)
11
+ end
12
+
13
+ def example_group_creation_listeners
14
+ @example_group_creation_listeners ||= []
15
+ end
16
+
17
+ def register_example_group(klass)
18
+ example_group_creation_listeners.each do |listener|
19
+ listener.register_example_group(klass)
20
+ end
21
+ end
22
+
23
+ def create_shared_example_group(*args, &example_group_block) # :nodoc:
24
+ ::Spec::Example::SharedExampleGroup.register(*args, &example_group_block)
25
+ end
26
+
27
+ def create_example_group(*args, &block)
28
+ raise ArgumentError if args.empty? || block.nil?
29
+ add_options(args)
30
+ superclass = determine_superclass(args.last)
31
+ superclass.describe(*args, &block)
32
+ end
33
+
34
+ # Registers an example group class +klass+ with the symbol +type+. For
35
+ # example:
36
+ #
37
+ # Spec::Example::ExampleGroupFactory.register(:farm, FarmExampleGroup)
38
+ #
39
+ # With that you can append a hash with :type => :farm to the describe
40
+ # method and it will load an instance of FarmExampleGroup.
41
+ #
42
+ # describe Pig, :type => :farm do
43
+ # ...
44
+ #
45
+ # If you don't use the hash explicitly, <tt>describe</tt> will
46
+ # implicitly use an instance of FarmExampleGroup for any file loaded
47
+ # from the <tt>./spec/farm</tt> directory.
48
+ def register(key, example_group_class)
49
+ @example_group_types[key.to_sym] = example_group_class
50
+ end
51
+
52
+ # Sets the default ExampleGroup class
53
+ def default(example_group_class)
54
+ Spec.__send__ :remove_const, :ExampleGroup if Spec.const_defined?(:ExampleGroup)
55
+ Spec.const_set(:ExampleGroup, example_group_class)
56
+ old = @example_group_types
57
+ @example_group_types = Hash.new(example_group_class)
58
+ @example_group_types.merge!(old) if old
59
+ end
60
+
61
+ def [](key)
62
+ @example_group_types[key]
63
+ end
64
+
65
+ protected
66
+
67
+ def determine_superclass(opts)
68
+ if type = opts[:type]
69
+ self[type]
70
+ elsif opts[:location] =~ /spec(\\|\/)(#{@example_group_types.keys.sort_by{|k| k.to_s.length}.reverse.join('|')})/
71
+ self[$2 == '' ? nil : $2.to_sym]
72
+ else
73
+ self[nil]
74
+ end
75
+ end
76
+
77
+ end
78
+ extend ClassMethods
79
+ self.reset
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,53 @@
1
+ module Spec
2
+ module Example
3
+ class ExampleGroupHierarchy < Array
4
+ def initialize(example_group_class)
5
+ push example_group_class
6
+ if example_group_class.respond_to?(:superclass) && example_group_class.superclass.respond_to?(:example_group_hierarchy)
7
+ unshift example_group_class.superclass.example_group_hierarchy
8
+ flatten!
9
+ end
10
+ end
11
+
12
+ def run_before_all(example)
13
+ example.eval_each_fail_fast(before_all_parts)
14
+ end
15
+
16
+ def run_before_each(example)
17
+ example.eval_each_fail_fast(before_each_parts)
18
+ end
19
+
20
+ def run_after_each(example)
21
+ example.eval_each_fail_slow(after_each_parts)
22
+ end
23
+
24
+ def run_after_all(example)
25
+ example.eval_each_fail_slow(after_all_parts)
26
+ end
27
+
28
+ def before_all_parts
29
+ @before_all_parts ||= collect {|klass| klass.before_all_parts}.flatten
30
+ end
31
+
32
+ def before_each_parts
33
+ @before_each_parts ||= collect {|klass| klass.before_each_parts}.flatten
34
+ end
35
+
36
+ def after_each_parts
37
+ @after_each_parts ||= reverse.collect {|klass| klass.after_each_parts}.flatten
38
+ end
39
+
40
+ def after_all_parts
41
+ @after_all_parts ||= reverse.collect {|klass| klass.after_all_parts}.flatten
42
+ end
43
+
44
+ def nested_descriptions
45
+ @nested_descriptions ||= collect {|eg| nested_description_from(eg) == "" ? nil : nested_description_from(eg) }.compact
46
+ end
47
+
48
+ def nested_description_from(example_group)
49
+ example_group.description_args.join
50
+ end
51
+ end
52
+ end
53
+ end