media-path 0.1

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