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,71 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class MatchArray #:nodoc:
5
+ include Spec::Matchers::Pretty
6
+
7
+ def initialize(expected)
8
+ @expected = expected
9
+ end
10
+
11
+ def matches?(actual)
12
+ @actual = actual
13
+ @extra_items = difference_between_arrays(@actual, @expected)
14
+ @missing_items = difference_between_arrays(@expected, @actual)
15
+ @extra_items.empty? & @missing_items.empty?
16
+ end
17
+
18
+ def failure_message_for_should
19
+ message = "expected collection contained: #{safe_sort(@expected).inspect}\n"
20
+ message += "actual collection contained: #{safe_sort(@actual).inspect}\n"
21
+ message += "the missing elements were: #{safe_sort(@missing_items).inspect}\n" unless @missing_items.empty?
22
+ message += "the extra elements were: #{safe_sort(@extra_items).inspect}\n" unless @extra_items.empty?
23
+ message
24
+ end
25
+
26
+ def failure_message_for_should_not
27
+ "Matcher does not support should_not"
28
+ end
29
+
30
+ def description
31
+ "contain exactly #{_pretty_print(@expected)}"
32
+ end
33
+
34
+ private
35
+
36
+ def safe_sort(array)
37
+ array.all?{|item| item.respond_to?(:<=>)} ? array.sort : array
38
+ end
39
+
40
+ def difference_between_arrays(array_1, array_2)
41
+ difference = array_1.dup
42
+ array_2.each do |element|
43
+ if index = difference.index(element)
44
+ difference.delete_at(index)
45
+ end
46
+ end
47
+ difference
48
+ end
49
+
50
+
51
+ end
52
+
53
+ # :call-seq:
54
+ # should =~ expected
55
+ #
56
+ # Passes if actual contains all of the expected regardless of order.
57
+ # This works for collections. Pass in multiple args and it will only
58
+ # pass if all args are found in collection.
59
+ #
60
+ # NOTE: there is no should_not version of array.should =~ other_array
61
+ #
62
+ # == Examples
63
+ #
64
+ # [1,2,3].should =~ [1,2,3] # => would pass
65
+ # [1,2,3].should =~ [2,3,1] # => would pass
66
+ # [1,2,3,4].should =~ [1,2,3] # => would fail
67
+ # [1,2,2,3].should =~ [1,2,3] # => would fail
68
+ # [1,2,3].should =~ [1,2,3,4] # => would fail
69
+ OperatorMatcher.register(Array, '=~', Spec::Matchers::MatchArray)
70
+ end
71
+ end
@@ -0,0 +1,132 @@
1
+ module Spec
2
+ module Matchers
3
+ class Matcher
4
+ include Spec::Matchers::InstanceExec
5
+ include Spec::Matchers::Pretty
6
+ include Spec::Matchers
7
+
8
+ attr_reader :expected, :actual
9
+
10
+ def initialize(name, *expected, &declarations)
11
+ @name = name
12
+ @expected = expected
13
+ @actual = nil
14
+ @diffable = false
15
+ @expected_exception = nil
16
+ @messages = {
17
+ :description => lambda {"#{name_to_sentence}#{expected_to_sentence}"},
18
+ :failure_message_for_should => lambda {|actual| "expected #{actual.inspect} to #{name_to_sentence}#{expected_to_sentence}"},
19
+ :failure_message_for_should_not => lambda {|actual| "expected #{actual.inspect} not to #{name_to_sentence}#{expected_to_sentence}"}
20
+ }
21
+ making_declared_methods_public do
22
+ instance_exec(*@expected, &declarations)
23
+ end
24
+ end
25
+
26
+ #Used internally by objects returns by +should+ and +should_not+.
27
+ def matches?(actual)
28
+ @actual = actual
29
+ if @expected_exception
30
+ begin
31
+ instance_exec(actual, &@match_block)
32
+ true
33
+ rescue @expected_exception
34
+ false
35
+ end
36
+ else
37
+ begin
38
+ instance_exec(actual, &@match_block)
39
+ rescue Spec::Expectations::ExpectationNotMetError
40
+ false
41
+ end
42
+ end
43
+ end
44
+
45
+ # See Spec::Matchers
46
+ def match(&block)
47
+ @match_block = block
48
+ end
49
+
50
+ # See Spec::Matchers
51
+ def match_unless_raises(exception=Exception, &block)
52
+ @expected_exception = exception
53
+ match(&block)
54
+ end
55
+
56
+ # See Spec::Matchers
57
+ def failure_message_for_should(&block)
58
+ cache_or_call_cached(:failure_message_for_should, &block)
59
+ end
60
+
61
+ # See Spec::Matchers
62
+ def failure_message_for_should_not(&block)
63
+ cache_or_call_cached(:failure_message_for_should_not, &block)
64
+ end
65
+
66
+ # See Spec::Matchers
67
+ def description(&block)
68
+ cache_or_call_cached(:description, &block)
69
+ end
70
+
71
+ #Used internally by objects returns by +should+ and +should_not+.
72
+ def diffable?
73
+ @diffable
74
+ end
75
+
76
+ # See Spec::Matchers
77
+ def diffable
78
+ @diffable = true
79
+ end
80
+
81
+ # See Spec::Matchers
82
+ def chain(method, &block)
83
+ self.class.class_eval do
84
+ define_method method do |*args|
85
+ block.call(*args)
86
+ self
87
+ end
88
+ end
89
+ end
90
+
91
+ private
92
+
93
+ def making_declared_methods_public # :nodoc:
94
+ # Our home-grown instance_exec in ruby 1.8.6 results in any methods
95
+ # declared in the block eval'd by instance_exec in the block to which we
96
+ # are yielding here are scoped private. This is NOT the case for Ruby
97
+ # 1.8.7 or 1.9.
98
+ #
99
+ # Also, due some crazy scoping that I don't understand, these methods
100
+ # are actually available in the specs (something about the matcher being
101
+ # defined in the scope of Spec::Matchers or within an example), so not
102
+ # doing the following will not cause specs to fail, but they *will*
103
+ # cause features to fail and that will make users unhappy. So don't.
104
+ orig_private_methods = private_methods
105
+ yield
106
+ st = (class << self; self; end)
107
+ (private_methods - orig_private_methods).each {|m| st.__send__ :public, m}
108
+ end
109
+
110
+ def cache_or_call_cached(key, &block)
111
+ block ? cache(key, &block) : call_cached(key)
112
+ end
113
+
114
+ def cache(key, &block)
115
+ @messages[key] = block
116
+ end
117
+
118
+ def call_cached(key)
119
+ @messages[key].arity == 1 ? @messages[key].call(@actual) : @messages[key].call
120
+ end
121
+
122
+ def name_to_sentence
123
+ split_words(@name)
124
+ end
125
+
126
+ def expected_to_sentence
127
+ to_sentence(@expected)
128
+ end
129
+
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,9 @@
1
+ module Spec
2
+ module Matchers
3
+ def method_missing(sym, *args, &block) # :nodoc:
4
+ return Matchers::BePredicate.new(sym, *args, &block) if sym.to_s =~ /^be_/
5
+ return Matchers::Has.new(sym, *args, &block) if sym.to_s =~ /^have_/
6
+ super
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,83 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class OperatorMatcher
5
+ class << self
6
+ def registry
7
+ @registry ||= {}
8
+ end
9
+
10
+ def register(klass, operator, matcher)
11
+ registry[klass] ||= {}
12
+ registry[klass][operator] = matcher
13
+ end
14
+
15
+ def get(klass, operator)
16
+ matcher = registry[klass] && registry[klass][operator]
17
+ unless matcher
18
+ parent_class = registry.keys.detect {|pc| klass <= pc }
19
+ matcher = registry[parent_class] && registry[parent_class][operator]
20
+ end
21
+ matcher
22
+ end
23
+ end
24
+
25
+ def initialize(actual)
26
+ @actual = actual
27
+ end
28
+
29
+ def self.use_custom_matcher_or_delegate(operator)
30
+ define_method(operator) do |expected|
31
+ if matcher = OperatorMatcher.get(@actual.class, operator)
32
+ @actual.send(::Spec::Matchers.last_should, matcher.new(expected))
33
+ else
34
+ eval_match(@actual, operator, expected)
35
+ end
36
+ end
37
+ end
38
+
39
+ ['==', '===', '=~', '>', '>=', '<', '<='].each do |operator|
40
+ use_custom_matcher_or_delegate operator
41
+ end
42
+
43
+ def fail_with_message(message)
44
+ Spec::Expectations.fail_with(message, @expected, @actual)
45
+ end
46
+
47
+ def description
48
+ "#{@operator} #{@expected.inspect}"
49
+ end
50
+
51
+ private
52
+
53
+ def eval_match(actual, operator, expected)
54
+ ::Spec::Matchers.last_matcher = self
55
+ @operator, @expected = operator, expected
56
+ __delegate_operator(actual, operator, expected)
57
+ end
58
+
59
+ end
60
+
61
+ class PositiveOperatorMatcher < OperatorMatcher #:nodoc:
62
+ def __delegate_operator(actual, operator, expected)
63
+ if actual.__send__(operator, expected)
64
+ true
65
+ elsif ['==','===', '=~'].include?(operator)
66
+ fail_with_message("expected: #{expected.inspect},\n got: #{actual.inspect} (using #{operator})")
67
+ else
68
+ fail_with_message("expected: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}")
69
+ end
70
+ end
71
+
72
+ end
73
+
74
+ class NegativeOperatorMatcher < OperatorMatcher #:nodoc:
75
+ def __delegate_operator(actual, operator, expected)
76
+ return false unless actual.__send__(operator, expected)
77
+ return fail_with_message("expected not: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}")
78
+ end
79
+
80
+ end
81
+
82
+ end
83
+ end
@@ -0,0 +1,37 @@
1
+ module Spec
2
+ module Matchers
3
+ module Pretty
4
+ def split_words(sym)
5
+ sym.to_s.gsub(/_/,' ')
6
+ end
7
+
8
+ def to_sentence(words=[])
9
+ words = words.map{|w| w.inspect}
10
+ case words.length
11
+ when 0
12
+ ""
13
+ when 1
14
+ " #{words[0]}"
15
+ when 2
16
+ " #{words[0]} and #{words[1]}"
17
+ else
18
+ " #{words[0...-1].join(', ')}, and #{words[-1]}"
19
+ end
20
+ end
21
+
22
+ def _pretty_print(array)
23
+ result = ""
24
+ array.each_with_index do |item, index|
25
+ if index < (array.length - 2)
26
+ result << "#{item.inspect}, "
27
+ elsif index < (array.length - 1)
28
+ result << "#{item.inspect} and "
29
+ else
30
+ result << "#{item.inspect}"
31
+ end
32
+ end
33
+ result
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,131 @@
1
+ module Spec
2
+ module Matchers
3
+ class RaiseException #:nodoc:
4
+ def initialize(expected_exception_or_message=Exception, expected_message=nil, &block)
5
+ @block = block
6
+ @actual_exception = nil
7
+ case expected_exception_or_message
8
+ when String, Regexp
9
+ @expected_exception, @expected_message = Exception, expected_exception_or_message
10
+ else
11
+ @expected_exception, @expected_message = expected_exception_or_message, expected_message
12
+ end
13
+ end
14
+
15
+ def matches?(given_proc)
16
+ @raised_expected_exception = false
17
+ @with_expected_message = false
18
+ @eval_block = false
19
+ @eval_block_passed = false
20
+ begin
21
+ given_proc.call
22
+ rescue @expected_exception => @actual_exception
23
+ @raised_expected_exception = true
24
+ @with_expected_message = verify_message
25
+ rescue Exception => @actual_exception
26
+ # This clause should be empty, but rcov will not report it as covered
27
+ # unless something (anything) is executed within the clause
28
+ rcov_exception_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
29
+ end
30
+
31
+ unless negative_expectation?
32
+ eval_block if @raised_expected_exception && @with_expected_message && @block
33
+ end
34
+
35
+ (@raised_expected_exception & @with_expected_message) ? (@eval_block ? @eval_block_passed : true) : false
36
+ end
37
+
38
+ def eval_block
39
+ @eval_block = true
40
+ begin
41
+ @block[@actual_exception]
42
+ @eval_block_passed = true
43
+ rescue Exception => err
44
+ @actual_exception = err
45
+ end
46
+ end
47
+
48
+ def verify_message
49
+ case @expected_message
50
+ when nil
51
+ true
52
+ when Regexp
53
+ @expected_message =~ @actual_exception.message
54
+ else
55
+ @expected_message == @actual_exception.message
56
+ end
57
+ end
58
+
59
+ def failure_message_for_should
60
+ @eval_block ? @actual_exception.message : "expected #{expected_exception}#{given_exception}"
61
+ end
62
+
63
+ def failure_message_for_should_not
64
+ "expected no #{expected_exception}#{given_exception}"
65
+ end
66
+
67
+ def description
68
+ "raise #{expected_exception}"
69
+ end
70
+
71
+ private
72
+ def expected_exception
73
+ case @expected_message
74
+ when nil
75
+ @expected_exception
76
+ when Regexp
77
+ "#{@expected_exception} with message matching #{@expected_message.inspect}"
78
+ else
79
+ "#{@expected_exception} with #{@expected_message.inspect}"
80
+ end
81
+ end
82
+
83
+ def given_exception
84
+ @actual_exception.nil? ? " but nothing was raised" : ", got #{@actual_exception.inspect}"
85
+ end
86
+
87
+ def negative_expectation?
88
+ # YES - I'm a bad person... help me find a better way - ryand
89
+ caller.first(3).find { |s| s =~ /should_not/ }
90
+ end
91
+ end
92
+
93
+ # :call-seq:
94
+ # should raise_exception()
95
+ # should raise_exception(NamedError)
96
+ # should raise_exception(NamedError, String)
97
+ # should raise_exception(NamedError, Regexp)
98
+ # should raise_exception() { |exception| ... }
99
+ # should raise_exception(NamedError) { |exception| ... }
100
+ # should raise_exception(NamedError, String) { |exception| ... }
101
+ # should raise_exception(NamedError, Regexp) { |exception| ... }
102
+ # should_not raise_exception()
103
+ # should_not raise_exception(NamedError)
104
+ # should_not raise_exception(NamedError, String)
105
+ # should_not raise_exception(NamedError, Regexp)
106
+ #
107
+ # With no args, matches if any exception is raised.
108
+ # With a named exception, matches only if that specific exception is raised.
109
+ # With a named exception and messsage specified as a String, matches only if both match.
110
+ # With a named exception and messsage specified as a Regexp, matches only if both match.
111
+ # Pass an optional block to perform extra verifications on the exception matched
112
+ #
113
+ # == Examples
114
+ #
115
+ # lambda { do_something_risky }.should raise_exception
116
+ # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError)
117
+ # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError) { |exception| exception.data.should == 42 }
118
+ # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError, "that was too risky")
119
+ # lambda { do_something_risky }.should raise_exception(PoorRiskDecisionError, /oo ri/)
120
+ #
121
+ # lambda { do_something_risky }.should_not raise_exception
122
+ # lambda { do_something_risky }.should_not raise_exception(PoorRiskDecisionError)
123
+ # lambda { do_something_risky }.should_not raise_exception(PoorRiskDecisionError, "that was too risky")
124
+ # lambda { do_something_risky }.should_not raise_exception(PoorRiskDecisionError, /oo ri/)
125
+ def raise_exception(exception=Exception, message=nil, &block)
126
+ Matchers::RaiseException.new(exception, message, &block)
127
+ end
128
+
129
+ alias_method :raise_error, :raise_exception
130
+ end
131
+ end