has_finder 0.1.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 (432) hide show
  1. data/History.txt +4 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +431 -0
  4. data/README.txt +1 -0
  5. data/Rakefile +4 -0
  6. data/config/hoe.rb +70 -0
  7. data/config/requirements.rb +17 -0
  8. data/lib/has_finder.rb +1 -0
  9. data/lib/has_finder/has_finder.rb +84 -0
  10. data/lib/has_finder/metaid.rb +15 -0
  11. data/lib/has_finder/version.rb +9 -0
  12. data/log/debug.log +0 -0
  13. data/nbproject/private/private.xml +4 -0
  14. data/nbproject/private/rake-t.txt +1 -0
  15. data/nbproject/project.properties +4 -0
  16. data/nbproject/project.xml +15 -0
  17. data/script/destroy +14 -0
  18. data/script/generate +14 -0
  19. data/setup.rb +1585 -0
  20. data/spec/rails/README +182 -0
  21. data/spec/rails/Rakefile +10 -0
  22. data/spec/rails/app/controllers/application.rb +7 -0
  23. data/spec/rails/app/helpers/application_helper.rb +3 -0
  24. data/spec/rails/app/models/being.rb +3 -0
  25. data/spec/rails/config/boot.rb +45 -0
  26. data/spec/rails/config/database.yml +36 -0
  27. data/spec/rails/config/environment.rb +62 -0
  28. data/spec/rails/config/environments/development.rb +21 -0
  29. data/spec/rails/config/environments/production.rb +18 -0
  30. data/spec/rails/config/environments/test.rb +19 -0
  31. data/spec/rails/config/routes.rb +23 -0
  32. data/spec/rails/db/migrate/001_create_beings.rb +12 -0
  33. data/spec/rails/db/schema.rb +17 -0
  34. data/spec/rails/doc/README_FOR_APP +2 -0
  35. data/spec/rails/log/development.log +432 -0
  36. data/spec/rails/log/production.log +0 -0
  37. data/spec/rails/log/server.log +0 -0
  38. data/spec/rails/log/test.log +5820 -0
  39. data/spec/rails/nbproject/private/config.properties +0 -0
  40. data/spec/rails/nbproject/private/private.properties +1 -0
  41. data/spec/rails/nbproject/private/rake-t.txt +54 -0
  42. data/spec/rails/nbproject/project.properties +4 -0
  43. data/spec/rails/nbproject/project.xml +9 -0
  44. data/spec/rails/previous_failures.txt +0 -0
  45. data/spec/rails/public/404.html +30 -0
  46. data/spec/rails/public/500.html +30 -0
  47. data/spec/rails/public/dispatch.cgi +10 -0
  48. data/spec/rails/public/dispatch.fcgi +24 -0
  49. data/spec/rails/public/dispatch.rb +10 -0
  50. data/spec/rails/public/favicon.ico +0 -0
  51. data/spec/rails/public/images/rails.png +0 -0
  52. data/spec/rails/public/index.html +277 -0
  53. data/spec/rails/public/javascripts/application.js +2 -0
  54. data/spec/rails/public/javascripts/controls.js +833 -0
  55. data/spec/rails/public/javascripts/dragdrop.js +942 -0
  56. data/spec/rails/public/javascripts/effects.js +1088 -0
  57. data/spec/rails/public/javascripts/prototype.js +2515 -0
  58. data/spec/rails/public/robots.txt +1 -0
  59. data/spec/rails/script/about +3 -0
  60. data/spec/rails/script/breakpointer +3 -0
  61. data/spec/rails/script/console +3 -0
  62. data/spec/rails/script/destroy +3 -0
  63. data/spec/rails/script/generate +3 -0
  64. data/spec/rails/script/performance/benchmarker +3 -0
  65. data/spec/rails/script/performance/profiler +3 -0
  66. data/spec/rails/script/plugin +3 -0
  67. data/spec/rails/script/process/inspector +3 -0
  68. data/spec/rails/script/process/reaper +3 -0
  69. data/spec/rails/script/process/spawner +3 -0
  70. data/spec/rails/script/runner +3 -0
  71. data/spec/rails/script/server +3 -0
  72. data/spec/rails/script/spec +4 -0
  73. data/spec/rails/script/spec_server +45 -0
  74. data/spec/rails/spec/fixtures/beings.yml +12 -0
  75. data/spec/rails/spec/models/being_spec.rb +98 -0
  76. data/spec/rails/spec/spec.opts +6 -0
  77. data/spec/rails/spec/spec_helper.rb +15 -0
  78. data/spec/rails/test/test_helper.rb +28 -0
  79. data/spec/rails/tmp/sessions/ruby_sess.5edc9bf3b65456d0 +0 -0
  80. data/spec/rails/vendor/plugins/rspec/CHANGES +797 -0
  81. data/spec/rails/vendor/plugins/rspec/MIT-LICENSE +20 -0
  82. data/spec/rails/vendor/plugins/rspec/README +70 -0
  83. data/spec/rails/vendor/plugins/rspec/Rakefile +304 -0
  84. data/spec/rails/vendor/plugins/rspec/UPGRADE +31 -0
  85. data/spec/rails/vendor/plugins/rspec/bin/spec +3 -0
  86. data/spec/rails/vendor/plugins/rspec/bin/spec_translator +8 -0
  87. data/spec/rails/vendor/plugins/rspec/examples/auto_spec_description_example.rb +19 -0
  88. data/spec/rails/vendor/plugins/rspec/examples/before_and_after_example.rb +39 -0
  89. data/spec/rails/vendor/plugins/rspec/examples/behave_as_example.rb +45 -0
  90. data/spec/rails/vendor/plugins/rspec/examples/custom_expectation_matchers.rb +54 -0
  91. data/spec/rails/vendor/plugins/rspec/examples/custom_formatter.rb +11 -0
  92. data/spec/rails/vendor/plugins/rspec/examples/dynamic_spec.rb +9 -0
  93. data/spec/rails/vendor/plugins/rspec/examples/file_accessor.rb +18 -0
  94. data/spec/rails/vendor/plugins/rspec/examples/file_accessor_spec.rb +38 -0
  95. data/spec/rails/vendor/plugins/rspec/examples/greeter_spec.rb +30 -0
  96. data/spec/rails/vendor/plugins/rspec/examples/helper_method_example.rb +11 -0
  97. data/spec/rails/vendor/plugins/rspec/examples/io_processor.rb +8 -0
  98. data/spec/rails/vendor/plugins/rspec/examples/io_processor_spec.rb +21 -0
  99. data/spec/rails/vendor/plugins/rspec/examples/legacy_spec.rb +10 -0
  100. data/spec/rails/vendor/plugins/rspec/examples/mocking_example.rb +27 -0
  101. data/spec/rails/vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb +25 -0
  102. data/spec/rails/vendor/plugins/rspec/examples/not_yet_implemented_spec.rb +12 -0
  103. data/spec/rails/vendor/plugins/rspec/examples/partial_mock_example.rb +28 -0
  104. data/spec/rails/vendor/plugins/rspec/examples/predicate_example.rb +27 -0
  105. data/spec/rails/vendor/plugins/rspec/examples/priority.txt +1 -0
  106. data/spec/rails/vendor/plugins/rspec/examples/shared_behaviours_example.rb +39 -0
  107. data/spec/rails/vendor/plugins/rspec/examples/spec_helper.rb +1 -0
  108. data/spec/rails/vendor/plugins/rspec/examples/stack.rb +36 -0
  109. data/spec/rails/vendor/plugins/rspec/examples/stack_spec.rb +97 -0
  110. data/spec/rails/vendor/plugins/rspec/examples/stubbing_example.rb +69 -0
  111. data/spec/rails/vendor/plugins/rspec/examples/test_case_adapter_example.rb +26 -0
  112. data/spec/rails/vendor/plugins/rspec/examples/test_case_spec.rb +65 -0
  113. data/spec/rails/vendor/plugins/rspec/failing_examples/diffing_spec.rb +36 -0
  114. data/spec/rails/vendor/plugins/rspec/failing_examples/failure_in_setup.rb +10 -0
  115. data/spec/rails/vendor/plugins/rspec/failing_examples/failure_in_teardown.rb +10 -0
  116. data/spec/rails/vendor/plugins/rspec/failing_examples/mocking_example.rb +33 -0
  117. data/spec/rails/vendor/plugins/rspec/failing_examples/mocking_with_flexmock.rb +26 -0
  118. data/spec/rails/vendor/plugins/rspec/failing_examples/mocking_with_mocha.rb +25 -0
  119. data/spec/rails/vendor/plugins/rspec/failing_examples/partial_mock_example.rb +20 -0
  120. data/spec/rails/vendor/plugins/rspec/failing_examples/predicate_example.rb +29 -0
  121. data/spec/rails/vendor/plugins/rspec/failing_examples/raising_example.rb +47 -0
  122. data/spec/rails/vendor/plugins/rspec/failing_examples/spec_helper.rb +1 -0
  123. data/spec/rails/vendor/plugins/rspec/failing_examples/syntax_error_example.rb +7 -0
  124. data/spec/rails/vendor/plugins/rspec/failing_examples/team_spec.rb +46 -0
  125. data/spec/rails/vendor/plugins/rspec/failing_examples/timeout_behaviour.rb +7 -0
  126. data/spec/rails/vendor/plugins/rspec/init.rb +3 -0
  127. data/spec/rails/vendor/plugins/rspec/lib/autotest/discover.rb +3 -0
  128. data/spec/rails/vendor/plugins/rspec/lib/autotest/rspec.rb +67 -0
  129. data/spec/rails/vendor/plugins/rspec/lib/spec.rb +13 -0
  130. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl.rb +10 -0
  131. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb +210 -0
  132. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour_callbacks.rb +78 -0
  133. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour_eval.rb +220 -0
  134. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb +42 -0
  135. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb +28 -0
  136. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/configuration.rb +119 -0
  137. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/description.rb +69 -0
  138. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/example.rb +127 -0
  139. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb +40 -0
  140. data/spec/rails/vendor/plugins/rspec/lib/spec/dsl/example_should_raise_handler.rb +74 -0
  141. data/spec/rails/vendor/plugins/rspec/lib/spec/expectations.rb +56 -0
  142. data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/differs/default.rb +61 -0
  143. data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/errors.rb +6 -0
  144. data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/extensions.rb +2 -0
  145. data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb +66 -0
  146. data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  147. data/spec/rails/vendor/plugins/rspec/lib/spec/expectations/handler.rb +43 -0
  148. data/spec/rails/vendor/plugins/rspec/lib/spec/extensions.rb +1 -0
  149. data/spec/rails/vendor/plugins/rspec/lib/spec/extensions/object.rb +6 -0
  150. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers.rb +166 -0
  151. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/be.rb +206 -0
  152. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/be_close.rb +37 -0
  153. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/change.rb +120 -0
  154. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/eql.rb +43 -0
  155. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/equal.rb +43 -0
  156. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/has.rb +44 -0
  157. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/have.rb +145 -0
  158. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/include.rb +70 -0
  159. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/match.rb +41 -0
  160. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb +72 -0
  161. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/raise_error.rb +100 -0
  162. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/respond_to.rb +45 -0
  163. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/satisfy.rb +47 -0
  164. data/spec/rails/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb +72 -0
  165. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks.rb +208 -0
  166. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/argument_constraint_matchers.rb +27 -0
  167. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb +183 -0
  168. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb +84 -0
  169. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/errors.rb +10 -0
  170. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb +3 -0
  171. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb +231 -0
  172. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/methods.rb +35 -0
  173. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/mock.rb +29 -0
  174. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/order_group.rb +29 -0
  175. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/proxy.rb +163 -0
  176. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/space.rb +28 -0
  177. data/spec/rails/vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb +30 -0
  178. data/spec/rails/vendor/plugins/rspec/lib/spec/rake/spectask.rb +175 -0
  179. data/spec/rails/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb +52 -0
  180. data/spec/rails/vendor/plugins/rspec/lib/spec/runner.rb +165 -0
  181. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb +56 -0
  182. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb +102 -0
  183. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/command_line.rb +22 -0
  184. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb +21 -0
  185. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/extensions/kernel.rb +50 -0
  186. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/extensions/object.rb +32 -0
  187. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter.rb +9 -0
  188. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb +68 -0
  189. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb +102 -0
  190. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
  191. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
  192. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb +316 -0
  193. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb +30 -0
  194. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb +24 -0
  195. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  196. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb +28 -0
  197. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb +72 -0
  198. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  199. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/option_parser.rb +226 -0
  200. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/options.rb +158 -0
  201. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/reporter.rb +114 -0
  202. data/spec/rails/vendor/plugins/rspec/lib/spec/runner/spec_parser.rb +50 -0
  203. data/spec/rails/vendor/plugins/rspec/lib/spec/test_case_adapter.rb +10 -0
  204. data/spec/rails/vendor/plugins/rspec/lib/spec/translator.rb +106 -0
  205. data/spec/rails/vendor/plugins/rspec/lib/spec/version.rb +22 -0
  206. data/spec/rails/vendor/plugins/rspec/plugins/mock_frameworks/flexmock.rb +27 -0
  207. data/spec/rails/vendor/plugins/rspec/plugins/mock_frameworks/mocha.rb +21 -0
  208. data/spec/rails/vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb +18 -0
  209. data/spec/rails/vendor/plugins/rspec/rake_tasks/examples.rake +7 -0
  210. data/spec/rails/vendor/plugins/rspec/rake_tasks/examples_specdoc.rake +9 -0
  211. data/spec/rails/vendor/plugins/rspec/rake_tasks/examples_with_rcov.rake +9 -0
  212. data/spec/rails/vendor/plugins/rspec/rake_tasks/failing_examples_with_html.rake +9 -0
  213. data/spec/rails/vendor/plugins/rspec/rake_tasks/verify_rcov.rake +7 -0
  214. data/spec/rails/vendor/plugins/rspec/spec.opts +13 -0
  215. data/spec/rails/vendor/plugins/rspec/spec/README.jruby +14 -0
  216. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
  217. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
  218. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/behaviour_spec.rb +624 -0
  219. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
  220. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb +50 -0
  221. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/description_spec.rb +81 -0
  222. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/example_class_spec.rb +24 -0
  223. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb +162 -0
  224. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb +137 -0
  225. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
  226. data/spec/rails/vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb +228 -0
  227. data/spec/rails/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb +107 -0
  228. data/spec/rails/vendor/plugins/rspec/spec/spec/expectations/extensions/object_spec.rb +46 -0
  229. data/spec/rails/vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb +71 -0
  230. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb +39 -0
  231. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb +209 -0
  232. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb +232 -0
  233. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb +159 -0
  234. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb +28 -0
  235. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb +28 -0
  236. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb +48 -0
  237. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/handler_spec.rb +88 -0
  238. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/has_spec.rb +37 -0
  239. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb +272 -0
  240. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/include_spec.rb +45 -0
  241. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb +37 -0
  242. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb +78 -0
  243. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
  244. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb +158 -0
  245. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb +147 -0
  246. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb +54 -0
  247. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb +36 -0
  248. data/spec/rails/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb +51 -0
  249. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb +29 -0
  250. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb +19 -0
  251. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb +97 -0
  252. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb +93 -0
  253. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  254. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  255. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  256. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  257. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  258. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +114 -0
  259. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb +84 -0
  260. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb +54 -0
  261. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb +377 -0
  262. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  263. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb +40 -0
  264. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb +53 -0
  265. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb +33 -0
  266. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb +52 -0
  267. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  268. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +148 -0
  269. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb +52 -0
  270. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb +26 -0
  271. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb +159 -0
  272. data/spec/rails/vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb +67 -0
  273. data/spec/rails/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb +12 -0
  274. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/behaviour_runner_spec.rb +206 -0
  275. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb +33 -0
  276. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/context_matching_spec.rb +27 -0
  277. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb +81 -0
  278. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/empty_file.txt +0 -0
  279. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/example_matcher_spec.rb +127 -0
  280. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/examples.txt +2 -0
  281. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb +31 -0
  282. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/extensions/kernel_spec.rb +36 -0
  283. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/failed.txt +3 -0
  284. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
  285. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
  286. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html +333 -0
  287. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +344 -0
  288. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html +338 -0
  289. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html +338 -0
  290. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb +56 -0
  291. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
  292. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
  293. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
  294. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +19 -0
  295. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb +46 -0
  296. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
  297. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
  298. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb +56 -0
  299. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb +63 -0
  300. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb +14 -0
  301. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  302. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb +11 -0
  303. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb +348 -0
  304. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/options_spec.rb +142 -0
  305. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +56 -0
  306. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb +153 -0
  307. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/spec.opts +2 -0
  308. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb +93 -0
  309. data/spec/rails/vendor/plugins/rspec/spec/spec/runner/spec_spaced.opts +2 -0
  310. data/spec/rails/vendor/plugins/rspec/spec/spec/spec_classes.rb +111 -0
  311. data/spec/rails/vendor/plugins/rspec/spec/spec/translator_spec.rb +216 -0
  312. data/spec/rails/vendor/plugins/rspec/spec/spec_helper.rb +43 -0
  313. data/spec/rails/vendor/plugins/rspec_on_rails/MIT-LICENSE +31 -0
  314. data/spec/rails/vendor/plugins/rspec_on_rails/README +1 -0
  315. data/spec/rails/vendor/plugins/rspec_on_rails/Rakefile +9 -0
  316. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/CHANGES +1 -0
  317. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/rspec_generator.rb +31 -0
  318. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt +0 -0
  319. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec +4 -0
  320. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec_server +45 -0
  321. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec.opts +6 -0
  322. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb +26 -0
  323. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/USAGE +33 -0
  324. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/rspec_controller_generator.rb +42 -0
  325. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/controller_spec.rb +23 -0
  326. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/helper_spec.rb +11 -0
  327. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/view_spec.rb +12 -0
  328. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_model/USAGE +18 -0
  329. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_model/rspec_model_generator.rb +30 -0
  330. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_model/templates/model_spec.rb +11 -0
  331. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/rspec_scaffold_generator.rb +161 -0
  332. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/controller_spec.rb +303 -0
  333. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/edit_erb_spec.rb +25 -0
  334. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/helper_spec.rb +4 -0
  335. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/index_erb_spec.rb +22 -0
  336. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/new_erb_spec.rb +26 -0
  337. data/spec/rails/vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/show_erb_spec.rb +22 -0
  338. data/spec/rails/vendor/plugins/rspec_on_rails/init.rb +9 -0
  339. data/spec/rails/vendor/plugins/rspec_on_rails/lib/autotest/rails_rspec.rb +81 -0
  340. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/dsl.rb +2 -0
  341. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/dsl/configuration.rb +23 -0
  342. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/matchers.rb +3 -0
  343. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/matchers/have.rb +12 -0
  344. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails.rb +57 -0
  345. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl.rb +40 -0
  346. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/assigns_hash_proxy.rb +42 -0
  347. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour.rb +8 -0
  348. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/base.rb +82 -0
  349. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/controller.rb +246 -0
  350. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/functional.rb +90 -0
  351. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/helper.rb +100 -0
  352. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/model.rb +21 -0
  353. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb +185 -0
  354. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/ivar_proxy.rb +62 -0
  355. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions.rb +7 -0
  356. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/base.rb +11 -0
  357. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb +10 -0
  358. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/test_response.rb +5 -0
  359. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_view/base.rb +26 -0
  360. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb +29 -0
  361. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/object.rb +5 -0
  362. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers.rb +29 -0
  363. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/assert_select.rb +131 -0
  364. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +55 -0
  365. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/redirect_to.rb +106 -0
  366. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/render_template.rb +63 -0
  367. data/spec/rails/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb +26 -0
  368. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/assigns_hash_proxy_spec.rb +55 -0
  369. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/behaviour_factory_spec.rb +53 -0
  370. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_isolation_spec.rb +43 -0
  371. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_spec_spec.rb +124 -0
  372. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/helper_spec_spec.rb +62 -0
  373. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/ivar_proxy_spec.rb +64 -0
  374. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/model_spec_spec.rb +14 -0
  375. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/shared_behaviour_spec.rb +16 -0
  376. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/test_unit_assertion_accessibility_spec.rb +28 -0
  377. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/dsl/view_spec_spec.rb +165 -0
  378. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/extensions/active_record_spec.rb +17 -0
  379. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/assert_select_spec.rb +718 -0
  380. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/description_generation_spec.rb +42 -0
  381. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/redirect_to_spec.rb +183 -0
  382. data/spec/rails/vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +112 -0
  383. data/spec/rails/vendor/plugins/rspec_on_rails/spec/spec_helper.rb +40 -0
  384. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/controller_spec_controller.rb +36 -0
  385. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/redirect_spec_controller.rb +59 -0
  386. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/render_spec_controller.rb +18 -0
  387. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/controllers/rjs_spec_controller.rb +58 -0
  388. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/explicit_helper.rb +10 -0
  389. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/more_explicit_helper.rb +5 -0
  390. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/plugin_application_helper.rb +6 -0
  391. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/helpers/view_spec_helper.rb +13 -0
  392. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_a_partial.rhtml +0 -0
  393. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml +1 -0
  394. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml +1 -0
  395. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml +0 -0
  396. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml +1 -0
  397. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_template.rhtml +1 -0
  398. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml +0 -0
  399. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.js.rjs +1 -0
  400. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml +0 -0
  401. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rjs +1 -0
  402. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml +1 -0
  403. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_div.rjs +1 -0
  404. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_page_element.rjs +1 -0
  405. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/insert_html.rjs +1 -0
  406. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace.rjs +1 -0
  407. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html.rjs +1 -0
  408. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs +1 -0
  409. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_effect.rjs +1 -0
  410. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs +1 -0
  411. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/no_tags.rhtml +1 -0
  412. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml +1 -0
  413. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml +1 -0
  414. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_included_partial.rhtml +2 -0
  415. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_included_partial_collection_with_spacer_template.rhtml +1 -0
  416. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml +1 -0
  417. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_spacer.rhtml +1 -0
  418. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/accessor.rhtml +3 -0
  419. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/entry_form.rhtml +2 -0
  420. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/explicit_helper.rhtml +2 -0
  421. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/multiple_helpers.rhtml +3 -0
  422. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/partial_collection_including_template.rhtml +2 -0
  423. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/partial_including_template.rhtml +2 -0
  424. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/partial_with_array.rhtml +1 -0
  425. data/spec/rails/vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/show.rhtml +2 -0
  426. data/spec/rails/vendor/plugins/rspec_on_rails/tasks/rspec.rake +90 -0
  427. data/tasks/deployment.rake +27 -0
  428. data/tasks/environment.rake +7 -0
  429. data/tasks/website.rake +9 -0
  430. data/test/test_has_finder.rb +11 -0
  431. data/test/test_helper.rb +2 -0
  432. metadata +490 -0
@@ -0,0 +1,17 @@
1
+ module Spec
2
+ module Expectations
3
+ module StringHelpers
4
+ def starts_with?(prefix)
5
+ to_s[0..(prefix.to_s.length - 1)] == prefix.to_s
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ class String
12
+ include Spec::Expectations::StringHelpers
13
+ end
14
+
15
+ class Symbol
16
+ include Spec::Expectations::StringHelpers
17
+ end
@@ -0,0 +1,43 @@
1
+ module Spec
2
+ module Expectations
3
+
4
+ module MatcherHandlerHelper
5
+ def describe(matcher)
6
+ matcher.respond_to?(:description) ? matcher.description : "[#{matcher.class.name} does not provide a description]"
7
+ end
8
+ end
9
+
10
+ class ExpectationMatcherHandler
11
+ class << self
12
+ include MatcherHandlerHelper
13
+ def handle_matcher(actual, matcher, &block)
14
+ match = matcher.matches?(actual, &block)
15
+ ::Spec::Matchers.generated_description = "should #{describe(matcher)}"
16
+ Spec::Expectations.fail_with(matcher.failure_message) unless match
17
+ end
18
+ end
19
+ end
20
+
21
+ class NegativeExpectationMatcherHandler
22
+ class << self
23
+ include MatcherHandlerHelper
24
+ def handle_matcher(actual, matcher, &block)
25
+ unless matcher.respond_to?(:negative_failure_message)
26
+ Spec::Expectations.fail_with(
27
+ <<-EOF
28
+ Matcher does not support should_not.
29
+ See Spec::Matchers for more information
30
+ about matchers.
31
+ EOF
32
+ )
33
+ end
34
+ match = matcher.matches?(actual, &block)
35
+ ::Spec::Matchers.generated_description = "should not #{describe(matcher)}"
36
+ Spec::Expectations.fail_with(matcher.negative_failure_message) if match
37
+ end
38
+ end
39
+ end
40
+
41
+ end
42
+ end
43
+
@@ -0,0 +1 @@
1
+ require 'spec/extensions/object'
@@ -0,0 +1,6 @@
1
+ class Object
2
+ def args_and_options(*args)
3
+ options = Hash === args.last ? args.pop : {}
4
+ return args, options
5
+ end
6
+ end
@@ -0,0 +1,166 @@
1
+ require 'spec/matchers/be'
2
+ require 'spec/matchers/be_close'
3
+ require 'spec/matchers/change'
4
+ require 'spec/matchers/eql'
5
+ require 'spec/matchers/equal'
6
+ require 'spec/matchers/has'
7
+ require 'spec/matchers/have'
8
+ require 'spec/matchers/include'
9
+ require 'spec/matchers/match'
10
+ require 'spec/matchers/raise_error'
11
+ require 'spec/matchers/respond_to'
12
+ require 'spec/matchers/satisfy'
13
+ require 'spec/matchers/throw_symbol'
14
+ require 'spec/matchers/operator_matcher'
15
+
16
+ module Spec
17
+
18
+ # RSpec ships with a number of useful Expression Matchers. An Expression Matcher
19
+ # is any object that responds to the following methods:
20
+ #
21
+ # matches?(actual)
22
+ # failure_message
23
+ # negative_failure_message #optional
24
+ # description #optional
25
+ #
26
+ # See Spec::Expectations to learn how to use these as Expectation Matchers.
27
+ # See Spec::Mocks to learn how to use them as Mock Argument Constraints.
28
+ #
29
+ # == Predicates
30
+ #
31
+ # In addition to those Expression Matchers that are defined explicitly, RSpec will
32
+ # create custom Matchers on the fly for any arbitrary predicate, giving your specs
33
+ # a much more natural language feel.
34
+ #
35
+ # A Ruby predicate is a method that ends with a "?" and returns true or false.
36
+ # Common examples are +empty?+, +nil?+, and +instance_of?+.
37
+ #
38
+ # All you need to do is write +should be_+ followed by the predicate without
39
+ # the question mark, and RSpec will figure it out from there. For example:
40
+ #
41
+ # [].should be_empty => [].empty? #passes
42
+ # [].should_not be_empty => [].empty? #fails
43
+ #
44
+ # In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
45
+ # and "be_an_", making your specs read much more naturally:
46
+ #
47
+ # "a string".should be_an_instance_of(String) =>"a string".instance_of?(String) #passes
48
+ #
49
+ # 3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
50
+ # 3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
51
+ # 3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
52
+ # 3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
53
+ #
54
+ # RSpec will also create custom matchers for predicates like +has_key?+. To
55
+ # use this feature, just state that the object should have_key(:key) and RSpec will
56
+ # call has_key?(:key) on the target. For example:
57
+ #
58
+ # {:a => "A"}.should have_key(:a) => {:a => "A"}.has_key?(:a) #passes
59
+ # {:a => "A"}.should have_key(:b) => {:a => "A"}.has_key?(:b) #fails
60
+ #
61
+ # You can use this feature to invoke any predicate that begins with "has_", whether it is
62
+ # part of the Ruby libraries (like +Hash#has_key?+) or a method you wrote on your own class.
63
+ #
64
+ # == Custom Expectation Matchers
65
+ #
66
+ # When you find that none of the stock Expectation Matchers provide a natural
67
+ # feeling expectation, you can very easily write your own.
68
+ #
69
+ # For example, imagine that you are writing a game in which players can
70
+ # be in various zones on a virtual board. To specify that bob should
71
+ # be in zone 4, you could say:
72
+ #
73
+ # bob.current_zone.should eql(Zone.new("4"))
74
+ #
75
+ # But you might find it more expressive to say:
76
+ #
77
+ # bob.should be_in_zone("4")
78
+ #
79
+ # and/or
80
+ #
81
+ # bob.should_not be_in_zone("3")
82
+ #
83
+ # To do this, you would need to write a class like this:
84
+ #
85
+ # class BeInZone
86
+ # def initialize(expected)
87
+ # @expected = expected
88
+ # end
89
+ # def matches?(target)
90
+ # @target = target
91
+ # @target.current_zone.eql?(Zone.new(@expected))
92
+ # end
93
+ # def failure_message
94
+ # "expected #{@target.inspect} to be in Zone #{@expected}"
95
+ # end
96
+ # def negative_failure_message
97
+ # "expected #{@target.inspect} not to be in Zone #{@expected}"
98
+ # end
99
+ # end
100
+ #
101
+ # ... and a method like this:
102
+ #
103
+ # def be_in_zone(expected)
104
+ # BeInZone.new(expected)
105
+ # end
106
+ #
107
+ # And then expose the method to your specs. This is normally done
108
+ # by including the method and the class in a module, which is then
109
+ # included in your spec:
110
+ #
111
+ # module CustomGameMatchers
112
+ # class BeInZone
113
+ # ...
114
+ # end
115
+ #
116
+ # def be_in_zone(expected)
117
+ # ...
118
+ # end
119
+ # end
120
+ #
121
+ # describe "Player behaviour" do
122
+ # include CustomGameMatchers
123
+ # ...
124
+ # end
125
+ #
126
+ # or you can include in globally in a spec_helper.rb file <tt>require</tt>d
127
+ # from your spec file(s):
128
+ #
129
+ # Spec::Runner.configure do |config|
130
+ # config.include(CustomGameMatchers)
131
+ # end
132
+ #
133
+ module Matchers
134
+ module ModuleMethods
135
+ def description_generated(callback)
136
+ description_generated_callbacks << callback
137
+ end
138
+
139
+ def unregister_description_generated(callback)
140
+ description_generated_callbacks.delete(callback)
141
+ end
142
+
143
+ def generated_description=(name)
144
+ description_generated_callbacks.each do |callback|
145
+ callback.call(name)
146
+ end
147
+ end
148
+
149
+ private
150
+ def description_generated_callbacks
151
+ @description_generated_callbacks ||= []
152
+ end
153
+ end
154
+ extend ModuleMethods
155
+
156
+ def method_missing(sym, *args, &block) # :nodoc:
157
+ return Matchers::Be.new(sym, *args) if sym.starts_with?("be_")
158
+ return Matchers::Has.new(sym, *args) if sym.starts_with?("have_")
159
+ super
160
+ end
161
+
162
+ class MatcherError < StandardError
163
+ end
164
+
165
+ end
166
+ end
@@ -0,0 +1,206 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class Be #:nodoc:
5
+ def initialize(*args)
6
+ @expected = parse_expected(args.shift)
7
+ @args = args
8
+ @comparison = ""
9
+ end
10
+
11
+ def matches?(actual)
12
+ @actual = actual
13
+ return true if match_or_compare unless handling_predicate?
14
+ if handling_predicate?
15
+ begin
16
+ return @result = actual.__send__(predicate, *@args)
17
+ rescue => predicate_error
18
+ # This clause should be empty, but rcov will not report it as covered
19
+ # unless something (anything) is executed within the clause
20
+ rcov_error_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
21
+ end
22
+
23
+ # This supports should_exist > target.exists? in the old world.
24
+ # We should consider deprecating that ability as in the new world
25
+ # you can't write "should exist" unless you have your own custom matcher.
26
+ begin
27
+ return @result = actual.__send__(present_tense_predicate, *@args)
28
+ rescue
29
+ raise predicate_error
30
+ end
31
+ end
32
+ return false
33
+ end
34
+
35
+ def failure_message
36
+ return "expected #{@comparison}#{expected}, got #{@actual.inspect}" unless handling_predicate?
37
+ return "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
38
+ end
39
+
40
+ def negative_failure_message
41
+ return "expected not #{expected}, got #{@actual.inspect}" unless handling_predicate?
42
+ return "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
43
+ end
44
+
45
+ def expected
46
+ return true if @expected == :true
47
+ return false if @expected == :false
48
+ return "nil" if @expected == :nil
49
+ return @expected.inspect
50
+ end
51
+
52
+ def match_or_compare
53
+ return @actual == true if @expected == :true
54
+ return @actual == false if @expected == :false
55
+ return @actual.nil? if @expected == :nil
56
+ return @actual < @expected if @less_than
57
+ return @actual <= @expected if @less_than_or_equal
58
+ return @actual >= @expected if @greater_than_or_equal
59
+ return @actual > @expected if @greater_than
60
+ return @actual == @expected if @double_equal
61
+ return @actual === @expected if @triple_equal
62
+ return @actual.equal?(@expected)
63
+ end
64
+
65
+ def ==(expected)
66
+ @double_equal = true
67
+ @comparison = "== "
68
+ @expected = expected
69
+ self
70
+ end
71
+
72
+ def ===(expected)
73
+ @triple_equal = true
74
+ @comparison = "=== "
75
+ @expected = expected
76
+ self
77
+ end
78
+
79
+ def <(expected)
80
+ @less_than = true
81
+ @comparison = "< "
82
+ @expected = expected
83
+ self
84
+ end
85
+
86
+ def <=(expected)
87
+ @less_than_or_equal = true
88
+ @comparison = "<= "
89
+ @expected = expected
90
+ self
91
+ end
92
+
93
+ def >=(expected)
94
+ @greater_than_or_equal = true
95
+ @comparison = ">= "
96
+ @expected = expected
97
+ self
98
+ end
99
+
100
+ def >(expected)
101
+ @greater_than = true
102
+ @comparison = "> "
103
+ @expected = expected
104
+ self
105
+ end
106
+
107
+ def description
108
+ "#{prefix_to_sentence}#{comparison}#{expected_to_sentence}#{args_to_sentence}"
109
+ end
110
+
111
+ private
112
+ def parse_expected(expected)
113
+ if Symbol === expected
114
+ @handling_predicate = true
115
+ ["be_an_","be_a_","be_"].each do |@prefix|
116
+ return "#{expected.to_s.sub(@prefix,"")}".to_sym if expected.starts_with?(@prefix)
117
+ end
118
+ end
119
+ @prefix = "be "
120
+ return expected
121
+ end
122
+
123
+ def handling_predicate?
124
+ return false if [:true, :false, :nil].include?(@expected)
125
+ return @handling_predicate
126
+ end
127
+
128
+ def predicate
129
+ "#{@expected.to_s}?".to_sym
130
+ end
131
+
132
+ def present_tense_predicate
133
+ "#{@expected.to_s}s?".to_sym
134
+ end
135
+
136
+ def args_to_s
137
+ return "" if @args.empty?
138
+ inspected_args = @args.collect{|a| a.inspect}
139
+ return "(#{inspected_args.join(', ')})"
140
+ end
141
+
142
+ def comparison
143
+ @comparison
144
+ end
145
+
146
+ def expected_to_sentence
147
+ split_words(@expected)
148
+ end
149
+
150
+ def prefix_to_sentence
151
+ split_words(@prefix)
152
+ end
153
+
154
+ def split_words(sym)
155
+ sym.to_s.gsub(/_/,' ')
156
+ end
157
+
158
+ def args_to_sentence
159
+ case @args.length
160
+ when 0
161
+ ""
162
+ when 1
163
+ " #{@args[0]}"
164
+ else
165
+ " #{@args[0...-1].join(', ')} and #{@args[-1]}"
166
+ end
167
+ end
168
+
169
+ end
170
+
171
+ # :call-seq:
172
+ # should be_true
173
+ # should be_false
174
+ # should be_nil
175
+ # should be_arbitrary_predicate(*args)
176
+ # should_not be_nil
177
+ # should_not be_arbitrary_predicate(*args)
178
+ #
179
+ # Given true, false, or nil, will pass if actual is
180
+ # true, false or nil (respectively).
181
+ #
182
+ # Predicates are any Ruby method that ends in a "?" and returns true or false.
183
+ # Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
184
+ # convert that into a query against the target object.
185
+ #
186
+ # The arbitrary_predicate feature will handle any predicate
187
+ # prefixed with "be_an_" (e.g. be_an_instance_of), "be_a_" (e.g. be_a_kind_of)
188
+ # or "be_" (e.g. be_empty), letting you choose the prefix that best suits the predicate.
189
+ #
190
+ # == Examples
191
+ #
192
+ # target.should be_true
193
+ # target.should be_false
194
+ # target.should be_nil
195
+ # target.should_not be_nil
196
+ #
197
+ # collection.should be_empty #passes if target.empty?
198
+ # "this string".should be_an_intance_of(String)
199
+ #
200
+ # target.should_not be_empty #passes unless target.empty?
201
+ # target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
202
+ def be(*args)
203
+ Matchers::Be.new(*args)
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,37 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class BeClose #:nodoc:
5
+ def initialize(expected, delta)
6
+ @expected = expected
7
+ @delta = delta
8
+ end
9
+
10
+ def matches?(actual)
11
+ @actual = actual
12
+ (@actual - @expected).abs < @delta
13
+ end
14
+
15
+ def failure_message
16
+ "expected #{@expected} +/- (< #{@delta}), got #{@actual}"
17
+ end
18
+
19
+ def description
20
+ "be close to #{@expected} (within +- #{@delta})"
21
+ end
22
+ end
23
+
24
+ # :call-seq:
25
+ # should be_close(expected, delta)
26
+ # should_not be_close(expected, delta)
27
+ #
28
+ # Passes if actual == expected +/- delta
29
+ #
30
+ # == Example
31
+ #
32
+ # result.should be_close(3.0, 0.5)
33
+ def be_close(expected, delta)
34
+ Matchers::BeClose.new(expected, delta)
35
+ end
36
+ end
37
+ end