thorero 0.9.4.4 → 0.9.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (298) hide show
  1. data/LICENSE +1 -1
  2. data/README +21 -0
  3. data/Rakefile +275 -108
  4. data/TODO +0 -0
  5. data/bin/merb +12 -0
  6. data/bin/merb-specs +5 -0
  7. data/docs/bootloading.dox +58 -0
  8. data/docs/documentation_standards +40 -0
  9. data/docs/merb-core-call-stack-diagram.mmap +0 -0
  10. data/docs/merb-core-call-stack-diagram.pdf +0 -0
  11. data/docs/merb-core-call-stack-diagram.png +0 -0
  12. data/docs/new_render_api +51 -0
  13. data/lib/merb-core.rb +603 -0
  14. data/lib/merb-core/autoload.rb +32 -0
  15. data/lib/merb-core/bootloader.rb +708 -0
  16. data/lib/merb-core/config.rb +303 -0
  17. data/lib/merb-core/constants.rb +43 -0
  18. data/lib/merb-core/controller/abstract_controller.rb +578 -0
  19. data/lib/merb-core/controller/exceptions.rb +302 -0
  20. data/lib/merb-core/controller/merb_controller.rb +256 -0
  21. data/lib/merb-core/controller/mime.rb +106 -0
  22. data/lib/merb-core/controller/mixins/authentication.rb +87 -0
  23. data/lib/merb-core/controller/mixins/controller.rb +290 -0
  24. data/lib/merb-core/controller/mixins/render.rb +481 -0
  25. data/lib/merb-core/controller/mixins/responder.rb +472 -0
  26. data/lib/merb-core/controller/template.rb +254 -0
  27. data/lib/merb-core/core_ext.rb +8 -0
  28. data/lib/merb-core/core_ext/kernel.rb +319 -0
  29. data/lib/merb-core/dispatch/cookies.rb +91 -0
  30. data/lib/merb-core/dispatch/dispatcher.rb +278 -0
  31. data/lib/merb-core/dispatch/exceptions.html.erb +303 -0
  32. data/lib/merb-core/dispatch/request.rb +603 -0
  33. data/lib/merb-core/dispatch/router.rb +179 -0
  34. data/lib/merb-core/dispatch/router/behavior.rb +867 -0
  35. data/lib/merb-core/dispatch/router/cached_proc.rb +52 -0
  36. data/lib/merb-core/dispatch/router/route.rb +321 -0
  37. data/lib/merb-core/dispatch/session.rb +78 -0
  38. data/lib/merb-core/dispatch/session/cookie.rb +168 -0
  39. data/lib/merb-core/dispatch/session/memcached.rb +184 -0
  40. data/lib/merb-core/dispatch/session/memory.rb +241 -0
  41. data/lib/merb-core/dispatch/worker.rb +28 -0
  42. data/lib/merb-core/gem_ext/erubis.rb +77 -0
  43. data/lib/{extlib → merb-core}/logger.rb +2 -2
  44. data/lib/merb-core/plugins.rb +59 -0
  45. data/lib/merb-core/rack.rb +21 -0
  46. data/lib/merb-core/rack/adapter.rb +44 -0
  47. data/lib/merb-core/rack/adapter/ebb.rb +25 -0
  48. data/lib/merb-core/rack/adapter/evented_mongrel.rb +26 -0
  49. data/lib/merb-core/rack/adapter/fcgi.rb +17 -0
  50. data/lib/merb-core/rack/adapter/irb.rb +118 -0
  51. data/lib/merb-core/rack/adapter/mongrel.rb +26 -0
  52. data/lib/merb-core/rack/adapter/runner.rb +28 -0
  53. data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +26 -0
  54. data/lib/merb-core/rack/adapter/thin.rb +39 -0
  55. data/lib/merb-core/rack/adapter/thin_turbo.rb +24 -0
  56. data/lib/merb-core/rack/adapter/webrick.rb +36 -0
  57. data/lib/merb-core/rack/application.rb +18 -0
  58. data/lib/merb-core/rack/handler/mongrel.rb +97 -0
  59. data/lib/merb-core/rack/middleware.rb +26 -0
  60. data/lib/merb-core/rack/middleware/path_prefix.rb +31 -0
  61. data/lib/merb-core/rack/middleware/profiler.rb +19 -0
  62. data/lib/merb-core/rack/middleware/static.rb +45 -0
  63. data/lib/merb-core/server.rb +252 -0
  64. data/lib/merb-core/tasks/audit.rake +68 -0
  65. data/lib/merb-core/tasks/merb.rb +1 -0
  66. data/lib/merb-core/tasks/merb_rake_helper.rb +12 -0
  67. data/lib/merb-core/test.rb +11 -0
  68. data/lib/merb-core/test/helpers.rb +9 -0
  69. data/lib/merb-core/test/helpers/controller_helper.rb +8 -0
  70. data/lib/merb-core/test/helpers/multipart_request_helper.rb +175 -0
  71. data/lib/merb-core/test/helpers/request_helper.rb +344 -0
  72. data/lib/merb-core/test/helpers/route_helper.rb +33 -0
  73. data/lib/merb-core/test/helpers/view_helper.rb +121 -0
  74. data/lib/merb-core/test/matchers.rb +9 -0
  75. data/lib/merb-core/test/matchers/controller_matchers.rb +319 -0
  76. data/lib/merb-core/test/matchers/route_matchers.rb +136 -0
  77. data/lib/merb-core/test/matchers/view_matchers.rb +335 -0
  78. data/lib/merb-core/test/run_specs.rb +47 -0
  79. data/lib/merb-core/test/tasks/spectasks.rb +68 -0
  80. data/lib/merb-core/test/test_ext/hpricot.rb +32 -0
  81. data/lib/merb-core/test/test_ext/object.rb +14 -0
  82. data/lib/merb-core/test/test_ext/string.rb +14 -0
  83. data/lib/merb-core/vendor/facets.rb +2 -0
  84. data/lib/merb-core/vendor/facets/dictionary.rb +433 -0
  85. data/lib/merb-core/vendor/facets/inflect.rb +345 -0
  86. data/lib/merb-core/version.rb +11 -0
  87. data/spec/private/config/adapter_spec.rb +32 -0
  88. data/spec/private/config/config_spec.rb +202 -0
  89. data/spec/private/config/environment_spec.rb +13 -0
  90. data/spec/private/config/spec_helper.rb +1 -0
  91. data/spec/private/core_ext/kernel_spec.rb +169 -0
  92. data/spec/private/dispatch/bootloader_spec.rb +24 -0
  93. data/spec/private/dispatch/cookies_spec.rb +107 -0
  94. data/spec/private/dispatch/dispatch_spec.rb +35 -0
  95. data/spec/private/dispatch/fixture/app/controllers/application.rb +4 -0
  96. data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +27 -0
  97. data/spec/private/dispatch/fixture/app/controllers/foo.rb +21 -0
  98. data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +8 -0
  99. data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +37 -0
  100. data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +216 -0
  101. data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +38 -0
  102. data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +40 -0
  103. data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
  104. data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +11 -0
  105. data/spec/private/dispatch/fixture/config/black_hole.rb +12 -0
  106. data/spec/private/dispatch/fixture/config/environments/development.rb +6 -0
  107. data/spec/private/dispatch/fixture/config/environments/production.rb +5 -0
  108. data/spec/private/dispatch/fixture/config/environments/test.rb +6 -0
  109. data/spec/private/dispatch/fixture/config/init.rb +45 -0
  110. data/spec/private/dispatch/fixture/config/rack.rb +11 -0
  111. data/spec/private/dispatch/fixture/config/router.rb +35 -0
  112. data/spec/private/dispatch/fixture/log/merb_test.log +1874 -0
  113. data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
  114. data/spec/private/dispatch/fixture/public/merb.fcgi +4 -0
  115. data/spec/private/dispatch/fixture/public/stylesheets/master.css +119 -0
  116. data/spec/private/dispatch/route_params_spec.rb +24 -0
  117. data/spec/private/dispatch/session_mixin_spec.rb +47 -0
  118. data/spec/private/dispatch/spec_helper.rb +1 -0
  119. data/spec/private/plugins/plugin_spec.rb +166 -0
  120. data/spec/private/rack/application_spec.rb +49 -0
  121. data/spec/private/router/behavior_spec.rb +60 -0
  122. data/spec/private/router/fixture/log/merb_test.log +139 -0
  123. data/spec/private/router/route_spec.rb +414 -0
  124. data/spec/private/router/router_spec.rb +175 -0
  125. data/spec/private/vendor/facets/plural_spec.rb +564 -0
  126. data/spec/private/vendor/facets/singular_spec.rb +489 -0
  127. data/spec/public/DEFINITIONS +11 -0
  128. data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +1 -0
  129. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +1 -0
  130. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +1 -0
  131. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +1 -0
  132. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +1 -0
  133. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  134. data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +1 -0
  135. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +1 -0
  136. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +1 -0
  137. data/spec/public/abstract_controller/controllers/cousins.rb +41 -0
  138. data/spec/public/abstract_controller/controllers/display.rb +54 -0
  139. data/spec/public/abstract_controller/controllers/filters.rb +193 -0
  140. data/spec/public/abstract_controller/controllers/helpers.rb +41 -0
  141. data/spec/public/abstract_controller/controllers/partial.rb +121 -0
  142. data/spec/public/abstract_controller/controllers/render.rb +113 -0
  143. data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +1 -0
  144. data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +1 -0
  145. data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +1 -0
  146. data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +1 -0
  147. data/spec/public/abstract_controller/controllers/views/layout/alt.erb +1 -0
  148. data/spec/public/abstract_controller/controllers/views/layout/custom.erb +1 -0
  149. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +1 -0
  150. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +1 -0
  151. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +1 -0
  152. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
  153. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +1 -0
  154. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  155. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +1 -0
  156. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +1 -0
  157. data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +1 -0
  158. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +1 -0
  159. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +1 -0
  160. data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +1 -0
  161. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +1 -0
  162. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +1 -0
  163. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +1 -0
  164. data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +1 -0
  165. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +1 -0
  166. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +1 -0
  167. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +1 -0
  168. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +1 -0
  169. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +1 -0
  170. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +1 -0
  171. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +1 -0
  172. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +1 -0
  173. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +1 -0
  174. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +1 -0
  175. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +1 -0
  176. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +1 -0
  177. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +1 -0
  178. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +1 -0
  179. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +1 -0
  180. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +1 -0
  181. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +1 -0
  182. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +1 -0
  183. data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +1 -0
  184. data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +1 -0
  185. data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +1 -0
  186. data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
  187. data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +1 -0
  188. data/spec/public/abstract_controller/display_spec.rb +33 -0
  189. data/spec/public/abstract_controller/filter_spec.rb +106 -0
  190. data/spec/public/abstract_controller/helper_spec.rb +21 -0
  191. data/spec/public/abstract_controller/partial_spec.rb +61 -0
  192. data/spec/public/abstract_controller/render_spec.rb +90 -0
  193. data/spec/public/abstract_controller/spec_helper.rb +31 -0
  194. data/spec/public/boot_loader/boot_loader_spec.rb +33 -0
  195. data/spec/public/boot_loader/spec_helper.rb +1 -0
  196. data/spec/public/controller/authentication_spec.rb +103 -0
  197. data/spec/public/controller/base_spec.rb +36 -0
  198. data/spec/public/controller/controllers/authentication.rb +45 -0
  199. data/spec/public/controller/controllers/base.rb +36 -0
  200. data/spec/public/controller/controllers/display.rb +118 -0
  201. data/spec/public/controller/controllers/redirect.rb +30 -0
  202. data/spec/public/controller/controllers/responder.rb +93 -0
  203. data/spec/public/controller/controllers/url.rb +7 -0
  204. data/spec/public/controller/controllers/views/layout/custom.html.erb +1 -0
  205. data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +1 -0
  206. data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +1 -0
  207. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +1 -0
  208. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +1 -0
  209. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +1 -0
  210. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +1 -0
  211. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +1 -0
  212. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +1 -0
  213. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +1 -0
  214. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +1 -0
  215. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +1 -0
  216. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +1 -0
  217. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +1 -0
  218. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +1 -0
  219. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +1 -0
  220. data/spec/public/controller/display_spec.rb +84 -0
  221. data/spec/public/controller/redirect_spec.rb +27 -0
  222. data/spec/public/controller/responder_spec.rb +163 -0
  223. data/spec/public/controller/spec_helper.rb +11 -0
  224. data/spec/public/controller/url_spec.rb +180 -0
  225. data/spec/public/core/merb_core_spec.rb +45 -0
  226. data/spec/public/core_ext/class_spec.rb +91 -0
  227. data/spec/public/core_ext/fixtures/core_ext_dependency.rb +2 -0
  228. data/spec/public/core_ext/kernel_spec.rb +9 -0
  229. data/spec/public/core_ext/spec_helper.rb +1 -0
  230. data/spec/public/directory_structure/directory/app/controllers/application.rb +3 -0
  231. data/spec/public/directory_structure/directory/app/controllers/base.rb +13 -0
  232. data/spec/public/directory_structure/directory/app/controllers/custom.rb +19 -0
  233. data/spec/public/directory_structure/directory/app/views/base/template.html.erb +1 -0
  234. data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +1 -0
  235. data/spec/public/directory_structure/directory/config/router.rb +3 -0
  236. data/spec/public/directory_structure/directory/log/merb_test.log +562 -0
  237. data/spec/public/directory_structure/directory_spec.rb +44 -0
  238. data/spec/public/logger/logger_spec.rb +181 -0
  239. data/spec/public/logger/spec_helper.rb +1 -0
  240. data/spec/public/reloading/directory/app/controllers/application.rb +3 -0
  241. data/spec/public/reloading/directory/app/controllers/reload.rb +6 -0
  242. data/spec/public/reloading/directory/config/init.rb +2 -0
  243. data/spec/public/reloading/directory/log/merb_test.log +138 -0
  244. data/spec/public/reloading/reload_spec.rb +103 -0
  245. data/spec/public/request/multipart_spec.rb +41 -0
  246. data/spec/public/request/request_spec.rb +228 -0
  247. data/spec/public/router/default_spec.rb +21 -0
  248. data/spec/public/router/deferred_spec.rb +22 -0
  249. data/spec/public/router/fixation_spec.rb +27 -0
  250. data/spec/public/router/fixture/log/merb_test.log +1556 -0
  251. data/spec/public/router/namespace_spec.rb +113 -0
  252. data/spec/public/router/nested_matches_spec.rb +97 -0
  253. data/spec/public/router/nested_resources_spec.rb +41 -0
  254. data/spec/public/router/resource_spec.rb +37 -0
  255. data/spec/public/router/resources_spec.rb +82 -0
  256. data/spec/public/router/spec_helper.rb +90 -0
  257. data/spec/public/router/special_spec.rb +61 -0
  258. data/spec/public/router/string_spec.rb +61 -0
  259. data/spec/public/template/template_spec.rb +104 -0
  260. data/spec/public/template/templates/error.html.erb +2 -0
  261. data/spec/public/template/templates/template.html.erb +1 -0
  262. data/spec/public/template/templates/template.html.myt +1 -0
  263. data/spec/public/test/controller_matchers_spec.rb +402 -0
  264. data/spec/public/test/controllers/controller_assertion_mock.rb +7 -0
  265. data/spec/public/test/controllers/dispatch_controller.rb +11 -0
  266. data/spec/public/test/controllers/spec_helper_controller.rb +38 -0
  267. data/spec/public/test/multipart_request_helper_spec.rb +159 -0
  268. data/spec/public/test/multipart_upload_text_file.txt +1 -0
  269. data/spec/public/test/request_helper_spec.rb +221 -0
  270. data/spec/public/test/route_helper_spec.rb +71 -0
  271. data/spec/public/test/route_matchers_spec.rb +162 -0
  272. data/spec/public/test/view_helper_spec.rb +96 -0
  273. data/spec/public/test/view_matchers_spec.rb +183 -0
  274. data/spec/spec_helper.rb +68 -0
  275. metadata +493 -41
  276. data/README.txt +0 -3
  277. data/lib/extlib.rb +0 -32
  278. data/lib/extlib/assertions.rb +0 -8
  279. data/lib/extlib/blank.rb +0 -42
  280. data/lib/extlib/class.rb +0 -175
  281. data/lib/extlib/hash.rb +0 -410
  282. data/lib/extlib/hook.rb +0 -366
  283. data/lib/extlib/inflection.rb +0 -141
  284. data/lib/extlib/lazy_array.rb +0 -106
  285. data/lib/extlib/mash.rb +0 -143
  286. data/lib/extlib/module.rb +0 -37
  287. data/lib/extlib/object.rb +0 -165
  288. data/lib/extlib/object_space.rb +0 -13
  289. data/lib/extlib/pathname.rb +0 -5
  290. data/lib/extlib/pooling.rb +0 -233
  291. data/lib/extlib/rubygems.rb +0 -38
  292. data/lib/extlib/simple_set.rb +0 -39
  293. data/lib/extlib/string.rb +0 -132
  294. data/lib/extlib/struct.rb +0 -8
  295. data/lib/extlib/tasks/release.rb +0 -9
  296. data/lib/extlib/time.rb +0 -12
  297. data/lib/extlib/version.rb +0 -3
  298. data/lib/extlib/virtual_file.rb +0 -10
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Merb::Config do
4
+ it "should apply environment from the command line option --environment" do
5
+ Merb.start %w( --environment performance_testing )
6
+ Merb.environment.should == "performance_testing"
7
+ end
8
+
9
+ it "should apply environment from the command line option -e" do
10
+ Merb.start %w( -e selenium )
11
+ Merb.environment.should == "selenium"
12
+ end
13
+ end
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
@@ -0,0 +1,169 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "Kernel#require" do
4
+ before do
5
+ @logger = StringIO.new
6
+ Merb.logger = Merb::Logger.new(@logger)
7
+ end
8
+
9
+ it "should be able to require and throw a useful error message" do
10
+ Kernel.stub!(:require).with("redcloth").and_raise(LoadError)
11
+ Merb.logger.should_receive(:error!).with("foo")
12
+ Kernel.rescue_require("redcloth", "foo")
13
+ end
14
+ end
15
+
16
+
17
+
18
+ describe "Kernel#caller" do
19
+ it "should be able to determine caller info" do
20
+ __caller_info__.should be_kind_of(Array)
21
+ end
22
+
23
+ it "should be able to get caller lines" do
24
+ __caller_lines__(__caller_info__[0], __caller_info__[1], 4).length.should == 9
25
+ __caller_lines__(__caller_info__[0], __caller_info__[1], 4).should be_kind_of(Array)
26
+ end
27
+ end
28
+
29
+
30
+
31
+ describe "Kernel#extract_options_from_args!" do
32
+ it "should extract options from args" do
33
+ args = ["foo", "bar", {:baz => :bar}]
34
+ Kernel.extract_options_from_args!(args).should == {:baz => :bar}
35
+ args.should == ["foo", "bar"]
36
+ end
37
+ end
38
+
39
+
40
+
41
+ describe "Kernel#debugger" do
42
+ it "should throw a useful error if there's no debugger" do
43
+ Merb.logger.should_receive(:info!).with "\n***** Debugger requested, but was not " +
44
+ "available: Start server with --debugger " +
45
+ "to enable *****\n"
46
+ Kernel.debugger
47
+ end
48
+ end
49
+
50
+
51
+ describe "Kernel#load_dependency" do
52
+ before :each do
53
+
54
+ end
55
+
56
+ it "DOES NOT add dependency to the list" do
57
+ lambda {
58
+ begin
59
+ load_dependency("rspec", ">= 1.1.2")
60
+ rescue LoadError => e
61
+ # some people may have no RSpec gem
62
+ end
63
+ }.should_not change(Merb::BootLoader::Dependencies.dependencies, :size)
64
+ end
65
+
66
+ it "DOES NOT defer load to boot loader run and requires it right away" do
67
+ self.should_receive(:require)
68
+
69
+ begin
70
+ load_dependency("rspec", ">= 1.1.2")
71
+ rescue LoadError => e
72
+ # some people may have no RSpec gem
73
+ end
74
+ end
75
+
76
+ it "logs on events using info level" do
77
+ self.should_receive(:require)
78
+ Merb.logger.should_receive(:info!)
79
+
80
+ begin
81
+ load_dependency("rspec", ">= 1.1.2")
82
+ rescue LoadError => e
83
+ # some people may have no RSpec gem
84
+ end
85
+ end
86
+
87
+ it "tries to be smart by checking if Merb is frozen" do
88
+ self.should_receive(:require)
89
+ Merb.should_receive(:frozen?).and_return(true)
90
+
91
+ begin
92
+ load_dependency("merb-core")
93
+ rescue LoadError => e
94
+ # some people may have no RSpec gem
95
+ end
96
+ end
97
+ end
98
+
99
+
100
+
101
+ describe "Kernel#dependencies" do
102
+ it "deferres load of dependencies given as String" do
103
+ self.should_receive(:dependency).with("hpricot").and_return(true)
104
+
105
+ begin
106
+ dependencies("hpricot")
107
+ rescue LoadError => e
108
+ # sanity check, should never happen
109
+ end
110
+ end
111
+
112
+ it "deferres load of dependencies given as Array" do
113
+ self.should_receive(:dependency).with("hpricot").and_return(true)
114
+ self.should_receive(:dependency).with("rake").and_return(true)
115
+
116
+ begin
117
+ dependencies("hpricot", "rake")
118
+ rescue LoadError => e
119
+ # sanity check, should never happen
120
+ end
121
+ end
122
+
123
+ it "deferres load of dependencies given as Hash" do
124
+ self.should_receive(:dependency).with("hpricot", "0.6").and_return(true)
125
+ self.should_receive(:dependency).with("rake", "0.8.1").and_return(true)
126
+
127
+ begin
128
+ dependencies("hpricot" => "0.6", "rake" => "0.8.1")
129
+ rescue LoadError => e
130
+ # sanity check, should never happen
131
+ end
132
+ end
133
+ end
134
+
135
+
136
+
137
+ describe "Kernel#load_dependencies" do
138
+ it "loads dependencies given as String immediately" do
139
+ self.should_receive(:load_dependency).with("hpricot").and_return(true)
140
+
141
+ begin
142
+ load_dependencies("hpricot")
143
+ rescue LoadError => e
144
+ # sanity check, should never happen
145
+ end
146
+ end
147
+
148
+ it "loads dependencies given as Array immediately" do
149
+ self.should_receive(:load_dependency).with("hpricot").and_return(true)
150
+ self.should_receive(:load_dependency).with("rake").and_return(true)
151
+
152
+ begin
153
+ load_dependencies("hpricot", "rake")
154
+ rescue LoadError => e
155
+ # sanity check, should never happen
156
+ end
157
+ end
158
+
159
+ it "loads dependencies given as Hash immediately" do
160
+ self.should_receive(:load_dependency).with("hpricot", "0.6").and_return(true)
161
+ self.should_receive(:load_dependency).with("rake", "0.8.1").and_return(true)
162
+
163
+ begin
164
+ load_dependencies("hpricot" => "0.6", "rake" => "0.8.1")
165
+ rescue LoadError => e
166
+ # sanity check, should never happen
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Merb::BootLoader::RackUpApplication do
4
+
5
+ it "should default to rack config (rack.rb)" do
6
+ options = {:merb_root => File.dirname(__FILE__) / 'fixture'}
7
+ Merb::Config.setup(options)
8
+ app = Merb::BootLoader::RackUpApplication.run
9
+ app.class.should == Merb::Rack::Static
10
+ end
11
+
12
+ it "should use rackup config that we specified" do
13
+ options = {:rackup => File.dirname(__FILE__) / 'fixture' / 'config' / 'black_hole.rb'}
14
+ Merb::Config.setup(options)
15
+ app = Merb::BootLoader::RackUpApplication.run
16
+ app.class.should == Rack::Adapter::BlackHole
17
+
18
+ env = Rack::MockRequest.env_for("/black_hole")
19
+ status, header, body = app.call(env)
20
+ status.should == 200
21
+ header.should == { "Content-Type" => "text/plain" }
22
+ body.should == ""
23
+ end
24
+ end
@@ -0,0 +1,107 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+ Merb.start :environment => 'test'
3
+ module CookiesSpecModule
4
+
5
+ def cookie_time(time)
6
+ time.gmtime.strftime(Merb::Const::COOKIE_EXPIRATION_FORMAT)
7
+ end
8
+ end
9
+
10
+ describe Merb::Cookies do
11
+ include CookiesSpecModule
12
+
13
+ before do
14
+ @_cookies = Mash.new
15
+ @_headers = {}
16
+ @cookies = Merb::Cookies.new(@_cookies, @_headers)
17
+ end
18
+
19
+ it "should respond to []" do
20
+ @cookies.should respond_to(:[])
21
+ end
22
+
23
+ it "should respond to []=" do
24
+ @cookies.should respond_to(:[]=)
25
+ end
26
+
27
+ it "should respond to delete" do
28
+ @cookies.should respond_to(:delete)
29
+ end
30
+
31
+ it "should accept simple cookies that expire at end of session" do
32
+ @cookies[:foo] = 'bar'
33
+
34
+ @_headers['Set-Cookie'].should == ['foo=bar; path=/;']
35
+
36
+ @cookies[:foo].should == 'bar'
37
+ @cookies['foo'].should == 'bar'
38
+ end
39
+
40
+ it "should accept cookies with expiry dates" do
41
+ expires = Time.now + 2 * (60*60*24*7)
42
+ @cookies[:dozen] = {
43
+ :value => 'twelve',
44
+ :expires => expires
45
+ }
46
+
47
+ @_headers['Set-Cookie'].should ==
48
+ ["dozen=twelve; expires=%s; path=/;" % cookie_time(expires)]
49
+
50
+ @cookies[:dozen].should == 'twelve'
51
+ @cookies['dozen'].should == 'twelve'
52
+ end
53
+
54
+ it "should accept multiple cookies" do
55
+ expires = Time.now + 2 * (60*60*24*7)
56
+ @cookies[:foo] = 'bar'
57
+ @cookies[:dozen] = {
58
+ :value => 'twelve',
59
+ :expires => expires
60
+ }
61
+
62
+ @_headers['Set-Cookie'].should == [
63
+ 'foo=bar; path=/;',
64
+ "dozen=twelve; expires=%s; path=/;" % cookie_time(expires)
65
+ ]
66
+
67
+ @cookies[:dozen].should == 'twelve'
68
+ @cookies['dozen'].should == 'twelve'
69
+ @cookies[:foo].should == 'bar'
70
+ @cookies['foo'].should == 'bar'
71
+ end
72
+
73
+ it "should leave the value unescaped in the current request" do
74
+ @cookies[:foo] = "100%"
75
+ @_headers['Set-Cookie'].should == [
76
+ 'foo=100%25; path=/;'
77
+ ]
78
+
79
+ @cookies[:foo].should == '100%'
80
+ @cookies['foo'].should == '100%'
81
+ end
82
+
83
+ it "should give access to currently saved cookies" do
84
+ @_cookies[:original] = 'accessible'
85
+ @cookies[:original].should == 'accessible'
86
+
87
+ @cookies[:foo] = 'bar'
88
+ @cookies[:foo].should == 'bar'
89
+ @cookies[:original].should == 'accessible'
90
+ end
91
+
92
+ it "should overwrite old cookies with new cookies" do
93
+ @_cookies[:foo] = 'bar'
94
+ @cookies[:foo].should == 'bar'
95
+
96
+ @cookies[:foo] = 'new'
97
+ @cookies[:foo].should == 'new'
98
+ end
99
+
100
+ it "should allow deleting of cookies" do
101
+ @_cookies[:foo] = 'bar'
102
+ @cookies[:foo].should == 'bar'
103
+
104
+ @cookies.delete(:foo)
105
+ @cookies[:foo].should == nil
106
+ end
107
+ end
@@ -0,0 +1,35 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+ require 'rack/mock'
3
+ require 'stringio'
4
+ Merb.start :environment => 'test',
5
+ :merb_root => File.dirname(__FILE__) / 'fixture'
6
+
7
+ describe Merb::Dispatcher do
8
+
9
+ it "should handle return an Exceptions controller for a bad route request" do
10
+ env = Rack::MockRequest.env_for("/notreal")
11
+ Merb::Dispatcher.handle(env).should be_kind_of(Exceptions)
12
+ end
13
+
14
+ it "should search for an action matching the specific exception in the Exceptions controller" do
15
+ env = Rack::MockRequest.env_for("/foo/raise_not_acceptable")
16
+ env['REQUEST_URI'] = '/foo/raise_not_acceptable'
17
+ Merb::Dispatcher.handle(env).action_name.should == 'not_acceptable'
18
+ end
19
+
20
+ it "should search for actions matching more general exception types if the specific one cannot be found in the Exception controller" do
21
+ env = Rack::MockRequest.env_for("/foo/raise_conflict")
22
+ env['REQUEST_URI'] = '/foo/raise_conflict'
23
+ Merb::Dispatcher.handle(env).action_name.should == 'client_error'
24
+ end
25
+
26
+ it "should log the start time of the transaction" do
27
+ t = Time.now
28
+ env = Rack::MockRequest.env_for("/notreal")
29
+ Time.stub!(:now).and_return(t)
30
+ Merb.logger.should_receive(:info).with("Started request handling: #{t}")
31
+
32
+ Merb::Dispatcher.handle(env)
33
+ end
34
+
35
+ end
@@ -0,0 +1,4 @@
1
+
2
+
3
+ class Application < Merb::Controller
4
+ end
@@ -0,0 +1,27 @@
1
+
2
+
3
+ class Exceptions < Application
4
+
5
+ attr_reader :handler
6
+
7
+ # handle NotFound exceptions (404)
8
+
9
+ def not_found
10
+ @handler = :not_found
11
+ render :format => :html
12
+ end
13
+
14
+ # handle NotAcceptable exceptions (406)
15
+
16
+ def not_acceptable
17
+ @handler = :not_acceptable
18
+ render "Handled by: not_acceptable"
19
+ end
20
+
21
+ # # Any client error (400 series)
22
+ def client_error
23
+ @handler = :client_error
24
+ render "Handled by: client_error"
25
+ end
26
+
27
+ end
@@ -0,0 +1,21 @@
1
+
2
+
3
+ class Foo < Application
4
+
5
+ def index
6
+ "index"
7
+ end
8
+
9
+ def bar
10
+ render
11
+ end
12
+
13
+ def raise_conflict
14
+ raise Conflict
15
+ end
16
+
17
+ def raise_not_acceptable
18
+ raise NotAcceptable
19
+ end
20
+
21
+ end
@@ -0,0 +1,8 @@
1
+
2
+
3
+ module Merb
4
+
5
+ module GlobalHelper
6
+ # helpers defined here available to all views.
7
+ end
8
+ end
@@ -0,0 +1,37 @@
1
+ <div id="container">
2
+ <div id="header-container">
3
+ <img src="/images/merb.jpg">
4
+ <!-- <h1>Mongrel + Erb</h1> -->
5
+ <h2>pocket rocket web framework</h2>
6
+ <hr />
7
+ </div>
8
+
9
+ <div id="left-container">
10
+ <h3>Exception:</h3>
11
+ <p><%= params[:exception] %></p>
12
+ </div>
13
+
14
+ <div id="main-container">
15
+ <h3>Why am I seeing this page?</h3>
16
+ <p>
17
+ An unexpected "client error" has occurred. That means something in your request
18
+ was not allowed, but the server does not have any more specific information.
19
+ </p>
20
+
21
+ <h3>Where can I find help?</h3>
22
+ <p>If you have any questions or if you can't figure something out, please take a
23
+ look at our <a href="http://merb.devjavu.com/"> project development page</a> or,
24
+ feel free to come chat at irc.freenode.net, channel #merb.</p>
25
+
26
+ <h3>How do I edit this page?</h3>
27
+ <p>You can change what people see when this happens byy editing <tt>app/views/exceptions/not_found.html.erb</tt>.</p>
28
+
29
+ </div>
30
+
31
+ <div id="footer-container">
32
+ <hr />
33
+ <div class="left"></div>
34
+ <div class="right">&copy; 2008 the merb dev team</div>
35
+ <p>&nbsp;</p>
36
+ </div>
37
+ </div>