hubbub 0.0.6

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 (661) hide show
  1. data/LICENSE +1 -0
  2. data/README +1 -0
  3. data/lib/app/controllers/application_controller.rb +71 -0
  4. data/lib/app/controllers/articles_controller.rb +64 -0
  5. data/lib/app/controllers/home_controller.rb +7 -0
  6. data/lib/app/controllers/pages_controller.rb +17 -0
  7. data/lib/app/controllers/tags_controller.rb +31 -0
  8. data/lib/app/controllers/user_sessions_controller.rb +32 -0
  9. data/lib/app/helpers/application_helper.rb +14 -0
  10. data/lib/app/helpers/articles_helper.rb +2 -0
  11. data/lib/app/helpers/home_helper.rb +2 -0
  12. data/lib/app/helpers/logins_helper.rb +2 -0
  13. data/lib/app/helpers/pages_helper.rb +2 -0
  14. data/lib/app/helpers/tags_helper.rb +2 -0
  15. data/lib/app/models/article.rb +63 -0
  16. data/lib/app/models/page.rb +11 -0
  17. data/lib/app/models/tag.rb +31 -0
  18. data/lib/app/models/tagging.rb +7 -0
  19. data/lib/app/models/user.rb +3 -0
  20. data/lib/app/models/user_session.rb +3 -0
  21. data/lib/app/views/articles/_article.html.erb +37 -0
  22. data/lib/app/views/articles/_comments.html.erb +20 -0
  23. data/lib/app/views/articles/_form.html.erb +8 -0
  24. data/lib/app/views/articles/_item.html.erb +25 -0
  25. data/lib/app/views/articles/_pagination.html.erb +5 -0
  26. data/lib/app/views/articles/create.html.erb +2 -0
  27. data/lib/app/views/articles/destroy.html.erb +2 -0
  28. data/lib/app/views/articles/edit.html.erb +12 -0
  29. data/lib/app/views/articles/head/_show.html.erb +2 -0
  30. data/lib/app/views/articles/index.atom.builder +16 -0
  31. data/lib/app/views/articles/index.html.erb +52 -0
  32. data/lib/app/views/articles/new.html.erb +11 -0
  33. data/lib/app/views/articles/scripts/_show.html.erb +5 -0
  34. data/lib/app/views/articles/show.html.erb +21 -0
  35. data/lib/app/views/articles/update.html.erb +2 -0
  36. data/lib/app/views/errors/error_404.html.erb +10 -0
  37. data/lib/app/views/home/head/_index.html.erb +2 -0
  38. data/lib/app/views/home/index.html.erb +27 -0
  39. data/lib/app/views/home/scripts/_index.html.erb +5 -0
  40. data/lib/app/views/layouts/application.html.erb +50 -0
  41. data/lib/app/views/layouts/login.html.erb +24 -0
  42. data/lib/app/views/pages/_form.html.erb +7 -0
  43. data/lib/app/views/pages/_item.html.erb +13 -0
  44. data/lib/app/views/pages/_page.html.erb +17 -0
  45. data/lib/app/views/pages/create.html.erb +2 -0
  46. data/lib/app/views/pages/destroy.html.erb +2 -0
  47. data/lib/app/views/pages/edit.html.erb +13 -0
  48. data/lib/app/views/pages/head/_show.html.erb +2 -0
  49. data/lib/app/views/pages/index.html.erb +30 -0
  50. data/lib/app/views/pages/new.html.erb +12 -0
  51. data/lib/app/views/pages/scripts/_show.html.erb +5 -0
  52. data/lib/app/views/pages/show.html.erb +28 -0
  53. data/lib/app/views/pages/update.html.erb +2 -0
  54. data/lib/app/views/shared/_analytics.html.erb +1 -0
  55. data/lib/app/views/shared/_copyright.html.erb +1 -0
  56. data/lib/app/views/shared/_disqus.html.erb +16 -0
  57. data/lib/app/views/shared/_footer.html.erb +8 -0
  58. data/lib/app/views/shared/_header.html.erb +11 -0
  59. data/lib/app/views/shared/_meetup.html.erb +12 -0
  60. data/lib/app/views/shared/_navigation.html.erb +32 -0
  61. data/lib/app/views/shared/_site_id.html.erb +2 -0
  62. data/lib/app/views/shared/_sitesearch.html.erb +7 -0
  63. data/lib/app/views/shared/extend/_head.html.erb +0 -0
  64. data/lib/app/views/shared/extend/_scripts.html.erb +3 -0
  65. data/lib/app/views/tags/_form.html.erb +6 -0
  66. data/lib/app/views/tags/_tag.html.erb +3 -0
  67. data/lib/app/views/tags/destroy.html.erb +2 -0
  68. data/lib/app/views/tags/edit.html.erb +12 -0
  69. data/lib/app/views/tags/index.html.erb +23 -0
  70. data/lib/app/views/tags/show.atom.builder +16 -0
  71. data/lib/app/views/tags/show.html.erb +39 -0
  72. data/lib/app/views/tags/update.html.erb +2 -0
  73. data/lib/app/views/user_sessions/new.html.erb +8 -0
  74. data/lib/config/database.yml +22 -0
  75. data/lib/config/environments/development.rb +17 -0
  76. data/lib/config/environments/production.rb +28 -0
  77. data/lib/config/environments/test.rb +28 -0
  78. data/lib/config/hubbub.yml +25 -0
  79. data/lib/config/hubbub.yml.example +25 -0
  80. data/lib/config/initializers/backtrace_silencers.rb +7 -0
  81. data/lib/config/initializers/formtastic.rb +51 -0
  82. data/lib/config/initializers/inflections.rb +10 -0
  83. data/lib/config/initializers/mime_types.rb +5 -0
  84. data/lib/config/initializers/new_rails_defaults.rb +21 -0
  85. data/lib/config/initializers/session_store.rb +15 -0
  86. data/lib/config/locales/en.yml +5 -0
  87. data/lib/config/routes.rb +12 -0
  88. data/lib/db/migrate/20091226230412_create_articles.rb +20 -0
  89. data/lib/db/migrate/20091227003405_create_tags.rb +17 -0
  90. data/lib/db/migrate/20091227004351_create_taggings.rb +20 -0
  91. data/lib/db/migrate/20091227213928_add_open_id_authentication_tables.rb +20 -0
  92. data/lib/db/migrate/20091227214245_create_users.rb +23 -0
  93. data/lib/db/migrate/20091229164415_create_pages.rb +19 -0
  94. data/lib/db/schema.rb +95 -0
  95. data/lib/db/seeds.rb +7 -0
  96. data/lib/hubbub/boot.rb +2 -0
  97. data/lib/hubbub/tasks.rb +12 -0
  98. data/lib/hubbub.rb +5 -0
  99. data/lib/lib/hubbub.rb +12 -0
  100. data/lib/lib/tasks/rspec.rake +144 -0
  101. data/lib/public/warp_drive/rails.png +0 -0
  102. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/resourceful_scaffold_generator.rb +87 -0
  103. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/controller.rb +5 -0
  104. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/fixtures.yml +10 -0
  105. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/functional_test.rb +57 -0
  106. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/helper.rb +2 -0
  107. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/migration.rb +13 -0
  108. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/model.rb +2 -0
  109. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/unit_test.rb +7 -0
  110. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view__form.haml +5 -0
  111. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_edit.haml +11 -0
  112. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_index.haml +5 -0
  113. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_new.haml +9 -0
  114. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_partial.haml +12 -0
  115. data/lib/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_show.haml +14 -0
  116. data/lib/vendor/plugins/make_resourceful/init.rb +3 -0
  117. data/lib/vendor/plugins/make_resourceful/lib/resourceful/base.rb +63 -0
  118. data/lib/vendor/plugins/make_resourceful/lib/resourceful/builder.rb +385 -0
  119. data/lib/vendor/plugins/make_resourceful/lib/resourceful/default/accessors.rb +402 -0
  120. data/lib/vendor/plugins/make_resourceful/lib/resourceful/default/actions.rb +101 -0
  121. data/lib/vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb +51 -0
  122. data/lib/vendor/plugins/make_resourceful/lib/resourceful/default/responses.rb +118 -0
  123. data/lib/vendor/plugins/make_resourceful/lib/resourceful/default/urls.rb +137 -0
  124. data/lib/vendor/plugins/make_resourceful/lib/resourceful/maker.rb +84 -0
  125. data/lib/vendor/plugins/make_resourceful/lib/resourceful/response.rb +33 -0
  126. data/lib/vendor/plugins/make_resourceful/lib/resourceful/serialize.rb +181 -0
  127. data/lib/vendor/plugins/make_resourceful/spec/accessors_spec.rb +474 -0
  128. data/lib/vendor/plugins/make_resourceful/spec/actions_spec.rb +310 -0
  129. data/lib/vendor/plugins/make_resourceful/spec/base_spec.rb +12 -0
  130. data/lib/vendor/plugins/make_resourceful/spec/builder_spec.rb +332 -0
  131. data/lib/vendor/plugins/make_resourceful/spec/callbacks_spec.rb +71 -0
  132. data/lib/vendor/plugins/make_resourceful/spec/integration_spec.rb +393 -0
  133. data/lib/vendor/plugins/make_resourceful/spec/maker_spec.rb +91 -0
  134. data/lib/vendor/plugins/make_resourceful/spec/response_spec.rb +37 -0
  135. data/lib/vendor/plugins/make_resourceful/spec/responses_spec.rb +314 -0
  136. data/lib/vendor/plugins/make_resourceful/spec/rspec-rails/redirect_to.rb +113 -0
  137. data/lib/vendor/plugins/make_resourceful/spec/rspec-rails/render_template.rb +90 -0
  138. data/lib/vendor/plugins/make_resourceful/spec/serialize_spec.rb +133 -0
  139. data/lib/vendor/plugins/make_resourceful/spec/spec_helper.rb +307 -0
  140. data/lib/vendor/plugins/make_resourceful/spec/urls_spec.rb +278 -0
  141. data/lib/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/open_id_authentication_tables_generator.rb +11 -0
  142. data/lib/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/migration.rb +20 -0
  143. data/lib/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/migration.rb +26 -0
  144. data/lib/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/upgrade_open_id_authentication_tables_generator.rb +11 -0
  145. data/lib/vendor/plugins/open_id_authentication/init.rb +18 -0
  146. data/lib/vendor/plugins/open_id_authentication/lib/open_id_authentication/association.rb +9 -0
  147. data/lib/vendor/plugins/open_id_authentication/lib/open_id_authentication/db_store.rb +55 -0
  148. data/lib/vendor/plugins/open_id_authentication/lib/open_id_authentication/nonce.rb +5 -0
  149. data/lib/vendor/plugins/open_id_authentication/lib/open_id_authentication/request.rb +23 -0
  150. data/lib/vendor/plugins/open_id_authentication/lib/open_id_authentication/timeout_fixes.rb +20 -0
  151. data/lib/vendor/plugins/open_id_authentication/lib/open_id_authentication.rb +240 -0
  152. data/lib/vendor/plugins/open_id_authentication/tasks/open_id_authentication_tasks.rake +30 -0
  153. data/lib/vendor/plugins/open_id_authentication/test/normalize_test.rb +32 -0
  154. data/lib/vendor/plugins/open_id_authentication/test/open_id_authentication_test.rb +46 -0
  155. data/lib/vendor/plugins/open_id_authentication/test/status_test.rb +14 -0
  156. data/lib/vendor/plugins/open_id_authentication/test/test_helper.rb +17 -0
  157. data/lib/vendor/plugins/postable/init.rb +1 -0
  158. data/lib/vendor/plugins/postable/install.rb +1 -0
  159. data/lib/vendor/plugins/postable/lib/postable.rb +59 -0
  160. data/lib/vendor/plugins/postable/tasks/postable_tasks.rake +4 -0
  161. data/lib/vendor/plugins/postable/test/postable_test.rb +8 -0
  162. data/lib/vendor/plugins/postable/test/test_helper.rb +3 -0
  163. data/lib/vendor/plugins/postable/uninstall.rb +1 -0
  164. data/lib/vendor/plugins/rspec/History.rdoc +1496 -0
  165. data/lib/vendor/plugins/rspec/License.txt +22 -0
  166. data/lib/vendor/plugins/rspec/Manifest.txt +377 -0
  167. data/lib/vendor/plugins/rspec/README.rdoc +55 -0
  168. data/lib/vendor/plugins/rspec/Ruby1.9.rdoc +31 -0
  169. data/lib/vendor/plugins/rspec/TODO.txt +17 -0
  170. data/lib/vendor/plugins/rspec/Upgrade.rdoc +199 -0
  171. data/lib/vendor/plugins/rspec/cucumber.yml +5 -0
  172. data/lib/vendor/plugins/rspec/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  173. data/lib/vendor/plugins/rspec/features/command_line/line_number_option.feature +56 -0
  174. data/lib/vendor/plugins/rspec/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  175. data/lib/vendor/plugins/rspec/features/example_groups/define_example_attribute.feature +41 -0
  176. data/lib/vendor/plugins/rspec/features/example_groups/example_group_with_should_methods.feature +29 -0
  177. data/lib/vendor/plugins/rspec/features/example_groups/implicit_docstrings.feature +59 -0
  178. data/lib/vendor/plugins/rspec/features/example_groups/nested_groups.feature +32 -0
  179. data/lib/vendor/plugins/rspec/features/expectations/customized_message.feature +54 -0
  180. data/lib/vendor/plugins/rspec/features/expectations/expect_change.feature +65 -0
  181. data/lib/vendor/plugins/rspec/features/expectations/expect_error.feature +44 -0
  182. data/lib/vendor/plugins/rspec/features/extensions/custom_example_group.feature +19 -0
  183. data/lib/vendor/plugins/rspec/features/formatters/custom_formatter.feature +30 -0
  184. data/lib/vendor/plugins/rspec/features/interop/examples_and_tests_together.feature +84 -0
  185. data/lib/vendor/plugins/rspec/features/interop/rspec_output.feature +25 -0
  186. data/lib/vendor/plugins/rspec/features/interop/test_but_not_test_unit.feature +26 -0
  187. data/lib/vendor/plugins/rspec/features/interop/test_case_with_should_methods.feature +46 -0
  188. data/lib/vendor/plugins/rspec/features/load_paths/add_lib_to_load_path.feature +20 -0
  189. data/lib/vendor/plugins/rspec/features/load_paths/add_spec_to_load_path.feature +20 -0
  190. data/lib/vendor/plugins/rspec/features/matchers/define_diffable_matcher.feature +26 -0
  191. data/lib/vendor/plugins/rspec/features/matchers/define_matcher.feature +179 -0
  192. data/lib/vendor/plugins/rspec/features/matchers/define_matcher_outside_rspec.feature +38 -0
  193. data/lib/vendor/plugins/rspec/features/matchers/define_matcher_with_fluent_interface.feature +27 -0
  194. data/lib/vendor/plugins/rspec/features/matchers/define_wrapped_matcher.feature +29 -0
  195. data/lib/vendor/plugins/rspec/features/mock_framework_integration/use_flexmock.feature +27 -0
  196. data/lib/vendor/plugins/rspec/features/mock_framework_integration/use_mocha.feature +27 -0
  197. data/lib/vendor/plugins/rspec/features/mock_framework_integration/use_rr.feature +27 -0
  198. data/lib/vendor/plugins/rspec/features/mocks/mix_stubs_and_mocks.feature +22 -0
  199. data/lib/vendor/plugins/rspec/features/mocks/stub_implementation.feature +26 -0
  200. data/lib/vendor/plugins/rspec/features/pending/pending_examples.feature +81 -0
  201. data/lib/vendor/plugins/rspec/features/runner/specify_line_number.feature +32 -0
  202. data/lib/vendor/plugins/rspec/features/spec_helper/spec_helper.feature +25 -0
  203. data/lib/vendor/plugins/rspec/features/step_definitions/running_rspec_steps.rb +43 -0
  204. data/lib/vendor/plugins/rspec/features/subject/explicit_subject.feature +31 -0
  205. data/lib/vendor/plugins/rspec/features/subject/implicit_subject.feature +43 -0
  206. data/lib/vendor/plugins/rspec/features/support/env.rb +82 -0
  207. data/lib/vendor/plugins/rspec/features/support/matchers/smart_match.rb +12 -0
  208. data/lib/vendor/plugins/rspec/features-pending/cli/conditional_exclusion.feature +39 -0
  209. data/lib/vendor/plugins/rspec/features-pending/heckle/heckle.feature +56 -0
  210. data/lib/vendor/plugins/rspec/geminstaller.yml +28 -0
  211. data/lib/vendor/plugins/rspec/init.rb +9 -0
  212. data/lib/vendor/plugins/rspec/lib/autotest/discover.rb +3 -0
  213. data/lib/vendor/plugins/rspec/lib/autotest/rspec.rb +47 -0
  214. data/lib/vendor/plugins/rspec/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  215. data/lib/vendor/plugins/rspec/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  216. data/lib/vendor/plugins/rspec/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  217. data/lib/vendor/plugins/rspec/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  218. data/lib/vendor/plugins/rspec/lib/spec/autorun.rb +3 -0
  219. data/lib/vendor/plugins/rspec/lib/spec/deprecation.rb +40 -0
  220. data/lib/vendor/plugins/rspec/lib/spec/dsl/main.rb +92 -0
  221. data/lib/vendor/plugins/rspec/lib/spec/dsl.rb +1 -0
  222. data/lib/vendor/plugins/rspec/lib/spec/example/args_and_options.rb +27 -0
  223. data/lib/vendor/plugins/rspec/lib/spec/example/before_and_after_hooks.rb +93 -0
  224. data/lib/vendor/plugins/rspec/lib/spec/example/errors.rb +25 -0
  225. data/lib/vendor/plugins/rspec/lib/spec/example/example_group.rb +10 -0
  226. data/lib/vendor/plugins/rspec/lib/spec/example/example_group_factory.rb +82 -0
  227. data/lib/vendor/plugins/rspec/lib/spec/example/example_group_hierarchy.rb +53 -0
  228. data/lib/vendor/plugins/rspec/lib/spec/example/example_group_methods.rb +282 -0
  229. data/lib/vendor/plugins/rspec/lib/spec/example/example_group_proxy.rb +61 -0
  230. data/lib/vendor/plugins/rspec/lib/spec/example/example_matcher.rb +43 -0
  231. data/lib/vendor/plugins/rspec/lib/spec/example/example_methods.rb +148 -0
  232. data/lib/vendor/plugins/rspec/lib/spec/example/example_proxy.rb +41 -0
  233. data/lib/vendor/plugins/rspec/lib/spec/example/module_reopening_fix.rb +43 -0
  234. data/lib/vendor/plugins/rspec/lib/spec/example/pending.rb +18 -0
  235. data/lib/vendor/plugins/rspec/lib/spec/example/predicate_matchers.rb +46 -0
  236. data/lib/vendor/plugins/rspec/lib/spec/example/shared_example_group.rb +59 -0
  237. data/lib/vendor/plugins/rspec/lib/spec/example/subject.rb +108 -0
  238. data/lib/vendor/plugins/rspec/lib/spec/example.rb +164 -0
  239. data/lib/vendor/plugins/rspec/lib/spec/expectations/errors.rb +12 -0
  240. data/lib/vendor/plugins/rspec/lib/spec/expectations/extensions/kernel.rb +52 -0
  241. data/lib/vendor/plugins/rspec/lib/spec/expectations/extensions.rb +1 -0
  242. data/lib/vendor/plugins/rspec/lib/spec/expectations/fail_with.rb +45 -0
  243. data/lib/vendor/plugins/rspec/lib/spec/expectations/handler.rb +50 -0
  244. data/lib/vendor/plugins/rspec/lib/spec/expectations.rb +35 -0
  245. data/lib/vendor/plugins/rspec/lib/spec/interop/test/unit/autorunner.rb +6 -0
  246. data/lib/vendor/plugins/rspec/lib/spec/interop/test/unit/testcase.rb +56 -0
  247. data/lib/vendor/plugins/rspec/lib/spec/interop/test/unit/testresult.rb +6 -0
  248. data/lib/vendor/plugins/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  249. data/lib/vendor/plugins/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  250. data/lib/vendor/plugins/rspec/lib/spec/interop/test.rb +44 -0
  251. data/lib/vendor/plugins/rspec/lib/spec/matchers/be.rb +210 -0
  252. data/lib/vendor/plugins/rspec/lib/spec/matchers/be_close.rb +32 -0
  253. data/lib/vendor/plugins/rspec/lib/spec/matchers/be_instance_of.rb +26 -0
  254. data/lib/vendor/plugins/rspec/lib/spec/matchers/be_kind_of.rb +26 -0
  255. data/lib/vendor/plugins/rspec/lib/spec/matchers/change.rb +151 -0
  256. data/lib/vendor/plugins/rspec/lib/spec/matchers/compatibility.rb +14 -0
  257. data/lib/vendor/plugins/rspec/lib/spec/matchers/dsl.rb +20 -0
  258. data/lib/vendor/plugins/rspec/lib/spec/matchers/eql.rb +42 -0
  259. data/lib/vendor/plugins/rspec/lib/spec/matchers/equal.rb +53 -0
  260. data/lib/vendor/plugins/rspec/lib/spec/matchers/errors.rb +5 -0
  261. data/lib/vendor/plugins/rspec/lib/spec/matchers/exist.rb +16 -0
  262. data/lib/vendor/plugins/rspec/lib/spec/matchers/extensions/instance_exec.rb +31 -0
  263. data/lib/vendor/plugins/rspec/lib/spec/matchers/generated_descriptions.rb +36 -0
  264. data/lib/vendor/plugins/rspec/lib/spec/matchers/has.rb +35 -0
  265. data/lib/vendor/plugins/rspec/lib/spec/matchers/have.rb +151 -0
  266. data/lib/vendor/plugins/rspec/lib/spec/matchers/include.rb +44 -0
  267. data/lib/vendor/plugins/rspec/lib/spec/matchers/match.rb +21 -0
  268. data/lib/vendor/plugins/rspec/lib/spec/matchers/match_array.rb +71 -0
  269. data/lib/vendor/plugins/rspec/lib/spec/matchers/matcher.rb +87 -0
  270. data/lib/vendor/plugins/rspec/lib/spec/matchers/method_missing.rb +9 -0
  271. data/lib/vendor/plugins/rspec/lib/spec/matchers/operator_matcher.rb +78 -0
  272. data/lib/vendor/plugins/rspec/lib/spec/matchers/pretty.rb +37 -0
  273. data/lib/vendor/plugins/rspec/lib/spec/matchers/raise_error.rb +129 -0
  274. data/lib/vendor/plugins/rspec/lib/spec/matchers/respond_to.rb +71 -0
  275. data/lib/vendor/plugins/rspec/lib/spec/matchers/satisfy.rb +47 -0
  276. data/lib/vendor/plugins/rspec/lib/spec/matchers/simple_matcher.rb +133 -0
  277. data/lib/vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb +104 -0
  278. data/lib/vendor/plugins/rspec/lib/spec/matchers/wrap_expectation.rb +55 -0
  279. data/lib/vendor/plugins/rspec/lib/spec/matchers.rb +195 -0
  280. data/lib/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb +51 -0
  281. data/lib/vendor/plugins/rspec/lib/spec/mocks/argument_matchers.rb +237 -0
  282. data/lib/vendor/plugins/rspec/lib/spec/mocks/error_generator.rb +92 -0
  283. data/lib/vendor/plugins/rspec/lib/spec/mocks/errors.rb +10 -0
  284. data/lib/vendor/plugins/rspec/lib/spec/mocks/example_methods.rb +69 -0
  285. data/lib/vendor/plugins/rspec/lib/spec/mocks/extensions/object.rb +3 -0
  286. data/lib/vendor/plugins/rspec/lib/spec/mocks/extensions.rb +1 -0
  287. data/lib/vendor/plugins/rspec/lib/spec/mocks/framework.rb +15 -0
  288. data/lib/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb +329 -0
  289. data/lib/vendor/plugins/rspec/lib/spec/mocks/methods.rb +89 -0
  290. data/lib/vendor/plugins/rspec/lib/spec/mocks/mock.rb +71 -0
  291. data/lib/vendor/plugins/rspec/lib/spec/mocks/order_group.rb +29 -0
  292. data/lib/vendor/plugins/rspec/lib/spec/mocks/proxy.rb +245 -0
  293. data/lib/vendor/plugins/rspec/lib/spec/mocks/space.rb +28 -0
  294. data/lib/vendor/plugins/rspec/lib/spec/mocks.rb +200 -0
  295. data/lib/vendor/plugins/rspec/lib/spec/rake/spectask.rb +230 -0
  296. data/lib/vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb +52 -0
  297. data/lib/vendor/plugins/rspec/lib/spec/ruby.rb +9 -0
  298. data/lib/vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb +77 -0
  299. data/lib/vendor/plugins/rspec/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  300. data/lib/vendor/plugins/rspec/lib/spec/runner/command_line.rb +15 -0
  301. data/lib/vendor/plugins/rspec/lib/spec/runner/configuration.rb +194 -0
  302. data/lib/vendor/plugins/rspec/lib/spec/runner/differs/default.rb +93 -0
  303. data/lib/vendor/plugins/rspec/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  304. data/lib/vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb +26 -0
  305. data/lib/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb +59 -0
  306. data/lib/vendor/plugins/rspec/lib/spec/runner/extensions/kernel.rb +9 -0
  307. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb +139 -0
  308. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  309. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  310. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  311. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb +338 -0
  312. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/nested_text_formatter.rb +47 -0
  313. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  314. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  315. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  316. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  317. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  318. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  319. data/lib/vendor/plugins/rspec/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  320. data/lib/vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb +72 -0
  321. data/lib/vendor/plugins/rspec/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  322. data/lib/vendor/plugins/rspec/lib/spec/runner/line_number_query.rb +78 -0
  323. data/lib/vendor/plugins/rspec/lib/spec/runner/option_parser.rb +223 -0
  324. data/lib/vendor/plugins/rspec/lib/spec/runner/options.rb +400 -0
  325. data/lib/vendor/plugins/rspec/lib/spec/runner/reporter.rb +171 -0
  326. data/lib/vendor/plugins/rspec/lib/spec/runner.rb +66 -0
  327. data/lib/vendor/plugins/rspec/lib/spec/stubs/cucumber.rb +5 -0
  328. data/lib/vendor/plugins/rspec/lib/spec/test/unit.rb +10 -0
  329. data/lib/vendor/plugins/rspec/lib/spec/version.rb +14 -0
  330. data/lib/vendor/plugins/rspec/lib/spec.rb +8 -0
  331. data/lib/vendor/plugins/rspec/resources/helpers/cmdline.rb +8 -0
  332. data/lib/vendor/plugins/rspec/resources/rake/examples.rake +7 -0
  333. data/lib/vendor/plugins/rspec/resources/rake/examples_with_rcov.rake +9 -0
  334. data/lib/vendor/plugins/rspec/resources/rake/failing_examples_with_html.rake +9 -0
  335. data/lib/vendor/plugins/rspec/resources/rake/verify_rcov.rake +7 -0
  336. data/lib/vendor/plugins/rspec/spec/README.jruby +15 -0
  337. data/lib/vendor/plugins/rspec/spec/autotest/autotest_helper.rb +8 -0
  338. data/lib/vendor/plugins/rspec/spec/autotest/autotest_matchers.rb +38 -0
  339. data/lib/vendor/plugins/rspec/spec/autotest/discover_spec.rb +8 -0
  340. data/lib/vendor/plugins/rspec/spec/autotest/failed_results_re_spec.rb +31 -0
  341. data/lib/vendor/plugins/rspec/spec/autotest/rspec_spec.rb +111 -0
  342. data/lib/vendor/plugins/rspec/spec/ruby_forker.rb +13 -0
  343. data/lib/vendor/plugins/rspec/spec/spec/dsl/main_spec.rb +95 -0
  344. data/lib/vendor/plugins/rspec/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  345. data/lib/vendor/plugins/rspec/spec/spec/example/example_group_factory_spec.rb +180 -0
  346. data/lib/vendor/plugins/rspec/spec/spec/example/example_group_methods_spec.rb +758 -0
  347. data/lib/vendor/plugins/rspec/spec/spec/example/example_group_proxy_spec.rb +107 -0
  348. data/lib/vendor/plugins/rspec/spec/spec/example/example_group_spec.rb +643 -0
  349. data/lib/vendor/plugins/rspec/spec/spec/example/example_matcher_spec.rb +86 -0
  350. data/lib/vendor/plugins/rspec/spec/spec/example/example_methods_spec.rb +162 -0
  351. data/lib/vendor/plugins/rspec/spec/spec/example/example_proxy_spec.rb +57 -0
  352. data/lib/vendor/plugins/rspec/spec/spec/example/helper_method_spec.rb +24 -0
  353. data/lib/vendor/plugins/rspec/spec/spec/example/nested_example_group_spec.rb +71 -0
  354. data/lib/vendor/plugins/rspec/spec/spec/example/pending_module_spec.rb +58 -0
  355. data/lib/vendor/plugins/rspec/spec/spec/example/predicate_matcher_spec.rb +41 -0
  356. data/lib/vendor/plugins/rspec/spec/spec/example/shared_example_group_spec.rb +257 -0
  357. data/lib/vendor/plugins/rspec/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  358. data/lib/vendor/plugins/rspec/spec/spec/example/subject_spec.rb +103 -0
  359. data/lib/vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb +194 -0
  360. data/lib/vendor/plugins/rspec/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  361. data/lib/vendor/plugins/rspec/spec/spec/expectations/fail_with_spec.rb +96 -0
  362. data/lib/vendor/plugins/rspec/spec/spec/expectations/handler_spec.rb +206 -0
  363. data/lib/vendor/plugins/rspec/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  364. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  365. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  366. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  367. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  368. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  369. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  370. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  371. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  372. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  373. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  374. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  375. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  376. data/lib/vendor/plugins/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  377. data/lib/vendor/plugins/rspec/spec/spec/matchers/be_close_spec.rb +50 -0
  378. data/lib/vendor/plugins/rspec/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  379. data/lib/vendor/plugins/rspec/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  380. data/lib/vendor/plugins/rspec/spec/spec/matchers/be_spec.rb +311 -0
  381. data/lib/vendor/plugins/rspec/spec/spec/matchers/change_spec.rb +349 -0
  382. data/lib/vendor/plugins/rspec/spec/spec/matchers/compatibility_spec.rb +28 -0
  383. data/lib/vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb +160 -0
  384. data/lib/vendor/plugins/rspec/spec/spec/matchers/dsl_spec.rb +34 -0
  385. data/lib/vendor/plugins/rspec/spec/spec/matchers/eql_spec.rb +33 -0
  386. data/lib/vendor/plugins/rspec/spec/spec/matchers/equal_spec.rb +57 -0
  387. data/lib/vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb +65 -0
  388. data/lib/vendor/plugins/rspec/spec/spec/matchers/has_spec.rb +81 -0
  389. data/lib/vendor/plugins/rspec/spec/spec/matchers/have_spec.rb +396 -0
  390. data/lib/vendor/plugins/rspec/spec/spec/matchers/include_spec.rb +88 -0
  391. data/lib/vendor/plugins/rspec/spec/spec/matchers/match_array_spec.rb +108 -0
  392. data/lib/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb +57 -0
  393. data/lib/vendor/plugins/rspec/spec/spec/matchers/matcher_methods_spec.rb +63 -0
  394. data/lib/vendor/plugins/rspec/spec/spec/matchers/matcher_spec.rb +228 -0
  395. data/lib/vendor/plugins/rspec/spec/spec/matchers/matchers_spec.rb +2 -0
  396. data/lib/vendor/plugins/rspec/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  397. data/lib/vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb +333 -0
  398. data/lib/vendor/plugins/rspec/spec/spec/matchers/respond_to_spec.rb +116 -0
  399. data/lib/vendor/plugins/rspec/spec/spec/matchers/satisfy_spec.rb +36 -0
  400. data/lib/vendor/plugins/rspec/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  401. data/lib/vendor/plugins/rspec/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  402. data/lib/vendor/plugins/rspec/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  403. data/lib/vendor/plugins/rspec/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  404. data/lib/vendor/plugins/rspec/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  405. data/lib/vendor/plugins/rspec/spec/spec/mocks/at_least_spec.rb +97 -0
  406. data/lib/vendor/plugins/rspec/spec/spec/mocks/at_most_spec.rb +93 -0
  407. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  408. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  409. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  410. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  411. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_496_spec.rb +19 -0
  412. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  413. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  414. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  415. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  416. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  417. data/lib/vendor/plugins/rspec/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  418. data/lib/vendor/plugins/rspec/spec/spec/mocks/double_spec.rb +12 -0
  419. data/lib/vendor/plugins/rspec/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  420. data/lib/vendor/plugins/rspec/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  421. data/lib/vendor/plugins/rspec/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  422. data/lib/vendor/plugins/rspec/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  423. data/lib/vendor/plugins/rspec/spec/spec/mocks/mock_space_spec.rb +54 -0
  424. data/lib/vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb +594 -0
  425. data/lib/vendor/plugins/rspec/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  426. data/lib/vendor/plugins/rspec/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  427. data/lib/vendor/plugins/rspec/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  428. data/lib/vendor/plugins/rspec/spec/spec/mocks/once_counts_spec.rb +53 -0
  429. data/lib/vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb +35 -0
  430. data/lib/vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb +164 -0
  431. data/lib/vendor/plugins/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  432. data/lib/vendor/plugins/rspec/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  433. data/lib/vendor/plugins/rspec/spec/spec/mocks/precise_counts_spec.rb +52 -0
  434. data/lib/vendor/plugins/rspec/spec/spec/mocks/record_messages_spec.rb +26 -0
  435. data/lib/vendor/plugins/rspec/spec/spec/mocks/stub_chain_spec.rb +42 -0
  436. data/lib/vendor/plugins/rspec/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  437. data/lib/vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb +203 -0
  438. data/lib/vendor/plugins/rspec/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  439. data/lib/vendor/plugins/rspec/spec/spec/mocks/twice_counts_spec.rb +67 -0
  440. data/lib/vendor/plugins/rspec/spec/spec/mocks/unstub_spec.rb +127 -0
  441. data/lib/vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb +16 -0
  442. data/lib/vendor/plugins/rspec/spec/spec/rake/spectask_spec.rb +150 -0
  443. data/lib/vendor/plugins/rspec/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  444. data/lib/vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb +141 -0
  445. data/lib/vendor/plugins/rspec/spec/spec/runner/configuration_spec.rb +320 -0
  446. data/lib/vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb +107 -0
  447. data/lib/vendor/plugins/rspec/spec/spec/runner/empty_file.txt +0 -0
  448. data/lib/vendor/plugins/rspec/spec/spec/runner/example_group_runner_spec.rb +26 -0
  449. data/lib/vendor/plugins/rspec/spec/spec/runner/examples.txt +2 -0
  450. data/lib/vendor/plugins/rspec/spec/spec/runner/failed.txt +3 -0
  451. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  452. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  453. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  454. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  455. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  456. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  457. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  458. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  459. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  460. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/nested_text_formatter_spec.rb +305 -0
  461. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  462. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  463. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  464. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  465. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  466. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  467. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  468. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  469. data/lib/vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  470. data/lib/vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb +78 -0
  471. data/lib/vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb +20 -0
  472. data/lib/vendor/plugins/rspec/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  473. data/lib/vendor/plugins/rspec/spec/spec/runner/line_number_query_spec.rb +129 -0
  474. data/lib/vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  475. data/lib/vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb +545 -0
  476. data/lib/vendor/plugins/rspec/spec/spec/runner/options_spec.rb +547 -0
  477. data/lib/vendor/plugins/rspec/spec/spec/runner/output_one_time_fixture.rb +7 -0
  478. data/lib/vendor/plugins/rspec/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  479. data/lib/vendor/plugins/rspec/spec/spec/runner/output_one_time_spec.rb +15 -0
  480. data/lib/vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +105 -0
  481. data/lib/vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb +244 -0
  482. data/lib/vendor/plugins/rspec/spec/spec/runner/resources/a_bar.rb +0 -0
  483. data/lib/vendor/plugins/rspec/spec/spec/runner/resources/a_foo.rb +0 -0
  484. data/lib/vendor/plugins/rspec/spec/spec/runner/resources/a_spec.rb +1 -0
  485. data/lib/vendor/plugins/rspec/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  486. data/lib/vendor/plugins/rspec/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  487. data/lib/vendor/plugins/rspec/spec/spec/runner/spec.opts +2 -0
  488. data/lib/vendor/plugins/rspec/spec/spec/runner/spec_drb.opts +2 -0
  489. data/lib/vendor/plugins/rspec/spec/spec/runner/spec_spaced.opts +2 -0
  490. data/lib/vendor/plugins/rspec/spec/spec/runner_spec.rb +13 -0
  491. data/lib/vendor/plugins/rspec/spec/spec.opts +6 -0
  492. data/lib/vendor/plugins/rspec/spec/spec_helper.rb +112 -0
  493. data/lib/vendor/plugins/rspec/spec/support/macros.rb +29 -0
  494. data/lib/vendor/plugins/rspec/spec/support/spec_classes.rb +133 -0
  495. data/lib/vendor/plugins/rspec-rails/Contribute.rdoc +4 -0
  496. data/lib/vendor/plugins/rspec-rails/History.rdoc +283 -0
  497. data/lib/vendor/plugins/rspec-rails/License.txt +33 -0
  498. data/lib/vendor/plugins/rspec-rails/Manifest.txt +165 -0
  499. data/lib/vendor/plugins/rspec-rails/README.rdoc +45 -0
  500. data/lib/vendor/plugins/rspec-rails/TODO.txt +17 -0
  501. data/lib/vendor/plugins/rspec-rails/Upgrade.rdoc +148 -0
  502. data/lib/vendor/plugins/rspec-rails/generators/integration_spec/integration_spec_generator.rb +10 -0
  503. data/lib/vendor/plugins/rspec-rails/generators/integration_spec/templates/integration_spec.rb +4 -0
  504. data/lib/vendor/plugins/rspec-rails/generators/rspec/rspec_generator.rb +53 -0
  505. data/lib/vendor/plugins/rspec-rails/generators/rspec/templates/previous_failures.txt +0 -0
  506. data/lib/vendor/plugins/rspec-rails/generators/rspec/templates/rcov.opts +2 -0
  507. data/lib/vendor/plugins/rspec-rails/generators/rspec/templates/rspec.rake +144 -0
  508. data/lib/vendor/plugins/rspec-rails/generators/rspec/templates/spec.opts +4 -0
  509. data/lib/vendor/plugins/rspec-rails/generators/rspec/templates/spec_helper.rb +54 -0
  510. data/lib/vendor/plugins/rspec-rails/generators/rspec_controller/rspec_controller_generator.rb +47 -0
  511. data/lib/vendor/plugins/rspec-rails/generators/rspec_controller/templates/controller_spec.rb +25 -0
  512. data/lib/vendor/plugins/rspec-rails/generators/rspec_controller/templates/helper_spec.rb +11 -0
  513. data/lib/vendor/plugins/rspec-rails/generators/rspec_controller/templates/view_spec.rb +12 -0
  514. data/lib/vendor/plugins/rspec-rails/generators/rspec_default_values.rb +28 -0
  515. data/lib/vendor/plugins/rspec-rails/generators/rspec_model/rspec_model_generator.rb +35 -0
  516. data/lib/vendor/plugins/rspec-rails/generators/rspec_model/templates/model_spec.rb +13 -0
  517. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/rspec_scaffold_generator.rb +154 -0
  518. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/controller_spec.rb +131 -0
  519. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/edit_erb_spec.rb +25 -0
  520. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/helper_spec.rb +11 -0
  521. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/index_erb_spec.rb +27 -0
  522. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/new_erb_spec.rb +25 -0
  523. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/routing_spec.rb +33 -0
  524. data/lib/vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/show_erb_spec.rb +22 -0
  525. data/lib/vendor/plugins/rspec-rails/init.rb +9 -0
  526. data/lib/vendor/plugins/rspec-rails/lib/autotest/discover.rb +5 -0
  527. data/lib/vendor/plugins/rspec-rails/lib/autotest/rails_rspec.rb +76 -0
  528. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/assigns_hash_proxy.rb +39 -0
  529. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/controller_example_group.rb +278 -0
  530. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/cookies_proxy.rb +29 -0
  531. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/functional_example_group.rb +106 -0
  532. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/helper_example_group.rb +153 -0
  533. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/integration_example_group.rb +16 -0
  534. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/model_example_group.rb +14 -0
  535. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/render_observer.rb +80 -0
  536. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/routing_example_group.rb +13 -0
  537. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/routing_helpers.rb +66 -0
  538. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example/view_example_group.rb +199 -0
  539. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/example.rb +48 -0
  540. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/rescue.rb +42 -0
  541. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/test_case.rb +16 -0
  542. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/test_response.rb +21 -0
  543. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_view/base.rb +33 -0
  544. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/active_record/base.rb +45 -0
  545. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/active_support/test_case.rb +7 -0
  546. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/spec/matchers/have.rb +23 -0
  547. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions/spec/runner/configuration.rb +44 -0
  548. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/extensions.rb +11 -0
  549. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/interop/testcase.rb +14 -0
  550. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/ar_be_valid.rb +46 -0
  551. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/assert_select.rb +180 -0
  552. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/change.rb +13 -0
  553. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/have_text.rb +57 -0
  554. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/include_text.rb +54 -0
  555. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/redirect_to.rb +126 -0
  556. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/render_template.rb +129 -0
  557. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers/route_to.rb +149 -0
  558. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/matchers.rb +33 -0
  559. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/mocks.rb +135 -0
  560. data/lib/vendor/plugins/rspec-rails/lib/spec/rails/version.rb +16 -0
  561. data/lib/vendor/plugins/rspec-rails/lib/spec/rails.rb +26 -0
  562. data/lib/vendor/plugins/rspec-rails/spec/autotest/mappings_spec.rb +86 -0
  563. data/lib/vendor/plugins/rspec-rails/spec/rails_suite.rb +7 -0
  564. data/lib/vendor/plugins/rspec-rails/spec/resources/controllers/action_view_base_spec_controller.rb +2 -0
  565. data/lib/vendor/plugins/rspec-rails/spec/resources/controllers/application.rb +9 -0
  566. data/lib/vendor/plugins/rspec-rails/spec/resources/controllers/controller_spec_controller.rb +127 -0
  567. data/lib/vendor/plugins/rspec-rails/spec/resources/controllers/example.txt +1 -0
  568. data/lib/vendor/plugins/rspec-rails/spec/resources/controllers/redirect_spec_controller.rb +70 -0
  569. data/lib/vendor/plugins/rspec-rails/spec/resources/controllers/render_spec_controller.rb +34 -0
  570. data/lib/vendor/plugins/rspec-rails/spec/resources/controllers/rjs_spec_controller.rb +58 -0
  571. data/lib/vendor/plugins/rspec-rails/spec/resources/helpers/addition_helper.rb +5 -0
  572. data/lib/vendor/plugins/rspec-rails/spec/resources/helpers/explicit_helper.rb +46 -0
  573. data/lib/vendor/plugins/rspec-rails/spec/resources/helpers/more_explicit_helper.rb +5 -0
  574. data/lib/vendor/plugins/rspec-rails/spec/resources/helpers/plugin_application_helper.rb +6 -0
  575. data/lib/vendor/plugins/rspec-rails/spec/resources/helpers/view_spec_helper.rb +13 -0
  576. data/lib/vendor/plugins/rspec-rails/spec/resources/models/animal.rb +4 -0
  577. data/lib/vendor/plugins/rspec-rails/spec/resources/models/person.rb +18 -0
  578. data/lib/vendor/plugins/rspec-rails/spec/resources/models/thing.rb +3 -0
  579. data/lib/vendor/plugins/rspec-rails/spec/resources/views/controller_spec/_partial.html.erb +0 -0
  580. data/lib/vendor/plugins/rspec-rails/spec/resources/views/controller_spec/action_setting_flash_after_session_reset.html.erb +1 -0
  581. data/lib/vendor/plugins/rspec-rails/spec/resources/views/controller_spec/action_setting_flash_before_session_reset.html.erb +1 -0
  582. data/lib/vendor/plugins/rspec-rails/spec/resources/views/controller_spec/action_setting_the_assigns_hash.html.erb +0 -0
  583. data/lib/vendor/plugins/rspec-rails/spec/resources/views/controller_spec/action_with_errors_in_template.html.erb +1 -0
  584. data/lib/vendor/plugins/rspec-rails/spec/resources/views/controller_spec/action_with_template.html.erb +1 -0
  585. data/lib/vendor/plugins/rspec-rails/spec/resources/views/controller_spec/non_existent_action_with_existent_template.html.erb +0 -0
  586. data/lib/vendor/plugins/rspec-rails/spec/resources/views/layouts/application.html.erb +0 -0
  587. data/lib/vendor/plugins/rspec-rails/spec/resources/views/layouts/simple.html.erb +0 -0
  588. data/lib/vendor/plugins/rspec-rails/spec/resources/views/objects/_object.html.erb +1 -0
  589. data/lib/vendor/plugins/rspec-rails/spec/resources/views/render_spec/_a_partial.html.erb +0 -0
  590. data/lib/vendor/plugins/rspec-rails/spec/resources/views/render_spec/action_with_alternate_layout.html.erb +0 -0
  591. data/lib/vendor/plugins/rspec-rails/spec/resources/views/render_spec/some_action.html.erb +0 -0
  592. data/lib/vendor/plugins/rspec-rails/spec/resources/views/render_spec/some_action.js.rjs +1 -0
  593. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/_replacement_partial.html.erb +1 -0
  594. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/hide_div.js.rjs +1 -0
  595. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/hide_page_element.js.rjs +1 -0
  596. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/insert_html.js.rjs +1 -0
  597. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/replace.js.rjs +1 -0
  598. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/replace_html.js.rjs +1 -0
  599. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/replace_html_with_partial.js.rjs +1 -0
  600. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/visual_effect.js.rjs +1 -0
  601. data/lib/vendor/plugins/rspec-rails/spec/resources/views/rjs_spec/visual_toggle_effect.js.rjs +1 -0
  602. data/lib/vendor/plugins/rspec-rails/spec/resources/views/tag_spec/no_tags.html.erb +1 -0
  603. data/lib/vendor/plugins/rspec-rails/spec/resources/views/tag_spec/single_div_with_no_attributes.html.erb +1 -0
  604. data/lib/vendor/plugins/rspec-rails/spec/resources/views/tag_spec/single_div_with_one_attribute.html.erb +1 -0
  605. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/_partial.html.erb +2 -0
  606. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/_partial_used_twice.html.erb +0 -0
  607. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/_partial_with_local_variable.html.erb +1 -0
  608. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/_partial_with_sub_partial.html.erb +1 -0
  609. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/_spacer.html.erb +1 -0
  610. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/accessor.html.erb +5 -0
  611. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/block_helper.html.erb +3 -0
  612. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/entry_form.html.erb +2 -0
  613. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/explicit_helper.html.erb +2 -0
  614. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/foo/show.html.erb +1 -0
  615. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/implicit_helper.html.erb +2 -0
  616. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/multiple_helpers.html.erb +3 -0
  617. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/path_params.html.erb +1 -0
  618. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/should_not_receive.html.erb +3 -0
  619. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/template_with_partial.html.erb +5 -0
  620. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/template_with_partial_using_collection.html.erb +3 -0
  621. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/template_with_partial_with_array.html.erb +1 -0
  622. data/lib/vendor/plugins/rspec-rails/spec/resources/views/view_spec/view_helpers.html.erb +1 -0
  623. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/assigns_hash_proxy_spec.rb +109 -0
  624. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/configuration_spec.rb +65 -0
  625. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/controller_example_group_spec.rb +307 -0
  626. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/controller_isolation_spec.rb +75 -0
  627. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/cookies_proxy_spec.rb +87 -0
  628. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/error_handling_spec.rb +90 -0
  629. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/example_group_factory_spec.rb +112 -0
  630. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/helper_example_group_spec.rb +233 -0
  631. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/model_example_group_spec.rb +20 -0
  632. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/routing_example_group_spec.rb +10 -0
  633. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/shared_routing_example_group_examples.rb +237 -0
  634. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/test_unit_assertion_accessibility_spec.rb +33 -0
  635. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/example/view_example_group_spec.rb +349 -0
  636. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/extensions/action_view_base_spec.rb +74 -0
  637. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/extensions/active_record_spec.rb +14 -0
  638. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/interop/testcase_spec.rb +70 -0
  639. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/ar_be_valid_spec.rb +19 -0
  640. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/assert_select_spec.rb +835 -0
  641. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/errors_on_spec.rb +37 -0
  642. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/have_text_spec.rb +69 -0
  643. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/include_text_spec.rb +62 -0
  644. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/redirect_to_spec.rb +253 -0
  645. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/render_template_spec.rb +208 -0
  646. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/matchers/should_change_spec.rb +15 -0
  647. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/mocks/ar_classes.rb +10 -0
  648. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/mocks/mock_model_spec.rb +106 -0
  649. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/mocks/stub_model_spec.rb +80 -0
  650. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/sample_modified_fixture.rb +8 -0
  651. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/sample_spec.rb +8 -0
  652. data/lib/vendor/plugins/rspec-rails/spec/spec/rails/spec_spec.rb +11 -0
  653. data/lib/vendor/plugins/rspec-rails/spec/spec_helper.rb +78 -0
  654. data/lib/vendor/plugins/validation_reflection/VERSION.yml +4 -0
  655. data/lib/vendor/plugins/validation_reflection/about.yml +7 -0
  656. data/lib/vendor/plugins/validation_reflection/lib/validation_reflection.rb +148 -0
  657. data/lib/vendor/plugins/validation_reflection/rails/init.rb +2 -0
  658. data/lib/vendor/plugins/validation_reflection/test/test_helper.rb +19 -0
  659. data/lib/vendor/plugins/validation_reflection/test/validation_reflection_test.rb +123 -0
  660. data/lib/vendor/plugins/validation_reflection/validation_reflection.gemspec +52 -0
  661. metadata +724 -0
@@ -0,0 +1,16 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should exist
5
+ # should_not exist
6
+ #
7
+ # Passes if actual.exist?
8
+ def exist(arg=nil)
9
+ Matcher.new :exist do
10
+ match do |actual|
11
+ arg ? actual.exist?(arg) : actual.exist?
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ module Spec
2
+ module Matchers
3
+ module InstanceExec
4
+ unless respond_to?(:instance_exec)
5
+ # based on Bounded Spec InstanceExec (Mauricio Fernandez)
6
+ # http://eigenclass.org/hiki/bounded+space+instance_exec
7
+ # - uses singleton_class of matcher instead of global
8
+ # InstanceExecHelper module
9
+ # - this keeps it scoped to this class only, which is the
10
+ # only place we need it
11
+ # - only necessary for ruby 1.8.6
12
+ def instance_exec(*args, &block)
13
+ singleton_class = (class << self; self; end)
14
+ begin
15
+ orig_critical, Thread.critical = Thread.critical, true
16
+ n = 0
17
+ n += 1 while respond_to?(method_name="__instance_exec#{n}")
18
+ singleton_class.module_eval{ define_method(:__instance_exec, &block) }
19
+ ensure
20
+ Thread.critical = orig_critical
21
+ end
22
+ begin
23
+ return send(:__instance_exec, *args)
24
+ ensure
25
+ singleton_class.module_eval{ remove_method(:__instance_exec) } rescue nil
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,36 @@
1
+ module Spec
2
+ module Matchers
3
+ class << self
4
+ attr_accessor :last_matcher, :last_should # :nodoc:
5
+ end
6
+
7
+ def self.clear_generated_description
8
+ self.last_matcher = nil
9
+ self.last_should = nil
10
+ end
11
+
12
+ def self.generated_description
13
+ return nil if last_should.nil?
14
+ "#{last_should.to_s.gsub('_',' ')} #{last_description}"
15
+ end
16
+
17
+ private
18
+
19
+ def self.last_description
20
+ last_matcher.respond_to?(:description) ? last_matcher.description : <<-MESSAGE
21
+ When you call a matcher in an example without a String, like this:
22
+
23
+ specify { object.should matcher }
24
+
25
+ or this:
26
+
27
+ it { should matcher }
28
+
29
+ RSpec expects the matcher to have a #description method. You should either
30
+ add a String to the example this matcher is being used in, or give it a
31
+ description method. Then you won't have to suffer this lengthy warning again.
32
+ MESSAGE
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,35 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class Has
5
+
6
+ def initialize(expected, *args)
7
+ @expected, @args = expected, args
8
+ end
9
+
10
+ def matches?(actual)
11
+ actual.__send__(predicate(@expected), *@args)
12
+ end
13
+
14
+ def failure_message_for_should
15
+ "expected ##{predicate(@expected)}(#{@args[0].inspect}) to return true, got false"
16
+ end
17
+
18
+ def failure_message_for_should_not
19
+ "expected ##{predicate(@expected)}(#{@args[0].inspect}) to return false, got true"
20
+ end
21
+
22
+ def description
23
+ "have key #{@args[0].inspect}"
24
+ end
25
+
26
+ private
27
+
28
+ def predicate(sym)
29
+ "#{sym.to_s.sub("have_","has_")}?".to_sym
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,151 @@
1
+ module Spec
2
+ module Matchers
3
+ class Have #:nodoc:
4
+ def initialize(expected, relativity=:exactly)
5
+ @expected = (expected == :no ? 0 : expected)
6
+ @relativity = relativity
7
+ @actual = nil
8
+ end
9
+
10
+ def relativities
11
+ @relativities ||= {
12
+ :exactly => "",
13
+ :at_least => "at least ",
14
+ :at_most => "at most "
15
+ }
16
+ end
17
+
18
+ def matches?(collection_owner)
19
+ if collection_owner.respond_to?(@collection_name)
20
+ collection = collection_owner.__send__(@collection_name, *@args, &@block)
21
+ elsif (@plural_collection_name && collection_owner.respond_to?(@plural_collection_name))
22
+ collection = collection_owner.__send__(@plural_collection_name, *@args, &@block)
23
+ elsif (collection_owner.respond_to?(:length) || collection_owner.respond_to?(:size))
24
+ collection = collection_owner
25
+ else
26
+ collection_owner.__send__(@collection_name, *@args, &@block)
27
+ end
28
+ @actual = collection.size if collection.respond_to?(:size)
29
+ @actual = collection.length if collection.respond_to?(:length)
30
+ raise not_a_collection if @actual.nil?
31
+ return @actual >= @expected if @relativity == :at_least
32
+ return @actual <= @expected if @relativity == :at_most
33
+ return @actual == @expected
34
+ end
35
+
36
+ def not_a_collection
37
+ "expected #{@collection_name} to be a collection but it does not respond to #length or #size"
38
+ end
39
+
40
+ def failure_message_for_should
41
+ "expected #{relative_expectation} #{@collection_name}, got #{@actual}"
42
+ end
43
+
44
+ def failure_message_for_should_not
45
+ if @relativity == :exactly
46
+ return "expected target not to have #{@expected} #{@collection_name}, got #{@actual}"
47
+ elsif @relativity == :at_most
48
+ return <<-EOF
49
+ Isn't life confusing enough?
50
+ Instead of having to figure out the meaning of this:
51
+ should_not have_at_most(#{@expected}).#{@collection_name}
52
+ We recommend that you use this instead:
53
+ should have_at_least(#{@expected + 1}).#{@collection_name}
54
+ EOF
55
+ elsif @relativity == :at_least
56
+ return <<-EOF
57
+ Isn't life confusing enough?
58
+ Instead of having to figure out the meaning of this:
59
+ should_not have_at_least(#{@expected}).#{@collection_name}
60
+ We recommend that you use this instead:
61
+ should have_at_most(#{@expected - 1}).#{@collection_name}
62
+ EOF
63
+ end
64
+ end
65
+
66
+ def description
67
+ "have #{relative_expectation} #{@collection_name}"
68
+ end
69
+
70
+ def respond_to?(sym)
71
+ @expected.respond_to?(sym) || super
72
+ end
73
+
74
+ private
75
+
76
+ def method_missing(sym, *args, &block)
77
+ @collection_name = sym
78
+ if inflector = (defined?(ActiveSupport::Inflector) ? ActiveSupport::Inflector : (defined?(Inflector) ? Inflector : nil))
79
+ @plural_collection_name = inflector.pluralize(sym.to_s)
80
+ end
81
+ @args = args
82
+ @block = block
83
+ self
84
+ end
85
+
86
+ def relative_expectation
87
+ "#{relativities[@relativity]}#{@expected}"
88
+ end
89
+ end
90
+
91
+ # :call-seq:
92
+ # should have(number).named_collection__or__sugar
93
+ # should_not have(number).named_collection__or__sugar
94
+ #
95
+ # Passes if receiver is a collection with the submitted
96
+ # number of items OR if the receiver OWNS a collection
97
+ # with the submitted number of items.
98
+ #
99
+ # If the receiver OWNS the collection, you must use the name
100
+ # of the collection. So if a <tt>Team</tt> instance has a
101
+ # collection named <tt>#players</tt>, you must use that name
102
+ # to set the expectation.
103
+ #
104
+ # If the receiver IS the collection, you can use any name
105
+ # you like for <tt>named_collection</tt>. We'd recommend using
106
+ # either "elements", "members", or "items" as these are all
107
+ # standard ways of describing the things IN a collection.
108
+ #
109
+ # This also works for Strings, letting you set an expectation
110
+ # about its length
111
+ #
112
+ # == Examples
113
+ #
114
+ # # Passes if team.players.size == 11
115
+ # team.should have(11).players
116
+ #
117
+ # # Passes if [1,2,3].length == 3
118
+ # [1,2,3].should have(3).items #"items" is pure sugar
119
+ #
120
+ # # Passes if "this string".length == 11
121
+ # "this string".should have(11).characters #"characters" is pure sugar
122
+ def have(n)
123
+ Matchers::Have.new(n)
124
+ end
125
+ alias :have_exactly :have
126
+
127
+ # :call-seq:
128
+ # should have_at_least(number).items
129
+ #
130
+ # Exactly like have() with >=.
131
+ #
132
+ # == Warning
133
+ #
134
+ # +should_not+ +have_at_least+ is not supported
135
+ def have_at_least(n)
136
+ Matchers::Have.new(n, :at_least)
137
+ end
138
+
139
+ # :call-seq:
140
+ # should have_at_most(number).items
141
+ #
142
+ # Exactly like have() with <=.
143
+ #
144
+ # == Warning
145
+ #
146
+ # +should_not+ +have_at_most+ is not supported
147
+ def have_at_most(n)
148
+ Matchers::Have.new(n, :at_most)
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,44 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should include(expected)
5
+ # should_not include(expected)
6
+ #
7
+ # Passes if actual includes expected. This works for
8
+ # collections and Strings. You can also pass in multiple args
9
+ # and it will only pass if all args are found in collection.
10
+ #
11
+ # == Examples
12
+ #
13
+ # [1,2,3].should include(3)
14
+ # [1,2,3].should include(2,3) #would pass
15
+ # [1,2,3].should include(2,3,4) #would fail
16
+ # [1,2,3].should_not include(4)
17
+ # "spread".should include("read")
18
+ # "spread".should_not include("red")
19
+ def include(*expected)
20
+ Matcher.new :include, *expected do |*_expected_|
21
+ match do |actual|
22
+ helper(actual, *_expected_)
23
+ end
24
+
25
+ def helper(actual, *_expected_)
26
+ _expected_.each do |expected|
27
+ if actual.is_a?(Hash)
28
+ if expected.is_a?(Hash)
29
+ expected.each_pair do |k,v|
30
+ return false unless actual[k] == v
31
+ end
32
+ else
33
+ return false unless actual.has_key?(expected)
34
+ end
35
+ else
36
+ return false unless actual.include?(expected)
37
+ end
38
+ end
39
+ true
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,21 @@
1
+ module Spec
2
+ module Matchers
3
+ # :call-seq:
4
+ # should match(pattern)
5
+ # should_not match(pattern)
6
+ #
7
+ # Given a Regexp or String, passes if actual.match(pattern)
8
+ #
9
+ # == Examples
10
+ #
11
+ # email.should match(/^([^\s]+)((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)
12
+ # email.should match("@example.com")
13
+ def match(expected)
14
+ Matcher.new :match, expected do |_expected_|
15
+ match do |actual|
16
+ actual.match(_expected_)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,71 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class MatchArray #:nodoc:
5
+ include Spec::Matchers::Pretty
6
+
7
+ def initialize(expected)
8
+ @expected = expected
9
+ end
10
+
11
+ def matches?(actual)
12
+ @actual = actual
13
+ @extra_items = difference_between_arrays(@actual, @expected)
14
+ @missing_items = difference_between_arrays(@expected, @actual)
15
+ @extra_items.empty? & @missing_items.empty?
16
+ end
17
+
18
+ def failure_message_for_should
19
+ message = "expected collection contained: #{safe_sort(@expected).inspect}\n"
20
+ message += "actual collection contained: #{safe_sort(@actual).inspect}\n"
21
+ message += "the missing elements were: #{safe_sort(@missing_items).inspect}\n" unless @missing_items.empty?
22
+ message += "the extra elements were: #{safe_sort(@extra_items).inspect}\n" unless @extra_items.empty?
23
+ message
24
+ end
25
+
26
+ def failure_message_for_should_not
27
+ "Matcher does not support should_not"
28
+ end
29
+
30
+ def description
31
+ "contain exactly #{_pretty_print(@expected)}"
32
+ end
33
+
34
+ private
35
+
36
+ def safe_sort(array)
37
+ array.all?{|item| item.respond_to?(:<=>)} ? array.sort : array
38
+ end
39
+
40
+ def difference_between_arrays(array_1, array_2)
41
+ difference = array_1.dup
42
+ array_2.each do |element|
43
+ if index = difference.index(element)
44
+ difference.delete_at(index)
45
+ end
46
+ end
47
+ difference
48
+ end
49
+
50
+
51
+ end
52
+
53
+ # :call-seq:
54
+ # should =~ expected
55
+ #
56
+ # Passes if actual contains all of the expected regardless of order.
57
+ # This works for collections. Pass in multiple args and it will only
58
+ # pass if all args are found in collection.
59
+ #
60
+ # NOTE: there is no should_not version of array.should =~ other_array
61
+ #
62
+ # == Examples
63
+ #
64
+ # [1,2,3].should =~ [1,2,3] # => would pass
65
+ # [1,2,3].should =~ [2,3,1] # => would pass
66
+ # [1,2,3,4].should =~ [1,2,3] # => would fail
67
+ # [1,2,2,3].should =~ [1,2,3] # => would fail
68
+ # [1,2,3].should =~ [1,2,3,4] # => would fail
69
+ OperatorMatcher.register(Array, '=~', Spec::Matchers::MatchArray)
70
+ end
71
+ end
@@ -0,0 +1,87 @@
1
+ module Spec
2
+ module Matchers
3
+ class Matcher
4
+ include Spec::Matchers::InstanceExec
5
+ include Spec::Matchers::Pretty
6
+ include Spec::Matchers
7
+
8
+ attr_reader :expected, :actual
9
+
10
+ def initialize(name, *expected, &declarations)
11
+ @name = name
12
+ @expected = expected
13
+ @actual = nil
14
+ @diffable = false
15
+ @messages = {
16
+ :description => lambda {"#{name_to_sentence}#{expected_to_sentence}"},
17
+ :failure_message_for_should => lambda {|actual| "expected #{actual.inspect} to #{name_to_sentence}#{expected_to_sentence}"},
18
+ :failure_message_for_should_not => lambda {|actual| "expected #{actual.inspect} not to #{name_to_sentence}#{expected_to_sentence}"}
19
+ }
20
+ making_declared_methods_public do
21
+ instance_exec(*@expected, &declarations)
22
+ end
23
+ end
24
+
25
+ def matches?(actual)
26
+ instance_exec(@actual = actual, &@match_block)
27
+ end
28
+
29
+ def description(&block)
30
+ cache_or_call_cached(:description, &block)
31
+ end
32
+
33
+ def failure_message_for_should(&block)
34
+ cache_or_call_cached(:failure_message_for_should, actual, &block)
35
+ end
36
+
37
+ def failure_message_for_should_not(&block)
38
+ cache_or_call_cached(:failure_message_for_should_not, actual, &block)
39
+ end
40
+
41
+ def match(&block)
42
+ @match_block = block
43
+ end
44
+
45
+ def diffable?
46
+ @diffable
47
+ end
48
+
49
+ def diffable
50
+ @diffable = true
51
+ end
52
+
53
+ private
54
+
55
+ def making_declared_methods_public # :nodoc:
56
+ # Our home-grown instance_exec in ruby 1.8.6 results in any methods
57
+ # declared in the block eval'd by instance_exec in the block to which we
58
+ # are yielding here are scoped private. This is NOT the case for Ruby
59
+ # 1.8.7 or 1.9.
60
+ #
61
+ # Also, due some crazy scoping that I don't understand, these methods
62
+ # are actually available in the specs (something about the matcher being
63
+ # defined in the scope of Spec::Matchers or within an example), so not
64
+ # doing the following will not cause specs to fail, but they *will*
65
+ # cause features to fail and that will make users unhappy. So don't.
66
+ orig_private_methods = private_methods
67
+ yield
68
+ st = (class << self; self; end)
69
+ (private_methods - orig_private_methods).each {|m| st.__send__ :public, m}
70
+ end
71
+
72
+ def cache_or_call_cached(key, actual=nil, &block)
73
+ block ? @messages[key] = block :
74
+ actual.nil? ? @messages[key].call : @messages[key].call(actual)
75
+ end
76
+
77
+ def name_to_sentence
78
+ split_words(@name)
79
+ end
80
+
81
+ def expected_to_sentence
82
+ to_sentence(@expected)
83
+ end
84
+
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,9 @@
1
+ module Spec
2
+ module Matchers
3
+ def method_missing(sym, *args, &block) # :nodoc:
4
+ return Matchers::Be.new(sym, *args) if sym.to_s =~ /^be_/
5
+ return Matchers::Has.new(sym, *args) if sym.to_s =~ /^have_/
6
+ super
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,78 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class OperatorMatcher
5
+ class << self
6
+ def registry
7
+ @registry ||= {}
8
+ end
9
+
10
+ def register(klass, operator, matcher)
11
+ registry[klass] ||= {}
12
+ registry[klass][operator] = matcher
13
+ end
14
+
15
+ def get(klass, operator)
16
+ registry[klass] && registry[klass][operator]
17
+ end
18
+ end
19
+
20
+ def initialize(actual)
21
+ @actual = actual
22
+ end
23
+
24
+ def self.use_custom_matcher_or_delegate(operator)
25
+ define_method(operator) do |expected|
26
+ if matcher = OperatorMatcher.get(@actual.class, operator)
27
+ @actual.send(::Spec::Matchers.last_should, matcher.new(expected))
28
+ else
29
+ eval_match(@actual, operator, expected)
30
+ end
31
+ end
32
+ end
33
+
34
+ ['==', '===', '=~', '>', '>=', '<', '<='].each do |operator|
35
+ use_custom_matcher_or_delegate operator
36
+ end
37
+
38
+ def fail_with_message(message)
39
+ Spec::Expectations.fail_with(message, @expected, @actual)
40
+ end
41
+
42
+ def description
43
+ "#{@operator} #{@expected.inspect}"
44
+ end
45
+
46
+ private
47
+
48
+ def eval_match(actual, operator, expected)
49
+ ::Spec::Matchers.last_matcher = self
50
+ @operator, @expected = operator, expected
51
+ __delegate_operator(actual, operator, expected)
52
+ end
53
+
54
+ end
55
+
56
+ class PositiveOperatorMatcher < OperatorMatcher #:nodoc:
57
+ def __delegate_operator(actual, operator, expected)
58
+ if actual.__send__(operator, expected)
59
+ true
60
+ elsif ['==','===', '=~'].include?(operator)
61
+ fail_with_message("expected: #{expected.inspect},\n got: #{actual.inspect} (using #{operator})")
62
+ else
63
+ fail_with_message("expected: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}")
64
+ end
65
+ end
66
+
67
+ end
68
+
69
+ class NegativeOperatorMatcher < OperatorMatcher #:nodoc:
70
+ def __delegate_operator(actual, operator, expected)
71
+ return false unless actual.__send__(operator, expected)
72
+ return fail_with_message("expected not: #{operator} #{expected.inspect},\n got: #{operator.gsub(/./, ' ')} #{actual.inspect}")
73
+ end
74
+
75
+ end
76
+
77
+ end
78
+ end
@@ -0,0 +1,37 @@
1
+ module Spec
2
+ module Matchers
3
+ module Pretty
4
+ def split_words(sym)
5
+ sym.to_s.gsub(/_/,' ')
6
+ end
7
+
8
+ def to_sentence(words)
9
+ words = words.map{|w| w.inspect}
10
+ case words.length
11
+ when 0
12
+ ""
13
+ when 1
14
+ " #{words[0]}"
15
+ when 2
16
+ " #{words[0]} and #{words[1]}"
17
+ else
18
+ " #{words[0...-1].join(', ')}, and #{words[-1]}"
19
+ end
20
+ end
21
+
22
+ def _pretty_print(array)
23
+ result = ""
24
+ array.each_with_index do |item, index|
25
+ if index < (array.length - 2)
26
+ result << "#{item.inspect}, "
27
+ elsif index < (array.length - 1)
28
+ result << "#{item.inspect} and "
29
+ else
30
+ result << "#{item.inspect}"
31
+ end
32
+ end
33
+ result
34
+ end
35
+ end
36
+ end
37
+ end