thorero 0.9.4.4 → 0.9.4.5

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 (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>