rspec 1.3.2 → 2.0.0.a2

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 (398) hide show
  1. data/.document +4 -6
  2. data/.gitignore +4 -14
  3. data/License.txt +1 -1
  4. data/README.markdown +46 -0
  5. data/Rakefile +26 -100
  6. data/lib/rspec.rb +4 -0
  7. data/lib/rspec/version.rb +14 -0
  8. data/rspec.gemspec +46 -19
  9. metadata +72 -673
  10. data/.autotest +0 -5
  11. data/Gemfile +0 -20
  12. data/History.rdoc +0 -1560
  13. data/README.rdoc +0 -44
  14. data/Ruby1.9.rdoc +0 -31
  15. data/TODO.txt +0 -17
  16. data/Upgrade.rdoc +0 -260
  17. data/bin/autospec +0 -4
  18. data/bin/spec +0 -5
  19. data/cucumber.yml +0 -5
  20. data/example_spec.rb +0 -4
  21. data/examples/failing/README.txt +0 -11
  22. data/examples/failing/diffing_spec.rb +0 -36
  23. data/examples/failing/failing_implicit_docstrings_example.rb +0 -17
  24. data/examples/failing/failure_in_after.rb +0 -10
  25. data/examples/failing/failure_in_before.rb +0 -10
  26. data/examples/failing/mocking_example.rb +0 -38
  27. data/examples/failing/mocking_with_flexmock.rb +0 -26
  28. data/examples/failing/mocking_with_mocha.rb +0 -25
  29. data/examples/failing/mocking_with_rr.rb +0 -27
  30. data/examples/failing/partial_mock_example.rb +0 -18
  31. data/examples/failing/pending_example.rb +0 -7
  32. data/examples/failing/predicate_example.rb +0 -32
  33. data/examples/failing/raising_example.rb +0 -47
  34. data/examples/failing/syntax_error_example.rb +0 -7
  35. data/examples/failing/team_spec.rb +0 -41
  36. data/examples/failing/timeout_behaviour.rb +0 -5
  37. data/examples/passing/custom_formatter.rb +0 -11
  38. data/examples/passing/custom_matchers.rb +0 -54
  39. data/examples/passing/dynamic_spec.rb +0 -7
  40. data/examples/passing/file_accessor.rb +0 -18
  41. data/examples/passing/file_accessor_spec.rb +0 -37
  42. data/examples/passing/filtered_formatter.rb +0 -17
  43. data/examples/passing/filtered_formatter_example.rb +0 -31
  44. data/examples/passing/greeter_spec.rb +0 -30
  45. data/examples/passing/helper_method_example.rb +0 -12
  46. data/examples/passing/implicit_docstrings_example.rb +0 -16
  47. data/examples/passing/io_processor.rb +0 -8
  48. data/examples/passing/io_processor_spec.rb +0 -20
  49. data/examples/passing/mocking_example.rb +0 -25
  50. data/examples/passing/multi_threaded_example_group_runner.rb +0 -26
  51. data/examples/passing/nested_classes_example.rb +0 -35
  52. data/examples/passing/options_example.rb +0 -29
  53. data/examples/passing/options_formatter.rb +0 -20
  54. data/examples/passing/partial_mock_example.rb +0 -27
  55. data/examples/passing/pending_example.rb +0 -18
  56. data/examples/passing/predicate_example.rb +0 -25
  57. data/examples/passing/shared_example_group_example.rb +0 -43
  58. data/examples/passing/shared_stack_examples.rb +0 -36
  59. data/examples/passing/simple_matcher_example.rb +0 -29
  60. data/examples/passing/stack.rb +0 -36
  61. data/examples/passing/stack_spec.rb +0 -63
  62. data/examples/passing/stack_spec_with_nested_example_groups.rb +0 -66
  63. data/examples/passing/stubbing_example.rb +0 -67
  64. data/examples/passing/yielding_example.rb +0 -31
  65. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
  66. data/features-pending/cli/conditional_exclusion.feature +0 -39
  67. data/features-pending/heckle/heckle.feature +0 -56
  68. data/features/before_and_after_blocks/before_and_after_blocks.feature +0 -167
  69. data/features/command_line/line_number_option.feature +0 -56
  70. data/features/command_line/line_number_option_with_example_with_no_name.feature +0 -22
  71. data/features/example_groups/define_example_attribute.feature +0 -41
  72. data/features/example_groups/example_group_with_should_methods.feature +0 -29
  73. data/features/example_groups/implicit_docstrings.feature +0 -59
  74. data/features/example_groups/nested_groups.feature +0 -32
  75. data/features/expectations/customized_message.feature +0 -54
  76. data/features/expectations/expect_change.feature +0 -65
  77. data/features/expectations/expect_error.feature +0 -44
  78. data/features/extensions/custom_example_group.feature +0 -19
  79. data/features/formatters/custom_formatter.feature +0 -30
  80. data/features/formatters/nested_formatter.feature +0 -32
  81. data/features/interop/cucumber_stubs_dont_leak.feature +0 -11
  82. data/features/interop/examples_and_tests_together.feature +0 -84
  83. data/features/interop/rspec_output.feature +0 -25
  84. data/features/interop/test_but_not_test_unit.feature +0 -26
  85. data/features/interop/test_case_with_should_methods.feature +0 -46
  86. data/features/load_paths/add_lib_to_load_path.feature +0 -20
  87. data/features/load_paths/add_spec_to_load_path.feature +0 -20
  88. data/features/matchers/define_diffable_matcher.feature +0 -26
  89. data/features/matchers/define_matcher.feature +0 -179
  90. data/features/matchers/define_matcher_outside_rspec.feature +0 -37
  91. data/features/matchers/define_matcher_with_fluent_interface.feature +0 -48
  92. data/features/matchers/define_wrapped_matcher.feature +0 -56
  93. data/features/matchers/match_unless_raises.feature +0 -60
  94. data/features/matchers/match_unless_raises_unexpected_error.feature +0 -39
  95. data/features/mock_framework_integration/use_flexmock.feature +0 -27
  96. data/features/mock_framework_integration/use_mocha.feature +0 -27
  97. data/features/mock_framework_integration/use_rr.feature +0 -27
  98. data/features/mocks/block_local_expectations.feature +0 -62
  99. data/features/mocks/mix_stubs_and_mocks.feature +0 -22
  100. data/features/mocks/stub_implementation.feature +0 -26
  101. data/features/pending/pending_examples.feature +0 -81
  102. data/features/runner/specify_line_number.feature +0 -32
  103. data/features/spec_helper/spec_helper.feature +0 -25
  104. data/features/step_definitions/running_rspec_steps.rb +0 -52
  105. data/features/step_definitions/stubbing_steps.rb +0 -16
  106. data/features/subject/explicit_subject.feature +0 -31
  107. data/features/subject/implicit_subject.feature +0 -43
  108. data/features/support/env.rb +0 -83
  109. data/features/support/matchers/smart_match.rb +0 -31
  110. data/init.rb +0 -9
  111. data/lib/autotest/discover.rb +0 -3
  112. data/lib/autotest/rspec.rb +0 -54
  113. data/lib/spec.rb +0 -8
  114. data/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -24
  115. data/lib/spec/adapters/mock_frameworks/mocha.rb +0 -25
  116. data/lib/spec/adapters/mock_frameworks/rr.rb +0 -22
  117. data/lib/spec/adapters/mock_frameworks/rspec.rb +0 -21
  118. data/lib/spec/autorun.rb +0 -3
  119. data/lib/spec/deprecation.rb +0 -41
  120. data/lib/spec/dsl.rb +0 -1
  121. data/lib/spec/dsl/main.rb +0 -93
  122. data/lib/spec/example.rb +0 -164
  123. data/lib/spec/example/args_and_options.rb +0 -27
  124. data/lib/spec/example/before_and_after_hooks.rb +0 -93
  125. data/lib/spec/example/errors.rb +0 -25
  126. data/lib/spec/example/example_group.rb +0 -10
  127. data/lib/spec/example/example_group_factory.rb +0 -82
  128. data/lib/spec/example/example_group_hierarchy.rb +0 -53
  129. data/lib/spec/example/example_group_methods.rb +0 -287
  130. data/lib/spec/example/example_group_proxy.rb +0 -61
  131. data/lib/spec/example/example_matcher.rb +0 -43
  132. data/lib/spec/example/example_methods.rb +0 -152
  133. data/lib/spec/example/example_proxy.rb +0 -41
  134. data/lib/spec/example/module_reopening_fix.rb +0 -43
  135. data/lib/spec/example/pending.rb +0 -18
  136. data/lib/spec/example/predicate_matchers.rb +0 -46
  137. data/lib/spec/example/shared_example_group.rb +0 -59
  138. data/lib/spec/example/subject.rb +0 -114
  139. data/lib/spec/expectations.rb +0 -35
  140. data/lib/spec/expectations/errors.rb +0 -12
  141. data/lib/spec/expectations/extensions.rb +0 -1
  142. data/lib/spec/expectations/extensions/kernel.rb +0 -52
  143. data/lib/spec/expectations/fail_with.rb +0 -45
  144. data/lib/spec/expectations/handler.rb +0 -50
  145. data/lib/spec/extensions/instance_exec.rb +0 -31
  146. data/lib/spec/interop/test.rb +0 -44
  147. data/lib/spec/interop/test/unit/autorunner.rb +0 -6
  148. data/lib/spec/interop/test/unit/testcase.rb +0 -56
  149. data/lib/spec/interop/test/unit/testresult.rb +0 -6
  150. data/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -36
  151. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
  152. data/lib/spec/matchers.rb +0 -214
  153. data/lib/spec/matchers/be.rb +0 -249
  154. data/lib/spec/matchers/be_close.rb +0 -32
  155. data/lib/spec/matchers/be_instance_of.rb +0 -26
  156. data/lib/spec/matchers/be_kind_of.rb +0 -26
  157. data/lib/spec/matchers/change.rb +0 -151
  158. data/lib/spec/matchers/compatibility.rb +0 -14
  159. data/lib/spec/matchers/dsl.rb +0 -20
  160. data/lib/spec/matchers/eql.rb +0 -42
  161. data/lib/spec/matchers/equal.rb +0 -53
  162. data/lib/spec/matchers/errors.rb +0 -5
  163. data/lib/spec/matchers/exist.rb +0 -16
  164. data/lib/spec/matchers/generated_descriptions.rb +0 -36
  165. data/lib/spec/matchers/has.rb +0 -35
  166. data/lib/spec/matchers/have.rb +0 -152
  167. data/lib/spec/matchers/include.rb +0 -44
  168. data/lib/spec/matchers/match.rb +0 -21
  169. data/lib/spec/matchers/match_array.rb +0 -71
  170. data/lib/spec/matchers/matcher.rb +0 -132
  171. data/lib/spec/matchers/method_missing.rb +0 -9
  172. data/lib/spec/matchers/operator_matcher.rb +0 -83
  173. data/lib/spec/matchers/pretty.rb +0 -37
  174. data/lib/spec/matchers/raise_exception.rb +0 -131
  175. data/lib/spec/matchers/respond_to.rb +0 -71
  176. data/lib/spec/matchers/satisfy.rb +0 -47
  177. data/lib/spec/matchers/simple_matcher.rb +0 -134
  178. data/lib/spec/matchers/throw_symbol.rb +0 -100
  179. data/lib/spec/matchers/wrap_expectation.rb +0 -55
  180. data/lib/spec/mocks.rb +0 -200
  181. data/lib/spec/mocks/argument_expectation.rb +0 -51
  182. data/lib/spec/mocks/argument_matchers.rb +0 -237
  183. data/lib/spec/mocks/error_generator.rb +0 -92
  184. data/lib/spec/mocks/errors.rb +0 -10
  185. data/lib/spec/mocks/example_methods.rb +0 -69
  186. data/lib/spec/mocks/extensions.rb +0 -1
  187. data/lib/spec/mocks/extensions/object.rb +0 -3
  188. data/lib/spec/mocks/framework.rb +0 -15
  189. data/lib/spec/mocks/message_expectation.rb +0 -344
  190. data/lib/spec/mocks/methods.rb +0 -94
  191. data/lib/spec/mocks/mock.rb +0 -71
  192. data/lib/spec/mocks/order_group.rb +0 -29
  193. data/lib/spec/mocks/proxy.rb +0 -254
  194. data/lib/spec/mocks/space.rb +0 -28
  195. data/lib/spec/rake/spectask.rb +0 -230
  196. data/lib/spec/rake/verify_rcov.rb +0 -52
  197. data/lib/spec/ruby.rb +0 -9
  198. data/lib/spec/runner.rb +0 -66
  199. data/lib/spec/runner/backtrace_tweaker.rb +0 -78
  200. data/lib/spec/runner/class_and_arguments_parser.rb +0 -14
  201. data/lib/spec/runner/command_line.rb +0 -15
  202. data/lib/spec/runner/configuration.rb +0 -202
  203. data/lib/spec/runner/differs/default.rb +0 -93
  204. data/lib/spec/runner/differs/load-diff-lcs.rb +0 -12
  205. data/lib/spec/runner/drb_command_line.rb +0 -32
  206. data/lib/spec/runner/example_group_runner.rb +0 -58
  207. data/lib/spec/runner/extensions/kernel.rb +0 -9
  208. data/lib/spec/runner/formatter/base_formatter.rb +0 -139
  209. data/lib/spec/runner/formatter/base_text_formatter.rb +0 -142
  210. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -25
  211. data/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
  212. data/lib/spec/runner/formatter/html_formatter.rb +0 -338
  213. data/lib/spec/runner/formatter/nested_text_formatter.rb +0 -50
  214. data/lib/spec/runner/formatter/no_op_method_missing.rb +0 -21
  215. data/lib/spec/runner/formatter/profile_formatter.rb +0 -47
  216. data/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -33
  217. data/lib/spec/runner/formatter/silent_formatter.rb +0 -10
  218. data/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
  219. data/lib/spec/runner/formatter/specdoc_formatter.rb +0 -33
  220. data/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
  221. data/lib/spec/runner/heckle_runner.rb +0 -77
  222. data/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
  223. data/lib/spec/runner/line_number_query.rb +0 -78
  224. data/lib/spec/runner/option_parser.rb +0 -225
  225. data/lib/spec/runner/options.rb +0 -406
  226. data/lib/spec/runner/reporter.rb +0 -171
  227. data/lib/spec/stubs/cucumber.rb +0 -5
  228. data/lib/spec/test/unit.rb +0 -10
  229. data/lib/spec/version.rb +0 -14
  230. data/resources/helpers/cmdline.rb +0 -8
  231. data/resources/rake/examples.rake +0 -7
  232. data/resources/rake/examples_with_rcov.rake +0 -9
  233. data/resources/rake/failing_examples_with_html.rake +0 -9
  234. data/resources/rake/verify_rcov.rake +0 -7
  235. data/spec/README.jruby +0 -15
  236. data/spec/autotest/autotest_helper.rb +0 -8
  237. data/spec/autotest/autotest_matchers.rb +0 -38
  238. data/spec/autotest/discover_spec.rb +0 -8
  239. data/spec/autotest/failed_results_re_spec.rb +0 -31
  240. data/spec/autotest/rspec_spec.rb +0 -126
  241. data/spec/ruby_forker.rb +0 -13
  242. data/spec/spec.opts +0 -6
  243. data/spec/spec/dsl/main_spec.rb +0 -103
  244. data/spec/spec/example/example_group_class_definition_spec.rb +0 -51
  245. data/spec/spec/example/example_group_factory_spec.rb +0 -180
  246. data/spec/spec/example/example_group_methods_spec.rb +0 -778
  247. data/spec/spec/example/example_group_proxy_spec.rb +0 -107
  248. data/spec/spec/example/example_group_spec.rb +0 -632
  249. data/spec/spec/example/example_matcher_spec.rb +0 -85
  250. data/spec/spec/example/example_methods_spec.rb +0 -162
  251. data/spec/spec/example/example_proxy_spec.rb +0 -57
  252. data/spec/spec/example/helper_method_spec.rb +0 -24
  253. data/spec/spec/example/nested_example_group_spec.rb +0 -71
  254. data/spec/spec/example/pending_module_spec.rb +0 -58
  255. data/spec/spec/example/predicate_matcher_spec.rb +0 -41
  256. data/spec/spec/example/shared_example_group_spec.rb +0 -257
  257. data/spec/spec/example/subclassing_example_group_spec.rb +0 -25
  258. data/spec/spec/example/subject_spec.rb +0 -110
  259. data/spec/spec/expectations/differs/default_spec.rb +0 -194
  260. data/spec/spec/expectations/extensions/kernel_spec.rb +0 -45
  261. data/spec/spec/expectations/fail_with_spec.rb +0 -96
  262. data/spec/spec/expectations/handler_spec.rb +0 -206
  263. data/spec/spec/expectations/wrap_expectation_spec.rb +0 -31
  264. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
  265. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
  266. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
  267. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -13
  268. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
  269. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
  270. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
  271. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -22
  272. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
  273. data/spec/spec/interop/test/unit/spec_spec.rb +0 -48
  274. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -18
  275. data/spec/spec/interop/test/unit/testcase_spec.rb +0 -50
  276. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
  277. data/spec/spec/matchers/be_close_spec.rb +0 -50
  278. data/spec/spec/matchers/be_instance_of_spec.rb +0 -36
  279. data/spec/spec/matchers/be_kind_of_spec.rb +0 -33
  280. data/spec/spec/matchers/be_spec.rb +0 -460
  281. data/spec/spec/matchers/change_spec.rb +0 -349
  282. data/spec/spec/matchers/compatibility_spec.rb +0 -28
  283. data/spec/spec/matchers/description_generation_spec.rb +0 -160
  284. data/spec/spec/matchers/dsl_spec.rb +0 -34
  285. data/spec/spec/matchers/eql_spec.rb +0 -33
  286. data/spec/spec/matchers/equal_spec.rb +0 -57
  287. data/spec/spec/matchers/exist_spec.rb +0 -65
  288. data/spec/spec/matchers/has_spec.rb +0 -190
  289. data/spec/spec/matchers/have_spec.rb +0 -381
  290. data/spec/spec/matchers/include_spec.rb +0 -88
  291. data/spec/spec/matchers/match_array_spec.rb +0 -115
  292. data/spec/spec/matchers/match_spec.rb +0 -57
  293. data/spec/spec/matchers/matcher_spec.rb +0 -289
  294. data/spec/spec/matchers/matchers_spec.rb +0 -2
  295. data/spec/spec/matchers/operator_matcher_spec.rb +0 -191
  296. data/spec/spec/matchers/pretty_spec.rb +0 -22
  297. data/spec/spec/matchers/raise_exception_spec.rb +0 -345
  298. data/spec/spec/matchers/respond_to_spec.rb +0 -116
  299. data/spec/spec/matchers/satisfy_spec.rb +0 -36
  300. data/spec/spec/matchers/simple_matcher_spec.rb +0 -100
  301. data/spec/spec/matchers/throw_symbol_spec.rb +0 -121
  302. data/spec/spec/mocks/and_yield_spec.rb +0 -117
  303. data/spec/spec/mocks/any_number_of_times_spec.rb +0 -36
  304. data/spec/spec/mocks/argument_expectation_spec.rb +0 -23
  305. data/spec/spec/mocks/argument_matchers_spec.rb +0 -19
  306. data/spec/spec/mocks/at_least_spec.rb +0 -97
  307. data/spec/spec/mocks/at_most_spec.rb +0 -93
  308. data/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
  309. data/spec/spec/mocks/bug_report_10263_spec.rb +0 -27
  310. data/spec/spec/mocks/bug_report_1049_spec.rb +0 -30
  311. data/spec/spec/mocks/bug_report_11545_spec.rb +0 -32
  312. data/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
  313. data/spec/spec/mocks/bug_report_496_spec.rb +0 -17
  314. data/spec/spec/mocks/bug_report_600_spec.rb +0 -22
  315. data/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
  316. data/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
  317. data/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
  318. data/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
  319. data/spec/spec/mocks/bug_report_830_spec.rb +0 -21
  320. data/spec/spec/mocks/bug_report_957_spec.rb +0 -22
  321. data/spec/spec/mocks/double_spec.rb +0 -12
  322. data/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -95
  323. data/spec/spec/mocks/hash_including_matcher_spec.rb +0 -90
  324. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -67
  325. data/spec/spec/mocks/mock_ordering_spec.rb +0 -94
  326. data/spec/spec/mocks/mock_space_spec.rb +0 -54
  327. data/spec/spec/mocks/mock_spec.rb +0 -601
  328. data/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
  329. data/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -53
  330. data/spec/spec/mocks/null_object_mock_spec.rb +0 -54
  331. data/spec/spec/mocks/once_counts_spec.rb +0 -53
  332. data/spec/spec/mocks/options_hash_spec.rb +0 -35
  333. data/spec/spec/mocks/partial_mock_spec.rb +0 -164
  334. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
  335. data/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -145
  336. data/spec/spec/mocks/precise_counts_spec.rb +0 -52
  337. data/spec/spec/mocks/record_messages_spec.rb +0 -26
  338. data/spec/spec/mocks/stub_chain_spec.rb +0 -42
  339. data/spec/spec/mocks/stub_implementation_spec.rb +0 -31
  340. data/spec/spec/mocks/stub_spec.rb +0 -203
  341. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -26
  342. data/spec/spec/mocks/twice_counts_spec.rb +0 -67
  343. data/spec/spec/mocks/unstub_spec.rb +0 -127
  344. data/spec/spec/package/bin_spec_spec.rb +0 -16
  345. data/spec/spec/rake/spectask_spec.rb +0 -150
  346. data/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
  347. data/spec/spec/runner/command_line_spec.rb +0 -162
  348. data/spec/spec/runner/configuration_spec.rb +0 -320
  349. data/spec/spec/runner/drb_command_line_spec.rb +0 -146
  350. data/spec/spec/runner/empty_file.txt +0 -0
  351. data/spec/spec/runner/example_group_runner_spec.rb +0 -26
  352. data/spec/spec/runner/examples.txt +0 -2
  353. data/spec/spec/runner/failed.txt +0 -3
  354. data/spec/spec/runner/formatter/base_formatter_spec.rb +0 -30
  355. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -113
  356. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
  357. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
  358. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -377
  359. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -377
  360. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -377
  361. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -377
  362. data/spec/spec/runner/formatter/html_formatted-1.9.2.html +0 -377
  363. data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -118
  364. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -329
  365. data/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -70
  366. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -149
  367. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
  368. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -159
  369. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -371
  370. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -371
  371. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -371
  372. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -371
  373. data/spec/spec/runner/formatter/text_mate_formatted-1.9.2.html +0 -371
  374. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -106
  375. data/spec/spec/runner/heckle_runner_spec.rb +0 -78
  376. data/spec/spec/runner/heckler_spec.rb +0 -20
  377. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -70
  378. data/spec/spec/runner/line_number_query_spec.rb +0 -129
  379. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -51
  380. data/spec/spec/runner/option_parser_spec.rb +0 -551
  381. data/spec/spec/runner/options_spec.rb +0 -554
  382. data/spec/spec/runner/output_one_time_fixture.rb +0 -7
  383. data/spec/spec/runner/output_one_time_fixture_runner.rb +0 -7
  384. data/spec/spec/runner/output_one_time_spec.rb +0 -15
  385. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -123
  386. data/spec/spec/runner/reporter_spec.rb +0 -244
  387. data/spec/spec/runner/resources/a_bar.rb +0 -0
  388. data/spec/spec/runner/resources/a_foo.rb +0 -0
  389. data/spec/spec/runner/resources/a_spec.rb +0 -1
  390. data/spec/spec/runner/resources/custom_example_group_runner.rb +0 -14
  391. data/spec/spec/runner/resources/utf8_encoded.rb +0 -8
  392. data/spec/spec/runner/spec.opts +0 -2
  393. data/spec/spec/runner/spec_drb.opts +0 -2
  394. data/spec/spec/runner/spec_spaced.opts +0 -2
  395. data/spec/spec/runner_spec.rb +0 -13
  396. data/spec/spec_helper.rb +0 -113
  397. data/spec/support/macros.rb +0 -29
  398. data/spec/support/spec_classes.rb +0 -133
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spec
4
- module Matchers
5
- module DSL
6
- describe "#create" do
7
- it "is deprecated" do
8
- Spec.should_receive(:deprecate)
9
- mod = Module.new
10
- mod.extend Spec::Matchers::DSL
11
- mod.create(:foo)
12
- end
13
- end
14
-
15
- describe "#define" do
16
- it "creates a method that initializes a new matcher with the submitted name and expected arg" do
17
- # FIXME - this expects new to be called, but we need something
18
- # more robust - that expects new to be called with a specific
19
- # block (lambda, proc, whatever)
20
- mod = Module.new
21
- mod.extend Spec::Matchers::DSL
22
- mod.define(:foo)
23
-
24
- obj = Object.new
25
- obj.extend mod
26
-
27
- Spec::Matchers::Matcher.should_receive(:new).with(:foo, 3)
28
-
29
- obj.foo(3)
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spec
4
- module Matchers
5
- describe "eql" do
6
- it "should match when actual.eql?(expected)" do
7
- 1.should eql(1)
8
- end
9
-
10
- it "should not match when !actual.eql?(expected)" do
11
- 1.should_not eql(2)
12
- end
13
-
14
- it "should describe itself" do
15
- matcher = eql(1)
16
- matcher.matches?(1)
17
- matcher.description.should == "eql 1"
18
- end
19
-
20
- it "should provide message, expected and actual on #failure_message" do
21
- matcher = eql("1")
22
- matcher.matches?(1)
23
- matcher.failure_message_for_should.should == "\nexpected \"1\"\n got 1\n\n(compared using eql?)\n"
24
- end
25
-
26
- it "should provide message, expected and actual on #negative_failure_message" do
27
- matcher = eql(1)
28
- matcher.matches?(1)
29
- matcher.failure_message_for_should_not.should == "\nexpected 1 not to equal 1\n\n(compared using eql?)\n"
30
- end
31
- end
32
- end
33
- end
@@ -1,57 +0,0 @@
1
- require 'spec_helper'
2
- module Spec
3
- module Matchers
4
- describe "equal" do
5
-
6
- def inspect_object(o)
7
- "#<#{o.class}:#{o.object_id}> => #{o.inspect}"
8
- end
9
-
10
- it "should match when actual.equal?(expected)" do
11
- 1.should equal(1)
12
- end
13
-
14
- it "should not match when !actual.equal?(expected)" do
15
- 1.should_not equal("1")
16
- end
17
-
18
- it "should describe itself" do
19
- matcher = equal(1)
20
- matcher.matches?(1)
21
- matcher.description.should == "equal 1"
22
- end
23
-
24
- it "should provide message on #failure_message" do
25
- expected, actual = "1", "1"
26
- matcher = equal(expected)
27
- matcher.matches?(actual)
28
-
29
- matcher.failure_message_for_should.should == <<-MESSAGE
30
-
31
- expected #{inspect_object(expected)}
32
- got #{inspect_object(actual)}
33
-
34
- Compared using equal?, which compares object identity,
35
- but expected and actual are not the same object. Use
36
- 'actual.should == expected' if you don't care about
37
- object identity in this example.
38
-
39
- MESSAGE
40
- end
41
-
42
- it "should provide message on #negative_failure_message" do
43
- expected = actual = "1"
44
- matcher = equal(expected)
45
- matcher.matches?(actual)
46
- matcher.failure_message_for_should_not.should == <<-MESSAGE
47
-
48
- expected not #{inspect_object(expected)}
49
- got #{inspect_object(actual)}
50
-
51
- Compared using equal?, which compares object identity.
52
-
53
- MESSAGE
54
- end
55
- end
56
- end
57
- end
@@ -1,65 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class Substance
4
- def initialize exists, description
5
- @exists = exists
6
- @description = description
7
- end
8
- def exist?(arg=nil)
9
- @exists
10
- end
11
- def inspect
12
- @description
13
- end
14
- end
15
-
16
- class SubstanceTester
17
- include Spec::Matchers
18
- def initialize substance
19
- @substance = substance
20
- end
21
- def should_exist
22
- @substance.should exist
23
- end
24
- end
25
-
26
- describe "should exist" do
27
-
28
- before(:each) do
29
- @real = Substance.new true, 'something real'
30
- @imaginary = Substance.new false, 'something imaginary'
31
- end
32
-
33
- describe "within an example group" do
34
-
35
- it "passes if target exists" do
36
- @real.should exist
37
- end
38
-
39
- it "passes if target exists with args" do
40
- @real.should exist('this arg')
41
- end
42
-
43
- it "fails if target does not exist" do
44
- lambda { @imaginary.should exist }.should fail
45
- end
46
-
47
- it "describes itself" do
48
- exist.description.should == "exist"
49
- end
50
-
51
- it "passes should_not exist if target doesn't exist" do
52
- lambda { @real.should_not exist }.should fail
53
- end
54
- end
55
-
56
- describe "outside of an example group" do
57
-
58
- it "should pass if target exists" do
59
- real_tester = SubstanceTester.new @real
60
- real_tester.should_exist
61
- end
62
-
63
- end
64
-
65
- end
@@ -1,190 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "should have_sym(*args)" do
4
- it "should pass if #has_sym?(*args) returns true" do
5
- {:a => "A"}.should have_key(:a)
6
- end
7
-
8
- it "should fail if #has_sym?(*args) returns false" do
9
- lambda {
10
- {:b => "B"}.should have_key(:a)
11
- }.should fail_with("expected #has_key?(:a) to return true, got false")
12
- end
13
-
14
- it "should fail if #has_sym?(*args) returns nil" do
15
- klass = Class.new do
16
- def has_foo?
17
- end
18
- end
19
- lambda {
20
- klass.new.should have_foo
21
- }.should fail_with("expected #has_foo?(nil) to return true, got false")
22
- end
23
-
24
- it "should fail if target does not respond to #has_sym?" do
25
- lambda {
26
- Object.new.should have_key(:a)
27
- }.should raise_error(NoMethodError)
28
- end
29
-
30
- it "should reraise an exception thrown in #has_sym?(*args)" do
31
- o = Object.new
32
- def o.has_sym?(*args)
33
- raise "Funky exception"
34
- end
35
- lambda { o.should have_sym(:foo) }.should raise_error("Funky exception")
36
- end
37
- end
38
-
39
- describe "should_not have_sym(*args)" do
40
- it "should pass if #has_sym?(*args) returns false" do
41
- {:a => "A"}.should_not have_key(:b)
42
- end
43
-
44
- it "should pass if #has_sym?(*args) returns nil" do
45
- klass = Class.new do
46
- def has_foo?
47
- end
48
- end
49
- klass.new.should_not have_foo
50
- end
51
-
52
- it "should fail if #has_sym?(*args) returns true" do
53
- lambda {
54
- {:a => "A"}.should_not have_key(:a)
55
- }.should fail_with("expected #has_key?(:a) to return false, got true")
56
- end
57
-
58
- it "should fail if target does not respond to #has_sym?" do
59
- lambda {
60
- Object.new.should have_key(:a)
61
- }.should raise_error(NoMethodError)
62
- end
63
-
64
- it "should reraise an exception thrown in #has_sym?(*args)" do
65
- o = Object.new
66
- def o.has_sym?(*args)
67
- raise "Funky exception"
68
- end
69
- lambda { o.should_not have_sym(:foo) }.should raise_error("Funky exception")
70
- end
71
- end
72
-
73
- describe "should have_sym(&block)" do
74
- it "should pass when actual returns true for :has_sym?(&block)" do
75
- actual = mock("actual")
76
- delegate = mock("delegate")
77
- actual.should_receive(:has_foo?).and_yield
78
- delegate.should_receive(:check_has_foo).and_return(true)
79
- actual.should have_foo { delegate.check_has_foo }
80
- end
81
-
82
- it "should fail when actual returns false for :has_sym?(&block)" do
83
- actual = mock("actual")
84
- delegate = mock("delegate")
85
- actual.should_receive(:has_foo?).and_yield
86
- delegate.should_receive(:check_has_foo).and_return(false)
87
- lambda {
88
- actual.should have_foo { delegate.check_has_foo }
89
- }.should fail_with("expected #has_foo?(nil) to return true, got false")
90
- end
91
-
92
- it "should fail when actual does not respond to :has_sym?" do
93
- delegate = mock("delegate", :check_has_foo => true)
94
- lambda {
95
- Object.new.should have_foo { delegate.check_has_foo }
96
- }.should raise_error(NameError)
97
- end
98
- end
99
-
100
- describe "should_not have_sym(&block)" do
101
- it "should pass when actual returns false for :has_sym?(&block)" do
102
- actual = mock("actual")
103
- delegate = mock("delegate")
104
- actual.should_receive(:has_foo?).and_yield
105
- delegate.should_receive(:check_has_foo).and_return(false)
106
- actual.should_not have_foo { delegate.check_has_foo }
107
- end
108
-
109
- it "should fail when actual returns true for :has_sym?(&block)" do
110
- actual = mock("actual")
111
- delegate = mock("delegate")
112
- actual.should_receive(:has_foo?).and_yield
113
- delegate.should_receive(:check_has_foo).and_return(true)
114
- lambda {
115
- actual.should_not have_foo { delegate.check_has_foo }
116
- }.should fail_with("expected #has_foo?(nil) to return false, got true")
117
- end
118
-
119
- it "should fail when actual does not respond to :has_sym?" do
120
- delegate = mock("delegate", :check_has_foo => true)
121
- lambda {
122
- Object.new.should_not have_foo { delegate.check_has_foo }
123
- }.should raise_error(NameError)
124
- end
125
- end
126
-
127
- describe "should have_sym(*args, &block)" do
128
- it "should pass when actual returns true for :has_sym?(*args, &block)" do
129
- actual = mock("actual")
130
- delegate = mock("delegate")
131
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
132
- delegate.should_receive(:check_has_foo).with(:a).and_return(true)
133
- actual.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
134
- end
135
-
136
- it "should fail when actual returns false for :has_sym?(*args, &block)" do
137
- actual = mock("actual")
138
- delegate = mock("delegate")
139
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
140
- delegate.should_receive(:check_has_foo).with(:a).and_return(false)
141
- lambda {
142
- actual.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
143
- }.should fail_with("expected #has_foo?(:a) to return true, got false")
144
- end
145
-
146
- it "should fail when actual does not respond to :has_sym?" do
147
- delegate = mock("delegate", :check_has_foo => true)
148
- lambda {
149
- Object.new.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
150
- }.should raise_error(NameError)
151
- end
152
- end
153
-
154
- describe "should_not have_sym(*args, &block)" do
155
- it "should pass when actual returns false for :has_sym?(*args, &block)" do
156
- actual = mock("actual")
157
- delegate = mock("delegate")
158
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
159
- delegate.should_receive(:check_has_foo).with(:a).and_return(false)
160
- actual.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
161
- end
162
-
163
- it "should fail when actual returns true for :has_sym?(*args, &block)" do
164
- actual = mock("actual")
165
- delegate = mock("delegate")
166
- actual.should_receive(:has_foo?).with(:a).and_yield(:a)
167
- delegate.should_receive(:check_has_foo).with(:a).and_return(true)
168
- lambda {
169
- actual.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
170
- }.should fail_with("expected #has_foo?(:a) to return false, got true")
171
- end
172
-
173
- it "should fail when actual does not respond to :has_sym?" do
174
- delegate = mock("delegate", :check_has_foo => true)
175
- lambda {
176
- Object.new.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
177
- }.should raise_error(NameError)
178
- end
179
- end
180
-
181
-
182
- describe "has" do
183
- it "should work when the target implements #send" do
184
- o = {:a => "A"}
185
- def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
186
- lambda {
187
- o.should have_key(:a)
188
- }.should_not raise_error
189
- end
190
- end
@@ -1,381 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "have matcher" do
4
-
5
- def create_collection_owner_with(n)
6
- owner = Spec::Expectations::Helper::CollectionOwner.new
7
- (1..n).each do |number|
8
- owner.add_to_collection_with_length_method(number)
9
- owner.add_to_collection_with_size_method(number)
10
- end
11
- owner
12
- end
13
-
14
- before(:each) do
15
- if defined?(::ActiveSupport::Inflector)
16
- @active_support_was_defined = true
17
- else
18
- @active_support_was_defined = false
19
- module ::ActiveSupport
20
- class Inflector
21
- def self.pluralize(string)
22
- string.to_s + 's'
23
- end
24
- end
25
- end
26
- end
27
- end
28
-
29
- describe "should have(n).items" do
30
- it "should pass if target has a collection of items with n members" do
31
- owner = create_collection_owner_with(3)
32
- owner.should have(3).items_in_collection_with_length_method
33
- owner.should have(3).items_in_collection_with_size_method
34
- end
35
-
36
- it "should convert :no to 0" do
37
- owner = create_collection_owner_with(0)
38
- owner.should have(:no).items_in_collection_with_length_method
39
- owner.should have(:no).items_in_collection_with_size_method
40
- end
41
-
42
- it "should fail if target has a collection of items with < n members" do
43
- owner = create_collection_owner_with(3)
44
- lambda {
45
- owner.should have(4).items_in_collection_with_length_method
46
- }.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
47
- lambda {
48
- owner.should have(4).items_in_collection_with_size_method
49
- }.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
50
- end
51
-
52
- it "should fail if target has a collection of items with > n members" do
53
- owner = create_collection_owner_with(3)
54
- lambda {
55
- owner.should have(2).items_in_collection_with_length_method
56
- }.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
57
- lambda {
58
- owner.should have(2).items_in_collection_with_size_method
59
- }.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
60
- end
61
- end
62
-
63
- describe 'should have(1).item when ActiveSupport::Inflector is defined' do
64
- it 'should pluralize the collection name' do
65
- owner = create_collection_owner_with(1)
66
- owner.should have(1).item
67
- end
68
-
69
- after(:each) do
70
- unless @active_support_was_defined
71
- Object.__send__ :remove_const, :ActiveSupport
72
- end
73
- end
74
- end
75
-
76
- describe 'should have(1).item when Inflector is defined' do
77
- before(:each) do
78
- if defined?(Inflector)
79
- @inflector_was_defined = true
80
- else
81
- @inflector_was_defined = false
82
- class ::Inflector
83
- def self.pluralize(string)
84
- string.to_s + 's'
85
- end
86
- end
87
- end
88
- end
89
-
90
- it 'should pluralize the collection name' do
91
- owner = create_collection_owner_with(1)
92
- owner.should have(1).item
93
- end
94
-
95
- after(:each) do
96
- unless @inflector_was_defined
97
- Object.__send__ :remove_const, :Inflector
98
- end
99
- end
100
- end
101
-
102
- describe "should have(n).items where result responds to items but returns something other than a collection" do
103
- it "should provide a meaningful error" do
104
- owner = Class.new do
105
- def items
106
- Object.new
107
- end
108
- end.new
109
- lambda do
110
- owner.should have(3).items
111
- end.should raise_error("expected items to be a collection but it does not respond to #length or #size")
112
- end
113
- end
114
-
115
- describe "should_not have(n).items" do
116
- it "should pass if target has a collection of items with < n members" do
117
- owner = create_collection_owner_with(3)
118
- owner.should_not have(4).items_in_collection_with_length_method
119
- owner.should_not have(4).items_in_collection_with_size_method
120
- end
121
-
122
- it "should pass if target has a collection of items with > n members" do
123
- owner = create_collection_owner_with(3)
124
- owner.should_not have(2).items_in_collection_with_length_method
125
- owner.should_not have(2).items_in_collection_with_size_method
126
- end
127
-
128
- it "should fail if target has a collection of items with n members" do
129
- owner = create_collection_owner_with(3)
130
- lambda {
131
- owner.should_not have(3).items_in_collection_with_length_method
132
- }.should fail_with("expected target not to have 3 items_in_collection_with_length_method, got 3")
133
- lambda {
134
- owner.should_not have(3).items_in_collection_with_size_method
135
- }.should fail_with("expected target not to have 3 items_in_collection_with_size_method, got 3")
136
- end
137
- end
138
-
139
- describe "should have_exactly(n).items" do
140
- it "should pass if target has a collection of items with n members" do
141
- owner = create_collection_owner_with(3)
142
- owner.should have_exactly(3).items_in_collection_with_length_method
143
- owner.should have_exactly(3).items_in_collection_with_size_method
144
- end
145
-
146
- it "should convert :no to 0" do
147
- owner = create_collection_owner_with(0)
148
- owner.should have_exactly(:no).items_in_collection_with_length_method
149
- owner.should have_exactly(:no).items_in_collection_with_size_method
150
- end
151
-
152
- it "should fail if target has a collection of items with < n members" do
153
- owner = create_collection_owner_with(3)
154
- lambda {
155
- owner.should have_exactly(4).items_in_collection_with_length_method
156
- }.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
157
- lambda {
158
- owner.should have_exactly(4).items_in_collection_with_size_method
159
- }.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
160
- end
161
-
162
- it "should fail if target has a collection of items with > n members" do
163
- owner = create_collection_owner_with(3)
164
- lambda {
165
- owner.should have_exactly(2).items_in_collection_with_length_method
166
- }.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
167
- lambda {
168
- owner.should have_exactly(2).items_in_collection_with_size_method
169
- }.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
170
- end
171
- end
172
-
173
- describe "should have_at_least(n).items" do
174
- it "should pass if target has a collection of items with n members" do
175
- owner = create_collection_owner_with(3)
176
- owner.should have_at_least(3).items_in_collection_with_length_method
177
- owner.should have_at_least(3).items_in_collection_with_size_method
178
- end
179
-
180
- it "should pass if target has a collection of items with > n members" do
181
- owner = create_collection_owner_with(3)
182
- owner.should have_at_least(2).items_in_collection_with_length_method
183
- owner.should have_at_least(2).items_in_collection_with_size_method
184
- end
185
-
186
- it "should fail if target has a collection of items with < n members" do
187
- owner = create_collection_owner_with(3)
188
- lambda {
189
- owner.should have_at_least(4).items_in_collection_with_length_method
190
- }.should fail_with("expected at least 4 items_in_collection_with_length_method, got 3")
191
- lambda {
192
- owner.should have_at_least(4).items_in_collection_with_size_method
193
- }.should fail_with("expected at least 4 items_in_collection_with_size_method, got 3")
194
- end
195
-
196
- it "should provide educational negative failure messages" do
197
- #given
198
- owner = create_collection_owner_with(3)
199
- length_matcher = have_at_least(3).items_in_collection_with_length_method
200
- size_matcher = have_at_least(3).items_in_collection_with_size_method
201
-
202
- #when
203
- length_matcher.matches?(owner)
204
- size_matcher.matches?(owner)
205
-
206
- #then
207
- length_matcher.failure_message_for_should_not.should == <<-EOF
208
- Isn't life confusing enough?
209
- Instead of having to figure out the meaning of this:
210
- should_not have_at_least(3).items_in_collection_with_length_method
211
- We recommend that you use this instead:
212
- should have_at_most(2).items_in_collection_with_length_method
213
- EOF
214
-
215
- size_matcher.failure_message_for_should_not.should == <<-EOF
216
- Isn't life confusing enough?
217
- Instead of having to figure out the meaning of this:
218
- should_not have_at_least(3).items_in_collection_with_size_method
219
- We recommend that you use this instead:
220
- should have_at_most(2).items_in_collection_with_size_method
221
- EOF
222
- end
223
- end
224
-
225
- describe "should have_at_most(n).items" do
226
- it "should pass if target has a collection of items with n members" do
227
- owner = create_collection_owner_with(3)
228
- owner.should have_at_most(3).items_in_collection_with_length_method
229
- owner.should have_at_most(3).items_in_collection_with_size_method
230
- end
231
-
232
- it "should fail if target has a collection of items with > n members" do
233
- owner = create_collection_owner_with(3)
234
- lambda {
235
- owner.should have_at_most(2).items_in_collection_with_length_method
236
- }.should fail_with("expected at most 2 items_in_collection_with_length_method, got 3")
237
- lambda {
238
- owner.should have_at_most(2).items_in_collection_with_size_method
239
- }.should fail_with("expected at most 2 items_in_collection_with_size_method, got 3")
240
- end
241
-
242
- it "should pass if target has a collection of items with < n members" do
243
- owner = create_collection_owner_with(3)
244
- owner.should have_at_most(4).items_in_collection_with_length_method
245
- owner.should have_at_most(4).items_in_collection_with_size_method
246
- end
247
-
248
- it "should provide educational negative failure messages" do
249
- #given
250
- owner = create_collection_owner_with(3)
251
- length_matcher = have_at_most(3).items_in_collection_with_length_method
252
- size_matcher = have_at_most(3).items_in_collection_with_size_method
253
-
254
- #when
255
- length_matcher.matches?(owner)
256
- size_matcher.matches?(owner)
257
-
258
- #then
259
- length_matcher.failure_message_for_should_not.should == <<-EOF
260
- Isn't life confusing enough?
261
- Instead of having to figure out the meaning of this:
262
- should_not have_at_most(3).items_in_collection_with_length_method
263
- We recommend that you use this instead:
264
- should have_at_least(4).items_in_collection_with_length_method
265
- EOF
266
-
267
- size_matcher.failure_message_for_should_not.should == <<-EOF
268
- Isn't life confusing enough?
269
- Instead of having to figure out the meaning of this:
270
- should_not have_at_most(3).items_in_collection_with_size_method
271
- We recommend that you use this instead:
272
- should have_at_least(4).items_in_collection_with_size_method
273
- EOF
274
- end
275
- end
276
-
277
- describe "have(n).items(args, block)" do
278
- it "should pass args to target" do
279
- target = mock("target")
280
- target.should_receive(:items).with("arg1","arg2").and_return([1,2,3])
281
- target.should have(3).items("arg1","arg2")
282
- end
283
-
284
- it "should pass block to target" do
285
- target = mock("target")
286
- block = lambda { 5 }
287
- target.should_receive(:items).with("arg1","arg2", block).and_return([1,2,3])
288
- target.should have(3).items("arg1","arg2", block)
289
- end
290
- end
291
-
292
- describe "have(n).items where target IS a collection" do
293
- it "should reference the number of items IN the collection" do
294
- [1,2,3].should have(3).items
295
- end
296
-
297
- it "should fail when the number of items IN the collection is not as expected" do
298
- lambda { [1,2,3].should have(7).items }.should fail_with("expected 7 items, got 3")
299
- end
300
- end
301
-
302
- describe "have(n).characters where target IS a String" do
303
- it "should pass if the length is correct" do
304
- "this string".should have(11).characters
305
- end
306
-
307
- it "should fail if the length is incorrect" do
308
- lambda { "this string".should have(12).characters }.should fail_with("expected 12 characters, got 11")
309
- end
310
- end
311
-
312
- describe "have(n).things on an object which is not a collection nor contains one" do
313
- it "should fail" do
314
- lambda { Object.new.should have(2).things }.should raise_error(NoMethodError, /undefined method `things' for #<Object:/)
315
- end
316
- end
317
-
318
- describe Spec::Matchers::Have, "for a collection owner that implements #send" do
319
- before(:each) do
320
- @collection = Object.new
321
- def @collection.floozles; [1,2] end
322
- def @collection.send(*args); raise "DOH! Library developers shouldn't use #send!" end
323
- end
324
-
325
- it "should work in the straightforward case" do
326
- lambda {
327
- @collection.should have(2).floozles
328
- }.should_not raise_error
329
- end
330
-
331
- it "should work when doing automatic pluralization" do
332
- lambda {
333
- @collection.should have_at_least(1).floozle
334
- }.should_not raise_error
335
- end
336
-
337
- it "should blow up when the owner doesn't respond to that method" do
338
- lambda {
339
- @collection.should have(99).problems
340
- }.should raise_error(NoMethodError, /problems/)
341
- end
342
- end
343
-
344
- module Spec
345
- module Matchers
346
- describe Have do
347
- treats_method_missing_as_private :noop => false
348
-
349
- describe "respond_to?" do
350
- before :each do
351
- @have = Have.new(:foo)
352
- @a_method_which_have_defines = Have.instance_methods.first
353
- @a_method_which_object_defines = Object.instance_methods.first
354
- end
355
-
356
- it "should be true for a method which Have defines" do
357
- @have.should respond_to(@a_method_which_have_defines)
358
- end
359
-
360
- it "should be true for a method that it's superclass (Object) defines" do
361
- @have.should respond_to(@a_method_which_object_defines)
362
- end
363
-
364
- it "should be false for a method which neither Object nor nor Have defines" do
365
- @have.should_not respond_to(:foo_bar_baz)
366
- end
367
-
368
- it "should be false if the owner doesn't respond to the method" do
369
- have = Have.new(99)
370
- have.should_not respond_to(:problems)
371
- end
372
-
373
- it "should be true if the owner responds to the method" do
374
- have = Have.new(:a_symbol)
375
- have.should respond_to(:to_sym)
376
- end
377
- end
378
- end
379
- end
380
- end
381
- end