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
data/License.txt ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2005-2010 The RSpec Development Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,44 @@
1
+ == RSpec
2
+
3
+ Behaviour Driven Development for Ruby
4
+
5
+ This is the repository for rspec-1.x. For more information, please
6
+ see http://rspec.info.
7
+
8
+ If you're looking for rspec-2 (and if you're not, what are you waiting for?),
9
+ see:
10
+
11
+ * http://relishapp.com/rspec
12
+ * http://github.com/rspec/rspec
13
+
14
+ == Install
15
+
16
+ gem install rspec
17
+
18
+ == Synopsis
19
+
20
+ describe Account do
21
+ context "transfering money" do
22
+ it "deposits transfer amount to the other account" do
23
+ source = Account.new(50, :USD)
24
+ target = mock('target account')
25
+ target.should_receive(:deposit).with(Money.new(5, :USD))
26
+ source.transfer(5, :USD).to(target)
27
+ end
28
+
29
+ it "reduces its balance by the transfer amount" do
30
+ source = Account.new(50, :USD)
31
+ target = stub('target account')
32
+ source.transfer(5, :USD).to(target)
33
+ source.balance.should == Money.new(45, :USD)
34
+ end
35
+ end
36
+ end
37
+
38
+ $ spec ./spec/account_spec.rb --format nested
39
+ Account
40
+ transfering money
41
+ deposits transfer amount to the other account
42
+ reduces its balance by the transfer amount
43
+
44
+ 2 examples, 0 failures
data/Rakefile ADDED
@@ -0,0 +1,110 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ $:.unshift 'lib'
5
+
6
+ require 'spec/version'
7
+ require 'spec/rake/spectask'
8
+ require 'spec/ruby'
9
+
10
+ # Some of the tasks are in separate files since they are also part of the website documentation
11
+ load 'resources/rake/examples.rake'
12
+ load 'resources/rake/examples_with_rcov.rake'
13
+ load 'resources/rake/failing_examples_with_html.rake'
14
+ load 'resources/rake/verify_rcov.rake'
15
+
16
+ task :cleanup_rcov_files do
17
+ rm_rf 'coverage.data'
18
+ end
19
+
20
+ if RUBY_VERSION =~ /^1.8/
21
+ task :default => [:cleanup_rcov_files, :features, :verify_rcov]
22
+ else
23
+ task :default => [:spec, :features]
24
+ end
25
+
26
+ desc "Run all specs"
27
+ Spec::Rake::SpecTask.new(:spec) do |t|
28
+ t.spec_files = FileList['spec/**/*_spec.rb']
29
+ t.spec_opts = ['--options', 'spec/spec.opts']
30
+ end
31
+
32
+ namespace :spec do
33
+ desc "Run all specs with rcov"
34
+ Spec::Rake::SpecTask.new(:rcov) do |t|
35
+ t.spec_files = FileList['spec/**/*_spec.rb']
36
+ t.spec_opts = ['--options', 'spec/spec.opts']
37
+ t.rcov = true
38
+ t.rcov_dir = 'coverage'
39
+ t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
40
+ t.rcov_opts << '--sort coverage --text-summary --aggregate coverage.data'
41
+ end
42
+
43
+ desc "Run files listed in spec/spec_files.txt"
44
+ Spec::Rake::SpecTask.new(:focus) do |t|
45
+ if File.exists?('spec/spec_files.txt')
46
+ t.spec_files = File.readlines('spec/spec_files.txt').collect{|f| f.chomp}
47
+ end
48
+ end
49
+ end
50
+
51
+ begin
52
+ require 'cucumber/rake/task'
53
+ desc "Run Cucumber features"
54
+ if RUBY_VERSION =~ /^1.8/
55
+ Cucumber::Rake::Task.new :features do |t|
56
+ t.rcov = true
57
+ t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
58
+ t.rcov_opts << '--no-html --aggregate coverage.data'
59
+ t.cucumber_opts = %w{--format progress}
60
+ end
61
+ else
62
+ task :features do
63
+ sh 'cucumber --profile no_heckle'
64
+ end
65
+ end
66
+ rescue LoadError
67
+ puts "You need cucumber installed to run cucumber tasks"
68
+ end
69
+
70
+ desc "Run failing examples (see failure output)"
71
+ Spec::Rake::SpecTask.new('failing_examples') do |t|
72
+ t.spec_files = FileList['failing_examples/**/*_spec.rb']
73
+ t.spec_opts = ['--options', 'spec/spec.opts']
74
+ end
75
+
76
+ def egrep(pattern)
77
+ Dir['**/*.rb'].each do |fn|
78
+ count = 0
79
+ open(fn) do |f|
80
+ while line = f.gets
81
+ count += 1
82
+ if line =~ pattern
83
+ puts "#{fn}:#{count}:#{line}"
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ desc "Look for TODO and FIXME tags in the code"
91
+ task :todo do
92
+ egrep /(FIXME|TODO|TBD)/
93
+ end
94
+
95
+ desc "Verifies that there is no uncommitted code"
96
+ task :verify_committed do
97
+ IO.popen('git status') do |io|
98
+ io.each_line do |line|
99
+ raise "\n!!! Do a git commit first !!!\n\n" if line =~ /^#\s*modified:/
100
+ end
101
+ end
102
+ end
103
+
104
+ task :clobber => :clobber_tmp
105
+
106
+ task :clobber_tmp do
107
+ cmd = %q[rm -r tmp]
108
+ puts cmd
109
+ system cmd if test ?d, 'tmp'
110
+ end
data/Ruby1.9.rdoc ADDED
@@ -0,0 +1,31 @@
1
+ = RSpec and Ruby 1.9
2
+
3
+ RSpec runs on Ruby 1.9.1 with the following caveats.
4
+
5
+ == Test::Unit
6
+
7
+ RSpec/Test::Unit interop will run with the test-unit-1.2.3 gem, but you must install it.
8
+
9
+ == Class Variables
10
+
11
+ Due to changes in scoping rules, class variables within example groups are not
12
+ supported in Ruby 1.9.
13
+
14
+ describe "a class variable" do
15
+ @@class_variable = "a class variable"
16
+
17
+ it "can access class variables in examples in Ruby 1.8" do
18
+ with_ruby 1.8 do
19
+ @@class_variable.should == "a class variable"
20
+ end
21
+ end
22
+
23
+ it "can NOT access class variables in examples in Ruby 1.9" do
24
+ with_ruby 1.9 do
25
+ lambda do
26
+ @@class_variable.should == "a class variable"
27
+ end.should raise_error(NameError)
28
+ end
29
+ end
30
+ end
31
+
data/TODO.txt ADDED
@@ -0,0 +1,17 @@
1
+ == Refactoring
2
+
3
+ ** global predictate matchers should be stored in run_options
4
+ * eliminate dependency on global options and configuration
5
+ ** the only place they should exist is in the Runner, which should manage them
6
+
7
+ == Future
8
+
9
+ * do SOMETHING with the website
10
+ * separate the underlying framework from the DSL
11
+ * be able to do everything with classes and methods
12
+ * tweak raise_error rdoc to show only one arg
13
+
14
+ == rspec-2.0
15
+
16
+ * rename top level namespace to Rspec and commands to 'rspec' and 'autorspec'
17
+ * continue to support Spec 'spec' and 'autospec' as aliases for a reasonable time
data/Upgrade.rdoc ADDED
@@ -0,0 +1,260 @@
1
+ = Upgrade to 1.3.0
2
+
3
+ == What's changed
4
+
5
+ === +be_true+ and +be_false+
6
+
7
+ These methods now align with Ruby's conditional semantics:
8
+
9
+ * +be_false+ passes for +false+ and +nil+
10
+ * +be_true+ passes for everything else
11
+
12
+ This is a change from the previous behaviour (which wasn't working correctly
13
+ anyway), which was supposed to treat +be_true+ as <tt>equal(true)</tt>, and +be_false+ as
14
+ <tt>equal(false)</tt>.
15
+
16
+ If the actual values +true+ and +false+ are meaningful to your examples, you'll
17
+ want to change the to use <tt>equal(true)</tt> and <tt>equal(false)</tt> (or
18
+ <tt>==(true)</tt> and <tt>==(false)</tt>).
19
+
20
+ === +raise_exception+
21
+
22
+ We changed the +raise_error+ matcher to +raise_exception+, and aliased it with
23
+ +raise_error+. This maintains backward compatibility, and also gives you the
24
+ option of being more precise in specs about what is expected.
25
+
26
+ === Matcher DSL
27
+
28
+ ==== +match+ rescues from +ExpectationNotMetErrror+ by default
29
+
30
+ This allows you to wrap other expectations in the +match+ method. Consider
31
+ this matcher:
32
+
33
+ Spec::Matchers.define :teach do |subject|
34
+ match do |teacher|
35
+ teacher.subjects.should include(subject)
36
+ end
37
+ end
38
+
39
+ The block passed to +match+ is called internally by Rspec, and is expected to
40
+ return a boolean value. In this case, if <tt>should include(subject)</tt>
41
+ fails, it raises an +ExpectationNotMetError+.
42
+
43
+ Beginning with rspec-1.3.0, when the match block raises an
44
+ +ExpectationNotMetError+, it is captured and the block returns +false+.
45
+ Otherwise it returns +true+, so it works like any other matcher.
46
+
47
+ ==== match_unless_raises
48
+
49
+ The new +match_unless_raises+ method allows you to wrap <tt>Test::Unit</tt>
50
+ assertions by capturing +AssertionFailedError+ and returning false, just as the
51
+ +match+ method now does with +ExpectationNotMetError+.
52
+
53
+ Spec::Matchers.define :teach do |subject|
54
+ match_unless_raises Test::Unit::AssertionFailedError do |teacher|
55
+ assert teacher.subjects.include?(subject)
56
+ end
57
+ end
58
+
59
+ = Upgrade to rspec-1.2.9
60
+
61
+ == What's new
62
+
63
+ === spec/spec.opts
64
+
65
+ If you have a spec/spec.opts file, the spec command will now use that
66
+ automatically as long as you don't include any options on the command line.
67
+
68
+ === let()
69
+
70
+ Writing specs tends to follow a regular pattern of using local variables,
71
+ discovering duplication, and then having to convert to local variables to
72
+ instance variables by adding an "@" symbol. The let() method assigns the result
73
+ of a lazy eval'd block as the return value of an instance method using the same
74
+ name. This way you can go from this:
75
+
76
+ describe Subscription do
77
+ it "does something" do
78
+ subscription = Subscription.create :limit => 1
79
+ subscription...
80
+ end
81
+
82
+ it "does something else" do
83
+ subscription = Subscription.create :limit => 1
84
+ subscription...
85
+ end
86
+ end
87
+
88
+ to this:
89
+
90
+ describe Subscription do
91
+ let(:subscription) { Subscription.create :limit => 1 }
92
+
93
+ it "does something" do
94
+ subscription...
95
+ end
96
+
97
+ it "does something else" do
98
+ subscription...
99
+ end
100
+ end
101
+
102
+ === its()
103
+
104
+ If you're in the habit of writing one-liners using implicit subject, this new
105
+ its() feature is for you. Here's the basic idea:
106
+
107
+ describe Array do
108
+ its(:length) { should == 0 }
109
+ end
110
+
111
+ = Upgrade to rspec-1.2.3-1.2.7
112
+
113
+ == What's Changed
114
+
115
+ === Matcher DSL
116
+
117
+ Use Spec::Matchers.define instead of Spec::Matchers.create (which is now
118
+ deprecated).
119
+
120
+ === Explicit Predicate Matchers are deprecated
121
+
122
+ With the addition of the new Matcher DSL the old, confusing, and
123
+ almost-nobody-uses-it explicit predicate matcher functionality's days are now
124
+ numbered.
125
+
126
+ If you're not familiar with this feature, don't worry about it. If you have anything
127
+ that looks like this:
128
+
129
+ predicate_matchers[:swim] = :can_swim?
130
+
131
+ Or this
132
+
133
+ config.predicate_matchers[:swim] = :can_swim?
134
+
135
+ Change it to this:
136
+
137
+ Spec::Matchers.define :swim do
138
+ match do |potential_swimmer|
139
+ potential_swimmer.can_swim?
140
+ end
141
+ end
142
+
143
+ == Custom Formatters
144
+
145
+ If you have an custom formatter, the <tt>add_example_group</tt> method has
146
+ been changed to <tt>example_group_started</tt>, and kept as an alias so your
147
+ formatters will still work. Though not yet, <tt>add_example_group</tt> will be
148
+ deprecated in a future minor release, and removed in a future major release,
149
+ so we recommend you make this change now.
150
+
151
+ = Upgrade to rspec-1.2.2
152
+
153
+ == What's Changed
154
+
155
+ === <tt>require 'rubygems' unless ENV['NO_RUBYGEMS']</tt>
156
+
157
+ After minor public outcry and confusion, we restored necessary references to
158
+ rubygems in rspec. If you use a different mechanism for managing gems, just
159
+ set a <tt>NO_RUBYGEMS</tt> environment variable (to any non-nil value).
160
+
161
+ === Proxies and locations
162
+
163
+ This is probably only interesting to you if you use custom formatters.
164
+
165
+ Formatters now receive Spec::Example::ExampleGroupProxy and
166
+ Spec::Example::ExampleGroup objects with cohesive APIs for reporting. See the
167
+ RDoc for those classes and Spec::Runner::Formatter::BaseFormatter for more
168
+ information.
169
+
170
+ == What's new
171
+
172
+ === The new matcher DSL works with test/unit (without the rest of rspec)
173
+
174
+ We'll be separating this out to its own gem for rspec 2.0, but for now, just install
175
+ rspec >= 1.2.1 and add the following to your <tt>test_helper</tt> file:
176
+
177
+ require 'spec/expectations'
178
+ class Test::Unit::TestCase
179
+ include Spec::Matchers
180
+ end
181
+
182
+ This will add <tt>should()</tt> and <tt>should_not()</tt> to your objects, make all of
183
+ rspec's built-in matchers available to your tests, INCLUDING rspec's DSL for
184
+ creating matchers (see below, under Upgrade to rspec-1.2.0)
185
+
186
+ === debugger
187
+
188
+ If you have ruby-debug installed, you can set a breakpoint by adding <tt>debugger()</tt>
189
+ in your code:
190
+
191
+ # some code .....
192
+ debugger
193
+ # some more code ....
194
+
195
+ ... and using the <tt>--debugger</tt> or <tt>-u</tt> command line option.
196
+
197
+ spec path/to/file.rb --debugger
198
+
199
+ = Upgrade to rspec-1.2.0
200
+
201
+ == What's Changed
202
+
203
+ === WARNINGS
204
+
205
+ * If you use the ruby command to run specs instead of the spec command, you'll
206
+ need to require 'spec/autorun' or they won't run. This won't affect you if
207
+ you use the spec command or the Spec::Rake::SpecTask that ships with RSpec.
208
+
209
+ * require 'spec/test/unit' to invoke test/unit interop if you're using
210
+ RSpec's core (this is handled implicitly with spec-rails)
211
+
212
+ * setup and teardown are gone - use before and after instead
213
+
214
+ * you can still use setup and teardown if you're using
215
+ Test::Unit::TestCase as the base ExampleGroup class (which is implicit
216
+ in rspec-rails)
217
+
218
+ * The matcher protocol has been improved. The old protocol is still supported,
219
+ but we added support for two new methods that speak a bit more clearly:
220
+
221
+ failure_message => failure_message_for_should
222
+ negative_failure_message => failure_message_for_should_not
223
+
224
+ * All references to rubygems have been removed from within rspec's code.
225
+
226
+ * See http://gist.github.com/54177 for rationale and suggestions on
227
+ alternative approaches to loading rubygems
228
+
229
+ == What's New
230
+
231
+ === Ruby 1.9
232
+
233
+ RSpec now works with Ruby 1.9.1. See http://wiki.github.com/dchelimsky/rspec/ruby-191
234
+ for useful information.
235
+
236
+ === Improved heckle integration
237
+
238
+ RSpec works with heckle again! Gotta use heckle >= 1.4.2 for this to work
239
+ though, and it only works with ruby-1.8.6 and 1.8.7 (heckle doesn't support
240
+ 1.9.1 yet).
241
+
242
+ [sudo] gem install heckle --version ">=1.4.2"
243
+ spec spec/game/mastermind.rb --heckle Game::Mastermind
244
+
245
+ === New Matcher DSL
246
+
247
+ We've added a new DSL for generating custom matchers very simply and cleanly.
248
+ We'll still support the simple_matcher method, so never fear if you're using
249
+ that, but we recommend that you start developing your new matchers with this
250
+ new syntax.
251
+
252
+ Spec::Matchers.create :be_a_multiple_of do |smaller|
253
+ match do |bigger|
254
+ bigger % smaller == 0
255
+ end
256
+ end
257
+
258
+ 9.should be_a_multiple_of(3)
259
+
260
+ See <tt>features/matchers/define_matcher.feature</tt> for more examples