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,51 @@
1
+ module Spec
2
+ module Mocks
3
+
4
+ class ArgumentExpectation
5
+ attr_reader :args
6
+
7
+ def initialize(args, &block)
8
+ @args = args
9
+ @matchers_block = block
10
+ @match_any_args = false
11
+ @matchers = nil
12
+
13
+ if ArgumentMatchers::AnyArgsMatcher === args.first
14
+ @match_any_args = true
15
+ elsif ArgumentMatchers::NoArgsMatcher === args.first
16
+ @matchers = []
17
+ else
18
+ @matchers = args.collect {|arg| matcher_for(arg)}
19
+ end
20
+ end
21
+
22
+ def matcher_for(arg)
23
+ return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg)
24
+ return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
25
+ return ArgumentMatchers::EqualityProxy.new(arg)
26
+ end
27
+
28
+ def is_matcher?(obj)
29
+ return obj.respond_to?(:matches?) & obj.respond_to?(:description)
30
+ end
31
+
32
+ def args_match?(given_args)
33
+ match_any_args? || matchers_block_matches?(given_args) || matchers_match?(given_args)
34
+ end
35
+
36
+ def matchers_block_matches?(given_args)
37
+ @matchers_block ? @matchers_block.call(*given_args) : nil
38
+ end
39
+
40
+ def matchers_match?(given_args)
41
+ @matchers == given_args
42
+ end
43
+
44
+ def match_any_args?
45
+ @match_any_args
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,237 @@
1
+ module Spec
2
+ module Mocks
3
+
4
+ # ArgumentMatchers are messages that you can include in message
5
+ # expectations to match arguments against a broader check than simple
6
+ # equality.
7
+ #
8
+ # With the exception of any_args() and no_args(), the matchers
9
+ # are all positional - they match against the arg in the given position.
10
+ module ArgumentMatchers
11
+
12
+ class AnyArgsMatcher
13
+ def description
14
+ "any args"
15
+ end
16
+ end
17
+
18
+ class NoArgsMatcher
19
+ def description
20
+ "no args"
21
+ end
22
+ end
23
+
24
+ class AnyArgMatcher
25
+ def initialize(ignore)
26
+ end
27
+
28
+ def ==(other)
29
+ true
30
+ end
31
+
32
+ def description
33
+ "anything"
34
+ end
35
+ end
36
+
37
+ class RegexpMatcher
38
+ def initialize(regexp)
39
+ @regexp = regexp
40
+ end
41
+
42
+ def ==(value)
43
+ return value =~ @regexp unless value.is_a?(Regexp)
44
+ value == @regexp
45
+ end
46
+ end
47
+
48
+ class BooleanMatcher
49
+ def initialize(ignore)
50
+ end
51
+
52
+ def ==(value)
53
+ TrueClass === value || FalseClass === value
54
+ end
55
+ end
56
+
57
+ class HashIncludingMatcher
58
+ def initialize(expected)
59
+ @expected = expected
60
+ end
61
+
62
+ def ==(actual)
63
+ @expected.each do | key, value |
64
+ return false unless actual.has_key?(key) && value == actual[key]
65
+ end
66
+ true
67
+ rescue NoMethodError => ex
68
+ return false
69
+ end
70
+
71
+ def description
72
+ "hash_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
73
+ end
74
+ end
75
+
76
+ class HashNotIncludingMatcher
77
+ def initialize(expected)
78
+ @expected = expected
79
+ end
80
+
81
+ def ==(actual)
82
+ @expected.each do | key, value |
83
+ return false if actual.has_key?(key) && value == actual[key]
84
+ end
85
+ true
86
+ rescue NoMethodError => ex
87
+ return false
88
+ end
89
+
90
+ def description
91
+ "hash_not_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
92
+ end
93
+ end
94
+
95
+ class DuckTypeMatcher
96
+ def initialize(*methods_to_respond_to)
97
+ @methods_to_respond_to = methods_to_respond_to
98
+ end
99
+
100
+ def ==(value)
101
+ @methods_to_respond_to.all? { |sym| value.respond_to?(sym) }
102
+ end
103
+ end
104
+
105
+ class MatcherMatcher
106
+ def initialize(matcher)
107
+ @matcher = matcher
108
+ end
109
+
110
+ def ==(value)
111
+ @matcher.matches?(value)
112
+ end
113
+ end
114
+
115
+ class EqualityProxy
116
+ def initialize(given)
117
+ @given = given
118
+ end
119
+
120
+ def ==(expected)
121
+ @given == expected
122
+ end
123
+ end
124
+
125
+ class InstanceOf
126
+ def initialize(klass)
127
+ @klass = klass
128
+ end
129
+
130
+ def ==(actual)
131
+ actual.instance_of?(@klass)
132
+ end
133
+ end
134
+
135
+ class KindOf
136
+ def initialize(klass)
137
+ @klass = klass
138
+ end
139
+
140
+ def ==(actual)
141
+ actual.kind_of?(@klass)
142
+ end
143
+ end
144
+
145
+ # :call-seq:
146
+ # object.should_receive(:message).with(no_args())
147
+ #
148
+ # Passes if no arguments are passed along with the message
149
+ def no_args
150
+ NoArgsMatcher.new
151
+ end
152
+
153
+ # :call-seq:
154
+ # object.should_receive(:message).with(any_args())
155
+ #
156
+ # Passes if object receives :message with any args at all. This is
157
+ # really a more explicit variation of object.should_receive(:message)
158
+ def any_args
159
+ AnyArgsMatcher.new
160
+ end
161
+
162
+ # :call-seq:
163
+ # object.should_receive(:message).with(anything())
164
+ #
165
+ # Passes as long as there is an argument.
166
+ def anything
167
+ AnyArgMatcher.new(nil)
168
+ end
169
+
170
+ # :call-seq:
171
+ # object.should_receive(:message).with(duck_type(:hello))
172
+ # object.should_receive(:message).with(duck_type(:hello, :goodbye))
173
+ #
174
+ # Passes if the argument responds to the specified messages.
175
+ #
176
+ # == Examples
177
+ #
178
+ # array = []
179
+ # display = mock('display')
180
+ # display.should_receive(:present_names).with(duck_type(:length, :each))
181
+ # => passes
182
+ def duck_type(*args)
183
+ DuckTypeMatcher.new(*args)
184
+ end
185
+
186
+ # :call-seq:
187
+ # object.should_receive(:message).with(boolean())
188
+ #
189
+ # Passes if the argument is boolean.
190
+ def boolean
191
+ BooleanMatcher.new(nil)
192
+ end
193
+
194
+ # :call-seq:
195
+ # object.should_receive(:message).with(hash_including(:key => val))
196
+ # object.should_receive(:message).with(hash_including(:key))
197
+ # object.should_receive(:message).with(hash_including(:key, :key2 => val2))
198
+ # Passes if the argument is a hash that includes the specified key(s) or key/value
199
+ # pairs. If the hash includes other keys, it will still pass.
200
+ def hash_including(*args)
201
+ HashIncludingMatcher.new(anythingize_lonely_keys(*args))
202
+ end
203
+
204
+ # :call-seq:
205
+ # object.should_receive(:message).with(hash_not_including(:key => val))
206
+ # object.should_receive(:message).with(hash_not_including(:key))
207
+ # object.should_receive(:message).with(hash_not_including(:key, :key2 => :val2))
208
+ #
209
+ # Passes if the argument is a hash that doesn't include the specified key(s) or key/value
210
+ def hash_not_including(*args)
211
+ HashNotIncludingMatcher.new(anythingize_lonely_keys(*args))
212
+ end
213
+
214
+ # Passes if arg.instance_of?(klass)
215
+ def instance_of(klass)
216
+ InstanceOf.new(klass)
217
+ end
218
+
219
+ alias_method :an_instance_of, :instance_of
220
+
221
+ # Passes if arg.kind_of?(klass)
222
+ def kind_of(klass)
223
+ KindOf.new(klass)
224
+ end
225
+
226
+ alias_method :a_kind_of, :kind_of
227
+
228
+ private
229
+
230
+ def anythingize_lonely_keys(*args)
231
+ hash = args.last.class == Hash ? args.delete_at(-1) : {}
232
+ args.each { | arg | hash[arg] = anything }
233
+ hash
234
+ end
235
+ end
236
+ end
237
+ end
@@ -0,0 +1,92 @@
1
+ module Spec
2
+ module Mocks
3
+ class ErrorGenerator
4
+ attr_writer :opts
5
+
6
+ def initialize(target, name, options={})
7
+ @declared_as = options[:__declared_as] || 'Mock'
8
+ @target = target
9
+ @name = name
10
+ end
11
+
12
+ def opts
13
+ @opts ||= {}
14
+ end
15
+
16
+ def raise_unexpected_message_error(sym, *args)
17
+ __raise "#{intro} received unexpected message :#{sym}#{arg_message(*args)}"
18
+ end
19
+
20
+ def raise_unexpected_message_args_error(expectation, *args)
21
+ expected_args = format_args(*expectation.expected_args)
22
+ actual_args = args.empty? ? "(no args)" : format_args(*args)
23
+ __raise "#{intro} received #{expectation.sym.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
24
+ end
25
+
26
+ def raise_expectation_error(sym, expected_received_count, actual_received_count, *args)
27
+ __raise "#{intro} expected :#{sym}#{arg_message(*args)} #{count_message(expected_received_count)}, but received it #{count_message(actual_received_count)}"
28
+ end
29
+
30
+ def raise_out_of_order_error(sym)
31
+ __raise "#{intro} received :#{sym} out of order"
32
+ end
33
+
34
+ def raise_block_failed_error(sym, detail)
35
+ __raise "#{intro} received :#{sym} but passed block failed with: #{detail}"
36
+ end
37
+
38
+ def raise_missing_block_error(args_to_yield)
39
+ __raise "#{intro} asked to yield |#{arg_list(*args_to_yield)}| but no block was passed"
40
+ end
41
+
42
+ def raise_wrong_arity_error(args_to_yield, arity)
43
+ __raise "#{intro} yielded |#{arg_list(*args_to_yield)}| to block with arity of #{arity}"
44
+ end
45
+
46
+ private
47
+
48
+ def intro
49
+ if @name
50
+ "#{@declared_as} #{@name.inspect}"
51
+ elsif Mock === @target
52
+ @declared_as
53
+ elsif Class === @target
54
+ "<#{@target.inspect} (class)>"
55
+ elsif @target
56
+ @target
57
+ else
58
+ "nil"
59
+ end
60
+ end
61
+
62
+ def __raise(message)
63
+ message = opts[:message] unless opts[:message].nil?
64
+ Kernel::raise(Spec::Mocks::MockExpectationError, message)
65
+ end
66
+
67
+ def arg_message(*args)
68
+ " with " + format_args(*args)
69
+ end
70
+
71
+ def format_args(*args)
72
+ args.empty? ? "(no args)" : "(" + arg_list(*args) + ")"
73
+ end
74
+
75
+ def arg_list(*args)
76
+ args.collect {|arg| arg.respond_to?(:description) ? arg.description : arg.inspect}.join(", ")
77
+ end
78
+
79
+ def count_message(count)
80
+ return "at least #{pretty_print(count.abs)}" if count < 0
81
+ return pretty_print(count)
82
+ end
83
+
84
+ def pretty_print(count)
85
+ return "once" if count == 1
86
+ return "twice" if count == 2
87
+ return "#{count} times"
88
+ end
89
+
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,10 @@
1
+ module Spec
2
+ module Mocks
3
+ class MockExpectationError < Exception
4
+ end
5
+
6
+ class AmbiguousReturnError < StandardError
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,69 @@
1
+ module Spec
2
+ module Mocks
3
+ module ExampleMethods
4
+ include Spec::Mocks::ArgumentMatchers
5
+
6
+ # Shortcut for creating an instance of Spec::Mocks::Mock.
7
+ #
8
+ # +name+ is used for failure reporting, so you should use the
9
+ # role that the double is playing in the example.
10
+ #
11
+ # +stubs_and_options+ lets you assign options and stub values
12
+ # at the same time. The only option available is :null_object.
13
+ # Anything else is treated as a stub value.
14
+ #
15
+ # == Examples
16
+ #
17
+ # thing = double("thing", :a => "A")
18
+ # thing.a == "A" => true
19
+ #
20
+ # person = double("thing", :name => "Joe", :email => "joe@domain.com")
21
+ # person.name => "Joe"
22
+ # person.email => "joe@domain.com"
23
+ def double(*args)
24
+ __declare_double('Double', *args)
25
+ end
26
+
27
+ # Alias for double
28
+ def mock(*args)
29
+ __declare_double('Mock', *args)
30
+ end
31
+
32
+ # Alias for double
33
+ def stub(*args)
34
+ __declare_double('Stub', *args)
35
+ end
36
+
37
+ def __declare_double(declared_as, *args) # :nodoc:
38
+ args << {} unless Hash === args.last
39
+ args.last[:__declared_as] = declared_as
40
+ Spec::Mocks::Mock.new(*args)
41
+ end
42
+
43
+ # DEPRECATED - use double('name').as_null_object instead
44
+ #
45
+ # Shortcut for creating a mock object that will return itself in response
46
+ # to any message it receives that it hasn't been explicitly instructed
47
+ # to respond to.
48
+ def stub_everything(name = 'stub')
49
+ Spec.warn(<<-WARNING)
50
+
51
+ DEPRECATION: stub_everything('#{name}') is deprecated and will be removed
52
+ from a future version of rspec. Please use double('#{name}').as_null_object
53
+ (or stub('#{name}').as_null_object or mock('#{name}').as_null_object instead.
54
+
55
+ WARNING
56
+ mock(name, :null_object => true)
57
+ end
58
+
59
+ # Disables warning messages about expectations being set on nil.
60
+ #
61
+ # By default warning messages are issued when expectations are set on nil. This is to
62
+ # prevent false-positives and to catch potential bugs early on.
63
+ def allow_message_expectations_on_nil
64
+ Proxy.allow_message_expectations_on_nil
65
+ end
66
+
67
+ end
68
+ end
69
+ end