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,54 @@
1
+ require 'spec_helper'
2
+ require 'spec/mocks'
3
+
4
+ module Spec
5
+ module Mocks
6
+ describe Space do
7
+ before :each do
8
+ @space = Space.new
9
+ klazz = Class.new do
10
+ def rspec_verify
11
+ @verified = true
12
+ end
13
+ def verified?
14
+ @verified
15
+ end
16
+ def rspec_reset
17
+ @reset = true
18
+ end
19
+ def reset?
20
+ @reset
21
+ end
22
+ end
23
+ @m1 = klazz.new
24
+ @m2 = klazz.new
25
+ end
26
+ it "should verify all mocks within" do
27
+ @space.add(@m1)
28
+ @space.add(@m2)
29
+ @space.verify_all
30
+ @m1.should be_verified
31
+ @m2.should be_verified
32
+ end
33
+ it "should reset all mocks within" do
34
+ @space.add(m1 = mock("mock1"))
35
+ @space.add(m2 = mock("mock2"))
36
+ m1.should_receive(:rspec_reset)
37
+ m2.should_receive(:rspec_reset)
38
+ @space.reset_all
39
+ end
40
+ it "should clear internal mocks on reset_all" do
41
+ @space.add(m = mock("mock"))
42
+ @space.reset_all
43
+ @space.instance_eval { mocks.empty? }.should be_true
44
+ end
45
+ it "should only add an instance once" do
46
+ @space.add(m1 = mock("mock1"))
47
+ @space.add(m1)
48
+ m1.should_receive(:rspec_verify)
49
+ @space.verify_all
50
+ end
51
+ end
52
+ end
53
+ end
54
+
@@ -0,0 +1,594 @@
1
+ require 'spec_helper'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe Mock do
6
+ treats_method_missing_as_private :subject => Mock.new, :noop => false
7
+
8
+ before(:each) do
9
+ @mock = mock("test mock")
10
+ end
11
+
12
+ after(:each) do
13
+ @mock.rspec_reset
14
+ end
15
+
16
+ describe "deprecated #stub_everything method" do
17
+ before(:each) do
18
+ Kernel.stub!(:warn)
19
+ end
20
+
21
+ it "creates a mock that behaves as a null object" do
22
+ stub_everything.should be_null_object
23
+ end
24
+
25
+ it "provides deprecation warning" do
26
+ Kernel.should_receive(:warn).with(/DEPRECATION: stub_everything.* is deprecated./)
27
+ stub_everything
28
+ end
29
+ end
30
+
31
+ it "should report line number of expectation of unreceived message" do
32
+ expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
33
+ begin
34
+ @mock.rspec_verify
35
+ violated
36
+ rescue MockExpectationError => e
37
+ # NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
38
+ e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
39
+ end
40
+ end
41
+
42
+ it "should report line number of expectation of unreceived message after #should_receive after similar stub" do
43
+ @mock.stub!(:wont_happen)
44
+ expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
45
+ begin
46
+ @mock.rspec_verify
47
+ violated
48
+ rescue MockExpectationError => e
49
+ # NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
50
+ e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
51
+ end
52
+ end
53
+
54
+ it "should pass when not receiving message specified as not to be received" do
55
+ @mock.should_not_receive(:not_expected)
56
+ @mock.rspec_verify
57
+ end
58
+
59
+ it "should pass when receiving message specified as not to be received with different args" do
60
+ @mock.should_not_receive(:message).with("unwanted text")
61
+ @mock.should_receive(:message).with("other text")
62
+ @mock.message "other text"
63
+ @mock.rspec_verify
64
+ end
65
+
66
+ it "should fail when receiving message specified as not to be received" do
67
+ @mock.should_not_receive(:not_expected)
68
+ lambda {
69
+ @mock.not_expected
70
+ violated
71
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (no args) 0 times, but received it once")
72
+ end
73
+
74
+ it "should fail when receiving message specified as not to be received with args" do
75
+ @mock.should_not_receive(:not_expected).with("unexpected text")
76
+ lambda {
77
+ @mock.not_expected("unexpected text")
78
+ violated
79
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (\"unexpected text\") 0 times, but received it once")
80
+ end
81
+
82
+ it "should pass when receiving message specified as not to be received with wrong args" do
83
+ @mock.should_not_receive(:not_expected).with("unexpected text")
84
+ @mock.not_expected "really unexpected text"
85
+ @mock.rspec_verify
86
+ end
87
+
88
+ it "should allow block to calculate return values" do
89
+ @mock.should_receive(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
90
+ @mock.something("a","b","c").should == "cba"
91
+ @mock.rspec_verify
92
+ end
93
+
94
+ it "should allow parameter as return value" do
95
+ @mock.should_receive(:something).with("a","b","c").and_return("booh")
96
+ @mock.something("a","b","c").should == "booh"
97
+ @mock.rspec_verify
98
+ end
99
+
100
+ it "should return nil if no return value set" do
101
+ @mock.should_receive(:something).with("a","b","c")
102
+ @mock.something("a","b","c").should be_nil
103
+ @mock.rspec_verify
104
+ end
105
+
106
+ it "should raise exception if args don't match when method called" do
107
+ @mock.should_receive(:something).with("a","b","c").and_return("booh")
108
+ lambda {
109
+ @mock.something("a","d","c")
110
+ violated
111
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: (\"a\", \"d\", \"c\")")
112
+ end
113
+
114
+ it "should raise exception if args don't match when method called even when the method is stubbed" do
115
+ @mock.stub!(:something)
116
+ @mock.should_receive(:something).with("a","b","c")
117
+ lambda {
118
+ @mock.something("a","d","c")
119
+ @mock.rspec_verify
120
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: ([\"a\", \"d\", \"c\"])")
121
+ end
122
+
123
+ it "should raise exception if args don't match when method called even when using null_object" do
124
+ @mock = mock("test mock", :null_object => true)
125
+ @mock.should_receive(:something).with("a","b","c")
126
+ lambda {
127
+ @mock.something("a","d","c")
128
+ @mock.rspec_verify
129
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: ([\"a\", \"d\", \"c\"])")
130
+ end
131
+
132
+ it "should fail if unexpected method called" do
133
+ lambda {
134
+ @mock.something("a","b","c")
135
+ violated
136
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" received unexpected message :something with (\"a\", \"b\", \"c\")")
137
+ end
138
+
139
+ it "should use block for expectation if provided" do
140
+ @mock.should_receive(:something) do | a, b |
141
+ a.should == "a"
142
+ b.should == "b"
143
+ "booh"
144
+ end
145
+ @mock.something("a", "b").should == "booh"
146
+ @mock.rspec_verify
147
+ end
148
+
149
+ it "should fail if expectation block fails" do
150
+ @mock.should_receive(:something) {| bool | bool.should be_true}
151
+ lambda {
152
+ @mock.something false
153
+ }.should raise_error(MockExpectationError, /Mock "test mock" received :something but passed block failed with: expected true, got false/)
154
+ end
155
+
156
+ it "should fail right away when method defined as never is received" do
157
+ @mock.should_receive(:not_expected).never
158
+ lambda {
159
+ @mock.not_expected
160
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (no args) 0 times, but received it once")
161
+ end
162
+
163
+ it "should eventually fail when method defined as never is received" do
164
+ @mock.should_receive(:not_expected).never
165
+ lambda {
166
+ @mock.not_expected
167
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" expected :not_expected with (no args) 0 times, but received it once")
168
+ end
169
+
170
+ it "should raise when told to" do
171
+ @mock.should_receive(:something).and_raise(RuntimeError)
172
+ lambda do
173
+ @mock.something
174
+ end.should raise_error(RuntimeError)
175
+ end
176
+
177
+ it "should raise passed an Exception instance" do
178
+ error = RuntimeError.new("error message")
179
+ @mock.should_receive(:something).and_raise(error)
180
+ lambda {
181
+ @mock.something
182
+ }.should raise_error(RuntimeError, "error message")
183
+ end
184
+
185
+ it "should raise RuntimeError with passed message" do
186
+ @mock.should_receive(:something).and_raise("error message")
187
+ lambda {
188
+ @mock.something
189
+ }.should raise_error(RuntimeError, "error message")
190
+ end
191
+
192
+ it "should not raise when told to if args dont match" do
193
+ @mock.should_receive(:something).with(2).and_raise(RuntimeError)
194
+ lambda {
195
+ @mock.something 1
196
+ }.should raise_error(MockExpectationError)
197
+ end
198
+
199
+ it "should throw when told to" do
200
+ @mock.should_receive(:something).and_throw(:blech)
201
+ lambda {
202
+ @mock.something
203
+ }.should throw_symbol(:blech)
204
+ end
205
+
206
+ it "should raise when explicit return and block constrained" do
207
+ lambda {
208
+ @mock.should_receive(:fruit) do |colour|
209
+ :strawberry
210
+ end.and_return :apple
211
+ }.should raise_error(AmbiguousReturnError)
212
+ end
213
+
214
+ it "should ignore args on any args" do
215
+ @mock.should_receive(:something).at_least(:once).with(any_args)
216
+ @mock.something
217
+ @mock.something 1
218
+ @mock.something "a", 2
219
+ @mock.something [], {}, "joe", 7
220
+ @mock.rspec_verify
221
+ end
222
+
223
+ it "should fail on no args if any args received" do
224
+ @mock.should_receive(:something).with(no_args())
225
+ lambda {
226
+ @mock.something 1
227
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (no args)\n got: (1)")
228
+ end
229
+
230
+ it "should fail when args are expected but none are received" do
231
+ @mock.should_receive(:something).with(1)
232
+ lambda {
233
+ @mock.something
234
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" received :something with unexpected arguments\n expected: (1)\n got: (no args)")
235
+ end
236
+
237
+ it "should return value from block by default" do
238
+ @mock.stub!(:method_that_yields).and_yield
239
+ @mock.method_that_yields { :returned_obj }.should == :returned_obj
240
+ @mock.rspec_verify
241
+ end
242
+
243
+ it "should yield 0 args to blocks that take a variable number of arguments" do
244
+ @mock.should_receive(:yield_back).with(no_args()).once.and_yield
245
+ a = nil
246
+ @mock.yield_back {|*x| a = x}
247
+ a.should == []
248
+ @mock.rspec_verify
249
+ end
250
+
251
+ it "should yield 0 args multiple times to blocks that take a variable number of arguments" do
252
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield.
253
+ and_yield
254
+ a = nil
255
+ b = []
256
+ @mock.yield_back {|*a| b << a}
257
+ b.should == [ [], [] ]
258
+ @mock.rspec_verify
259
+ end
260
+
261
+ it "should yield one arg to blocks that take a variable number of arguments" do
262
+ @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
263
+ a = nil
264
+ @mock.yield_back {|*x| a = x}
265
+ a.should == [99]
266
+ @mock.rspec_verify
267
+ end
268
+
269
+ it "should yield one arg 3 times consecutively to blocks that take a variable number of arguments" do
270
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
271
+ and_yield(43).
272
+ and_yield("something fruity")
273
+ a = nil
274
+ b = []
275
+ @mock.yield_back {|*a| b << a}
276
+ b.should == [[99], [43], ["something fruity"]]
277
+ @mock.rspec_verify
278
+ end
279
+
280
+ it "should yield many args to blocks that take a variable number of arguments" do
281
+ @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99, 27, "go")
282
+ a = nil
283
+ @mock.yield_back {|*x| a = x}
284
+ a.should == [99, 27, "go"]
285
+ @mock.rspec_verify
286
+ end
287
+
288
+ it "should yield many args 3 times consecutively to blocks that take a variable number of arguments" do
289
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
290
+ and_yield("wait", :amber).
291
+ and_yield("stop", 12, :red)
292
+ a = nil
293
+ b = []
294
+ @mock.yield_back {|*a| b << a}
295
+ b.should == [[99, :green, "go"], ["wait", :amber], ["stop", 12, :red]]
296
+ @mock.rspec_verify
297
+ end
298
+
299
+ it "should yield single value" do
300
+ @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
301
+ a = nil
302
+ @mock.yield_back {|x| a = x}
303
+ a.should == 99
304
+ @mock.rspec_verify
305
+ end
306
+
307
+ it "should yield single value 3 times consecutively" do
308
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
309
+ and_yield(43).
310
+ and_yield("something fruity")
311
+ a = nil
312
+ b = []
313
+ @mock.yield_back {|a| b << a}
314
+ b.should == [99, 43, "something fruity"]
315
+ @mock.rspec_verify
316
+ end
317
+
318
+ it "should yield two values" do
319
+ @mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
320
+ a, b = nil
321
+ @mock.yield_back {|x,y| a=x; b=y}
322
+ a.should == 'wha'
323
+ b.should == 'zup'
324
+ @mock.rspec_verify
325
+ end
326
+
327
+ it "should yield two values 3 times consecutively" do
328
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
329
+ and_yield('not', 'down').
330
+ and_yield(14, 65)
331
+ a, b = nil
332
+ c = []
333
+ @mock.yield_back {|a,b| c << [a, b]}
334
+ c.should == [['wha', 'zup'], ['not', 'down'], [14, 65]]
335
+ @mock.rspec_verify
336
+ end
337
+
338
+ it "should fail when calling yielding method with wrong arity" do
339
+ @mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
340
+ lambda {
341
+ @mock.yield_back {|a|}
342
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" yielded |\"wha\", \"zup\"| to block with arity of 1")
343
+ end
344
+
345
+ it "should fail when calling yielding method consecutively with wrong arity" do
346
+ @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
347
+ and_yield('down').
348
+ and_yield(14, 65)
349
+ lambda {
350
+ a, b = nil
351
+ c = []
352
+ @mock.yield_back {|a,b| c << [a, b]}
353
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" yielded |\"down\"| to block with arity of 2")
354
+ end
355
+
356
+ it "should fail when calling yielding method without block" do
357
+ @mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
358
+ lambda {
359
+ @mock.yield_back
360
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" asked to yield |[\"wha\", \"zup\"]| but no block was passed")
361
+ end
362
+
363
+ it "should be able to mock send" do
364
+ @mock.should_receive(:send).with(any_args)
365
+ @mock.send 'hi'
366
+ @mock.rspec_verify
367
+ end
368
+
369
+ it "should be able to raise from method calling yielding mock" do
370
+ @mock.should_receive(:yield_me).and_yield 44
371
+
372
+ lambda {
373
+ @mock.yield_me do |x|
374
+ raise "Bang"
375
+ end
376
+ }.should raise_error(StandardError, "Bang")
377
+
378
+ @mock.rspec_verify
379
+ end
380
+
381
+ it "should clear expectations after verify" do
382
+ @mock.should_receive(:foobar)
383
+ @mock.foobar
384
+ @mock.rspec_verify
385
+ lambda {
386
+ @mock.foobar
387
+ }.should raise_error(MockExpectationError, "Mock \"test mock\" received unexpected message :foobar with (no args)")
388
+ end
389
+
390
+ it "should restore objects to their original state on rspec_reset" do
391
+ mock = mock("this is a mock")
392
+ mock.should_receive(:blah)
393
+ mock.rspec_reset
394
+ mock.rspec_verify #should throw if reset didn't work
395
+ end
396
+
397
+ it "should work even after method_missing starts raising NameErrors instead of NoMethodErrors" do
398
+ # Object#method_missing throws either NameErrors or NoMethodErrors.
399
+ #
400
+ # On a fresh ruby program Object#method_missing:
401
+ # * raises a NoMethodError when called directly
402
+ # * raises a NameError when called indirectly
403
+ #
404
+ # Once Object#method_missing has been called at least once (on any object)
405
+ # it starts behaving differently:
406
+ # * raises a NameError when called directly
407
+ # * raises a NameError when called indirectly
408
+ #
409
+ # There was a bug in Mock#method_missing that relied on the fact
410
+ # that calling Object#method_missing directly raises a NoMethodError.
411
+ # This example tests that the bug doesn't exist anymore.
412
+
413
+
414
+ # Ensures that method_missing always raises NameErrors.
415
+ a_method_that_doesnt_exist rescue
416
+
417
+
418
+ @mock.should_receive(:foobar)
419
+ @mock.foobar
420
+ @mock.rspec_verify
421
+
422
+ lambda { @mock.foobar }.should_not raise_error(NameError)
423
+ lambda { @mock.foobar }.should raise_error(MockExpectationError)
424
+ end
425
+
426
+ it "should temporarily replace a method stub on a mock" do
427
+ @mock.stub!(:msg).and_return(:stub_value)
428
+ @mock.should_receive(:msg).with(:arg).and_return(:mock_value)
429
+ @mock.msg(:arg).should equal(:mock_value)
430
+ @mock.msg.should equal(:stub_value)
431
+ @mock.msg.should equal(:stub_value)
432
+ @mock.rspec_verify
433
+ end
434
+
435
+ it "should not require a different signature to replace a method stub" do
436
+ @mock.stub!(:msg).and_return(:stub_value)
437
+ @mock.should_receive(:msg).and_return(:mock_value)
438
+ @mock.msg(:arg).should equal(:mock_value)
439
+ @mock.msg.should equal(:stub_value)
440
+ @mock.msg.should equal(:stub_value)
441
+ @mock.rspec_verify
442
+ end
443
+
444
+ it "should raise an error when a previously stubbed method has a negative expectation" do
445
+ @mock.stub!(:msg).and_return(:stub_value)
446
+ @mock.should_not_receive(:msg).and_return(:mock_value)
447
+ lambda {@mock.msg(:arg)}.should raise_error(MockExpectationError)
448
+ end
449
+
450
+ it "should temporarily replace a method stub on a non-mock" do
451
+ non_mock = Object.new
452
+ non_mock.stub!(:msg).and_return(:stub_value)
453
+ non_mock.should_receive(:msg).with(:arg).and_return(:mock_value)
454
+ non_mock.msg(:arg).should equal(:mock_value)
455
+ non_mock.msg.should equal(:stub_value)
456
+ non_mock.msg.should equal(:stub_value)
457
+ non_mock.rspec_verify
458
+ end
459
+
460
+ it "should return the stubbed value when no new value specified" do
461
+ @mock.stub!(:msg).and_return(:stub_value)
462
+ @mock.should_receive(:msg)
463
+ @mock.msg.should equal(:stub_value)
464
+ @mock.rspec_verify
465
+ end
466
+
467
+ it "should not mess with the stub's yielded values when also mocked" do
468
+ @mock.stub!(:yield_back).and_yield(:stub_value)
469
+ @mock.should_receive(:yield_back).and_yield(:mock_value)
470
+ @mock.yield_back{|v| v.should == :mock_value }
471
+ @mock.yield_back{|v| v.should == :stub_value }
472
+ @mock.rspec_verify
473
+ end
474
+
475
+ it "should yield multiple values after a similar stub" do
476
+ File.stub!(:open).and_yield(:stub_value)
477
+ File.should_receive(:open).and_yield(:first_call).and_yield(:second_call)
478
+ yielded_args = []
479
+ File.open {|v| yielded_args << v }
480
+ yielded_args.should == [:first_call, :second_call]
481
+ File.open {|v| v.should == :stub_value }
482
+ File.rspec_verify
483
+ end
484
+
485
+ it "should assign stub return values" do
486
+ mock = Mock.new('name', :message => :response)
487
+ mock.message.should == :response
488
+ end
489
+
490
+ end
491
+
492
+ describe "a mock message receiving a block" do
493
+ before(:each) do
494
+ @mock = mock("mock")
495
+ @calls = 0
496
+ end
497
+
498
+ def add_call
499
+ @calls = @calls + 1
500
+ end
501
+
502
+ it "should call the block after #should_receive" do
503
+ @mock.should_receive(:foo) { add_call }
504
+
505
+ @mock.foo
506
+
507
+ @calls.should == 1
508
+ end
509
+
510
+ it "should call the block after #should_receive after a similar stub" do
511
+ @mock.stub!(:foo).and_return(:bar)
512
+ @mock.should_receive(:foo) { add_call }
513
+
514
+ @mock.foo
515
+
516
+ @calls.should == 1
517
+ end
518
+
519
+ it "should call the block after #once" do
520
+ @mock.should_receive(:foo).once { add_call }
521
+
522
+ @mock.foo
523
+
524
+ @calls.should == 1
525
+ end
526
+
527
+ it "should call the block after #twice" do
528
+ @mock.should_receive(:foo).twice { add_call }
529
+
530
+ @mock.foo
531
+ @mock.foo
532
+
533
+ @calls.should == 2
534
+ end
535
+
536
+ it "should call the block after #times" do
537
+ @mock.should_receive(:foo).exactly(10).times { add_call }
538
+
539
+ (1..10).each { @mock.foo }
540
+
541
+ @calls.should == 10
542
+ end
543
+
544
+ it "should call the block after #any_number_of_times" do
545
+ @mock.should_receive(:foo).any_number_of_times { add_call }
546
+
547
+ (1..7).each { @mock.foo }
548
+
549
+ @calls.should == 7
550
+ end
551
+
552
+ it "should call the block after #ordered" do
553
+ @mock.should_receive(:foo).ordered { add_call }
554
+ @mock.should_receive(:bar).ordered { add_call }
555
+
556
+ @mock.foo
557
+ @mock.bar
558
+
559
+ @calls.should == 2
560
+ end
561
+ end
562
+
563
+ describe 'string representation generated by #to_s' do
564
+ it 'should not contain < because that might lead to invalid HTML in some situations' do
565
+ mock = mock("Dog")
566
+ valid_html_str = "#{mock}"
567
+ valid_html_str.should_not include('<')
568
+ end
569
+ end
570
+
571
+ describe "mock created with no name" do
572
+ it "should not use a name in a failure message" do
573
+ mock = mock()
574
+ expect {mock.foo}.to raise_error(/Mock received/)
575
+ end
576
+
577
+ it "should respond to initially stubbed methods" do
578
+ mock = mock(:foo => "woo", :bar => "car")
579
+ mock.foo.should == "woo"
580
+ mock.bar.should == "car"
581
+ end
582
+ end
583
+
584
+ describe "==" do
585
+ it "sends '== self' to the comparison object" do
586
+ first = mock('first')
587
+ second = mock('second')
588
+
589
+ first.should_receive(:==).with(second)
590
+ second == first
591
+ end
592
+ end
593
+ end
594
+ end