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,249 @@
1
+ require 'spec/matchers/dsl'
2
+
3
+ Spec::Matchers.define :be_true do
4
+ match do |actual|
5
+ !!actual
6
+ end
7
+ end
8
+
9
+ Spec::Matchers.define :be_false do
10
+ match do |actual|
11
+ !actual
12
+ end
13
+ end
14
+
15
+ Spec::Matchers.define :be_nil do
16
+ match do |actual|
17
+ actual.nil?
18
+ end
19
+
20
+ failure_message_for_should do |actual|
21
+ "expected nil, got #{actual.inspect}"
22
+ end
23
+
24
+ failure_message_for_should_not do
25
+ "expected not nil, got nil"
26
+ end
27
+ end
28
+
29
+ module Spec
30
+ module Matchers
31
+
32
+ class Be #:nodoc:
33
+ include Spec::Matchers::Pretty
34
+
35
+ def initialize(*args, &block)
36
+ @args = args
37
+ end
38
+
39
+ def matches?(actual)
40
+ @actual = actual
41
+ !!@actual
42
+ end
43
+
44
+ def failure_message_for_should
45
+ "expected #{@actual.inspect} to evaluate to true"
46
+ end
47
+
48
+ def failure_message_for_should_not
49
+ "expected #{@actual.inspect} to evaluate to false"
50
+ end
51
+
52
+ def description
53
+ "be"
54
+ end
55
+
56
+ [:==, :<, :<=, :>=, :>, :===].each do |operator|
57
+ define_method operator do |operand|
58
+ BeComparedTo.new(operand, operator)
59
+ end
60
+ end
61
+
62
+ private
63
+
64
+ def args_to_s
65
+ @args.empty? ? "" : parenthesize(inspected_args.join(', '))
66
+ end
67
+
68
+ def parenthesize(string)
69
+ return "(#{string})"
70
+ end
71
+
72
+ def inspected_args
73
+ @args.collect{|a| a.inspect}
74
+ end
75
+
76
+ def expected_to_sentence
77
+ split_words(@expected)
78
+ end
79
+
80
+ def args_to_sentence
81
+ to_sentence(@args)
82
+ end
83
+
84
+ end
85
+
86
+ class BeComparedTo < Be
87
+
88
+ def initialize(operand, operator)
89
+ @expected, @operator = operand, operator
90
+ @args = []
91
+ end
92
+
93
+ def matches?(actual)
94
+ @actual = actual
95
+ @actual.__send__(@operator, @expected)
96
+ end
97
+
98
+ def failure_message_for_should
99
+ "expected #{@operator} #{@expected}, got #{@actual.inspect}"
100
+ end
101
+
102
+ def failure_message_for_should_not
103
+ message = <<-MESSAGE
104
+ 'should_not be #{@operator} #{@expected}' not only FAILED,
105
+ it is a bit confusing.
106
+ MESSAGE
107
+
108
+ raise message << ([:===,:==].include?(@operator) ?
109
+ "It might be more clearly expressed without the \"be\"?" :
110
+ "It might be more clearly expressed in the positive?")
111
+ end
112
+
113
+ def description
114
+ "be #{@operator} #{expected_to_sentence}#{args_to_sentence}"
115
+ end
116
+
117
+ end
118
+
119
+ class BePredicate < Be
120
+
121
+ def initialize(*args, &block)
122
+ @expected = parse_expected(args.shift)
123
+ @args = args
124
+ @block = block
125
+ end
126
+
127
+ def matches?(actual)
128
+ @actual = actual
129
+ begin
130
+ return @result = actual.__send__(predicate, *@args, &@block)
131
+ rescue NameError => predicate_missing_error
132
+ "this needs to be here or rcov will not count this branch even though it's executed in a code example"
133
+ end
134
+
135
+ begin
136
+ return @result = actual.__send__(present_tense_predicate, *@args, &@block)
137
+ rescue NameError
138
+ raise predicate_missing_error
139
+ end
140
+ end
141
+
142
+ def failure_message_for_should
143
+ "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
144
+ end
145
+
146
+ def failure_message_for_should_not
147
+ "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
148
+ end
149
+
150
+ def description
151
+ "#{prefix_to_sentence}#{expected_to_sentence}#{args_to_sentence}"
152
+ end
153
+
154
+ private
155
+
156
+ def predicate
157
+ "#{@expected}?".to_sym
158
+ end
159
+
160
+ def present_tense_predicate
161
+ "#{@expected}s?".to_sym
162
+ end
163
+
164
+ def parse_expected(expected)
165
+ @prefix, expected = prefix_and_expected(expected)
166
+ expected
167
+ end
168
+
169
+ def prefix_and_expected(symbol)
170
+ symbol.to_s =~ /^(be_(an?_)?)(.*)/
171
+ return $1, $3
172
+ end
173
+
174
+ def prefix_to_sentence
175
+ split_words(@prefix)
176
+ end
177
+
178
+ end
179
+
180
+ class BeSameAs < Be
181
+
182
+ def initialize(*args, &block)
183
+ @expected = args.shift
184
+ @args = args
185
+ end
186
+
187
+ def matches?(actual)
188
+ @actual = actual
189
+ @actual.equal?(@expected)
190
+ end
191
+
192
+ def failure_message_for_should
193
+ "expected #{@expected}, got #{@actual.inspect}"
194
+ end
195
+
196
+ def failure_message_for_should_not
197
+ "expected not #{@expected}, got #{@actual.inspect}"
198
+ end
199
+
200
+ def description
201
+ "be #{expected_to_sentence}#{args_to_sentence}"
202
+ end
203
+
204
+ end
205
+
206
+ # :call-seq:
207
+ # should be_true
208
+ # should be_false
209
+ # should be_nil
210
+ # should be_[arbitrary_predicate](*args)
211
+ # should_not be_nil
212
+ # should_not be_[arbitrary_predicate](*args)
213
+ #
214
+ # Given true, false, or nil, will pass if actual value is
215
+ # true, false or nil (respectively). Given no args means
216
+ # the caller should satisfy an if condition (to be or not to be).
217
+ #
218
+ # Predicates are any Ruby method that ends in a "?" and returns true or false.
219
+ # Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
220
+ # convert that into a query against the target object.
221
+ #
222
+ # The arbitrary_predicate feature will handle any predicate
223
+ # prefixed with "be_an_" (e.g. be_an_instance_of), "be_a_" (e.g. be_a_kind_of)
224
+ # or "be_" (e.g. be_empty), letting you choose the prefix that best suits the predicate.
225
+ #
226
+ # == Examples
227
+ #
228
+ # target.should be_true
229
+ # target.should be_false
230
+ # target.should be_nil
231
+ # target.should_not be_nil
232
+ #
233
+ # collection.should be_empty #passes if target.empty?
234
+ # target.should_not be_empty #passes unless target.empty?
235
+ # target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
236
+ def be(*args)
237
+ args.empty? ?
238
+ Matchers::Be.new :
239
+ Matchers::BeSameAs.new(*args)
240
+ end
241
+
242
+ # passes if target.kind_of?(klass)
243
+ def be_a(klass)
244
+ be_a_kind_of(klass)
245
+ end
246
+
247
+ alias_method :be_an, :be_a
248
+ end
249
+ end
@@ -0,0 +1,32 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should be_close(expected, delta)
5
+ # should_not be_close(expected, delta)
6
+ #
7
+ # Passes if actual == expected +/- delta
8
+ #
9
+ # == Example
10
+ #
11
+ # result.should be_close(3.0, 0.5)
12
+ def be_close(expected, delta)
13
+ Matcher.new :be_close, expected, delta do |_expected_, _delta_|
14
+ match do |actual|
15
+ (actual - _expected_).abs < _delta_
16
+ end
17
+
18
+ failure_message_for_should do |actual|
19
+ "expected #{_expected_} +/- (< #{_delta_}), got #{actual}"
20
+ end
21
+
22
+ failure_message_for_should_not do |actual|
23
+ "expected #{_expected_} +/- (< #{_delta_}), got #{actual}"
24
+ end
25
+
26
+ description do
27
+ "be close to #{_expected_} (within +- #{_delta_})"
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should be_instance_of(expected)
5
+ # should be_an_instance_of(expected)
6
+ # should_not be_instance_of(expected)
7
+ # should_not be_an_instance_of(expected)
8
+ #
9
+ # Passes if actual.instance_of?(expected)
10
+ #
11
+ # == Examples
12
+ #
13
+ # 5.should be_instance_of(Fixnum)
14
+ # 5.should_not be_instance_of(Numeric)
15
+ # 5.should_not be_instance_of(Float)
16
+ def be_an_instance_of(expected)
17
+ Matcher.new :be_an_instance_of, expected do |_expected_|
18
+ match do |actual|
19
+ actual.instance_of?(_expected_)
20
+ end
21
+ end
22
+ end
23
+
24
+ alias_method :be_instance_of, :be_an_instance_of
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should be_kind_of(expected)
5
+ # should be_a_kind_of(expected)
6
+ # should_not be_kind_of(expected)
7
+ # should_not be_a_kind_of(expected)
8
+ #
9
+ # Passes if actual.kind_of?(expected)
10
+ #
11
+ # == Examples
12
+ #
13
+ # 5.should be_kind_of(Fixnum)
14
+ # 5.should be_kind_of(Numeric)
15
+ # 5.should_not be_kind_of(Float)
16
+ def be_a_kind_of(expected)
17
+ Matcher.new :be_a_kind_of, expected do |_expected_|
18
+ match do |actual|
19
+ actual.kind_of?(_expected_)
20
+ end
21
+ end
22
+ end
23
+
24
+ alias_method :be_kind_of, :be_a_kind_of
25
+ end
26
+ end
@@ -0,0 +1,151 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ #Based on patch from Wilson Bilkovich
5
+ class Change #:nodoc:
6
+ def initialize(receiver=nil, message=nil, &block)
7
+ @message = message || "result"
8
+ @value_proc = block || lambda {receiver.__send__(message)}
9
+ @to = @from = @minimum = @maximum = @amount = nil
10
+ end
11
+
12
+ def matches?(event_proc)
13
+ raise_block_syntax_error if block_given?
14
+
15
+ @before = evaluate_value_proc
16
+ event_proc.call
17
+ @after = evaluate_value_proc
18
+
19
+ return (@to = false) if @from unless @from == @before
20
+ return false if @to unless @to == @after
21
+ return (@before + @amount == @after) if @amount
22
+ return ((@after - @before) >= @minimum) if @minimum
23
+ return ((@after - @before) <= @maximum) if @maximum
24
+ return @before != @after
25
+ end
26
+
27
+ def raise_block_syntax_error
28
+ raise MatcherError.new(<<-MESSAGE
29
+ block passed to should or should_not change must use {} instead of do/end
30
+ MESSAGE
31
+ )
32
+ end
33
+
34
+ def evaluate_value_proc
35
+ @value_proc.call
36
+ end
37
+
38
+ def failure_message_for_should
39
+ if @to
40
+ "#{@message} should have been changed to #{@to.inspect}, but is now #{@after.inspect}"
41
+ elsif @from
42
+ "#{@message} should have initially been #{@from.inspect}, but was #{@before.inspect}"
43
+ elsif @amount
44
+ "#{@message} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}"
45
+ elsif @minimum
46
+ "#{@message} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}"
47
+ elsif @maximum
48
+ "#{@message} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}"
49
+ else
50
+ "#{@message} should have changed, but is still #{@before.inspect}"
51
+ end
52
+ end
53
+
54
+ def actual_delta
55
+ @after - @before
56
+ end
57
+
58
+ def failure_message_for_should_not
59
+ "#{@message} should not have changed, but did change from #{@before.inspect} to #{@after.inspect}"
60
+ end
61
+
62
+ def by(amount)
63
+ @amount = amount
64
+ self
65
+ end
66
+
67
+ def by_at_least(minimum)
68
+ @minimum = minimum
69
+ self
70
+ end
71
+
72
+ def by_at_most(maximum)
73
+ @maximum = maximum
74
+ self
75
+ end
76
+
77
+ def to(to)
78
+ @to = to
79
+ self
80
+ end
81
+
82
+ def from (from)
83
+ @from = from
84
+ self
85
+ end
86
+
87
+ def description
88
+ "change ##{@message}"
89
+ end
90
+ end
91
+
92
+ # :call-seq:
93
+ # should change(receiver, message, &block)
94
+ # should change(receiver, message, &block).by(value)
95
+ # should change(receiver, message, &block).from(old).to(new)
96
+ # should_not change(receiver, message, &block)
97
+ #
98
+ # Allows you to specify that a Proc will cause some value to change.
99
+ #
100
+ # == Examples
101
+ #
102
+ # lambda {
103
+ # team.add_player(player)
104
+ # }.should change(roster, :count)
105
+ #
106
+ # lambda {
107
+ # team.add_player(player)
108
+ # }.should change(roster, :count).by(1)
109
+ #
110
+ # lambda {
111
+ # team.add_player(player)
112
+ # }.should change(roster, :count).by_at_least(1)
113
+ #
114
+ # lambda {
115
+ # team.add_player(player)
116
+ # }.should change(roster, :count).by_at_most(1)
117
+ #
118
+ # string = "string"
119
+ # lambda {
120
+ # string.reverse!
121
+ # }.should change { string }.from("string").to("gnirts")
122
+ #
123
+ # lambda {
124
+ # person.happy_birthday
125
+ # }.should change(person, :birthday).from(32).to(33)
126
+ #
127
+ # lambda {
128
+ # employee.develop_great_new_social_networking_app
129
+ # }.should change(employee, :title).from("Mail Clerk").to("CEO")
130
+ #
131
+ # Evaluates <tt>receiver.message</tt> or <tt>block</tt> before and after
132
+ # it evaluates the c object (generated by the lambdas in the examples
133
+ # above).
134
+ #
135
+ # Then compares the values before and after the <tt>receiver.message</tt>
136
+ # and evaluates the difference compared to the expected difference.
137
+ #
138
+ # == WARNING
139
+ # <tt>should_not change</tt> only supports the form with no
140
+ # subsequent calls to <tt>by</tt>, <tt>by_at_least</tt>,
141
+ # <tt>by_at_most</tt>, <tt>to</tt> or <tt>from</tt>.
142
+ #
143
+ # blocks passed to <tt>should</tt> <tt>change</tt> and <tt>should_not</tt>
144
+ # <tt>change</tt> must use the <tt>{}</tt> form (<tt>do/end</tt> is not
145
+ # supported).
146
+ #
147
+ def change(receiver=nil, message=nil, &block)
148
+ Matchers::Change.new(receiver, message, &block)
149
+ end
150
+ end
151
+ end