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.
- data/LICENSE +1 -1
- data/README +21 -0
- data/Rakefile +275 -108
- data/TODO +0 -0
- data/bin/merb +12 -0
- data/bin/merb-specs +5 -0
- data/docs/bootloading.dox +58 -0
- data/docs/documentation_standards +40 -0
- data/docs/merb-core-call-stack-diagram.mmap +0 -0
- data/docs/merb-core-call-stack-diagram.pdf +0 -0
- data/docs/merb-core-call-stack-diagram.png +0 -0
- data/docs/new_render_api +51 -0
- data/lib/merb-core.rb +603 -0
- data/lib/merb-core/autoload.rb +32 -0
- data/lib/merb-core/bootloader.rb +708 -0
- data/lib/merb-core/config.rb +303 -0
- data/lib/merb-core/constants.rb +43 -0
- data/lib/merb-core/controller/abstract_controller.rb +578 -0
- data/lib/merb-core/controller/exceptions.rb +302 -0
- data/lib/merb-core/controller/merb_controller.rb +256 -0
- data/lib/merb-core/controller/mime.rb +106 -0
- data/lib/merb-core/controller/mixins/authentication.rb +87 -0
- data/lib/merb-core/controller/mixins/controller.rb +290 -0
- data/lib/merb-core/controller/mixins/render.rb +481 -0
- data/lib/merb-core/controller/mixins/responder.rb +472 -0
- data/lib/merb-core/controller/template.rb +254 -0
- data/lib/merb-core/core_ext.rb +8 -0
- data/lib/merb-core/core_ext/kernel.rb +319 -0
- data/lib/merb-core/dispatch/cookies.rb +91 -0
- data/lib/merb-core/dispatch/dispatcher.rb +278 -0
- data/lib/merb-core/dispatch/exceptions.html.erb +303 -0
- data/lib/merb-core/dispatch/request.rb +603 -0
- data/lib/merb-core/dispatch/router.rb +179 -0
- data/lib/merb-core/dispatch/router/behavior.rb +867 -0
- data/lib/merb-core/dispatch/router/cached_proc.rb +52 -0
- data/lib/merb-core/dispatch/router/route.rb +321 -0
- data/lib/merb-core/dispatch/session.rb +78 -0
- data/lib/merb-core/dispatch/session/cookie.rb +168 -0
- data/lib/merb-core/dispatch/session/memcached.rb +184 -0
- data/lib/merb-core/dispatch/session/memory.rb +241 -0
- data/lib/merb-core/dispatch/worker.rb +28 -0
- data/lib/merb-core/gem_ext/erubis.rb +77 -0
- data/lib/{extlib → merb-core}/logger.rb +2 -2
- data/lib/merb-core/plugins.rb +59 -0
- data/lib/merb-core/rack.rb +21 -0
- data/lib/merb-core/rack/adapter.rb +44 -0
- data/lib/merb-core/rack/adapter/ebb.rb +25 -0
- data/lib/merb-core/rack/adapter/evented_mongrel.rb +26 -0
- data/lib/merb-core/rack/adapter/fcgi.rb +17 -0
- data/lib/merb-core/rack/adapter/irb.rb +118 -0
- data/lib/merb-core/rack/adapter/mongrel.rb +26 -0
- data/lib/merb-core/rack/adapter/runner.rb +28 -0
- data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +26 -0
- data/lib/merb-core/rack/adapter/thin.rb +39 -0
- data/lib/merb-core/rack/adapter/thin_turbo.rb +24 -0
- data/lib/merb-core/rack/adapter/webrick.rb +36 -0
- data/lib/merb-core/rack/application.rb +18 -0
- data/lib/merb-core/rack/handler/mongrel.rb +97 -0
- data/lib/merb-core/rack/middleware.rb +26 -0
- data/lib/merb-core/rack/middleware/path_prefix.rb +31 -0
- data/lib/merb-core/rack/middleware/profiler.rb +19 -0
- data/lib/merb-core/rack/middleware/static.rb +45 -0
- data/lib/merb-core/server.rb +252 -0
- data/lib/merb-core/tasks/audit.rake +68 -0
- data/lib/merb-core/tasks/merb.rb +1 -0
- data/lib/merb-core/tasks/merb_rake_helper.rb +12 -0
- data/lib/merb-core/test.rb +11 -0
- data/lib/merb-core/test/helpers.rb +9 -0
- data/lib/merb-core/test/helpers/controller_helper.rb +8 -0
- data/lib/merb-core/test/helpers/multipart_request_helper.rb +175 -0
- data/lib/merb-core/test/helpers/request_helper.rb +344 -0
- data/lib/merb-core/test/helpers/route_helper.rb +33 -0
- data/lib/merb-core/test/helpers/view_helper.rb +121 -0
- data/lib/merb-core/test/matchers.rb +9 -0
- data/lib/merb-core/test/matchers/controller_matchers.rb +319 -0
- data/lib/merb-core/test/matchers/route_matchers.rb +136 -0
- data/lib/merb-core/test/matchers/view_matchers.rb +335 -0
- data/lib/merb-core/test/run_specs.rb +47 -0
- data/lib/merb-core/test/tasks/spectasks.rb +68 -0
- data/lib/merb-core/test/test_ext/hpricot.rb +32 -0
- data/lib/merb-core/test/test_ext/object.rb +14 -0
- data/lib/merb-core/test/test_ext/string.rb +14 -0
- data/lib/merb-core/vendor/facets.rb +2 -0
- data/lib/merb-core/vendor/facets/dictionary.rb +433 -0
- data/lib/merb-core/vendor/facets/inflect.rb +345 -0
- data/lib/merb-core/version.rb +11 -0
- data/spec/private/config/adapter_spec.rb +32 -0
- data/spec/private/config/config_spec.rb +202 -0
- data/spec/private/config/environment_spec.rb +13 -0
- data/spec/private/config/spec_helper.rb +1 -0
- data/spec/private/core_ext/kernel_spec.rb +169 -0
- data/spec/private/dispatch/bootloader_spec.rb +24 -0
- data/spec/private/dispatch/cookies_spec.rb +107 -0
- data/spec/private/dispatch/dispatch_spec.rb +35 -0
- data/spec/private/dispatch/fixture/app/controllers/application.rb +4 -0
- data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +27 -0
- data/spec/private/dispatch/fixture/app/controllers/foo.rb +21 -0
- data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +8 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +37 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +216 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +38 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +40 -0
- data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
- data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +11 -0
- data/spec/private/dispatch/fixture/config/black_hole.rb +12 -0
- data/spec/private/dispatch/fixture/config/environments/development.rb +6 -0
- data/spec/private/dispatch/fixture/config/environments/production.rb +5 -0
- data/spec/private/dispatch/fixture/config/environments/test.rb +6 -0
- data/spec/private/dispatch/fixture/config/init.rb +45 -0
- data/spec/private/dispatch/fixture/config/rack.rb +11 -0
- data/spec/private/dispatch/fixture/config/router.rb +35 -0
- data/spec/private/dispatch/fixture/log/merb_test.log +1874 -0
- data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
- data/spec/private/dispatch/fixture/public/merb.fcgi +4 -0
- data/spec/private/dispatch/fixture/public/stylesheets/master.css +119 -0
- data/spec/private/dispatch/route_params_spec.rb +24 -0
- data/spec/private/dispatch/session_mixin_spec.rb +47 -0
- data/spec/private/dispatch/spec_helper.rb +1 -0
- data/spec/private/plugins/plugin_spec.rb +166 -0
- data/spec/private/rack/application_spec.rb +49 -0
- data/spec/private/router/behavior_spec.rb +60 -0
- data/spec/private/router/fixture/log/merb_test.log +139 -0
- data/spec/private/router/route_spec.rb +414 -0
- data/spec/private/router/router_spec.rb +175 -0
- data/spec/private/vendor/facets/plural_spec.rb +564 -0
- data/spec/private/vendor/facets/singular_spec.rb +489 -0
- data/spec/public/DEFINITIONS +11 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/cousins.rb +41 -0
- data/spec/public/abstract_controller/controllers/display.rb +54 -0
- data/spec/public/abstract_controller/controllers/filters.rb +193 -0
- data/spec/public/abstract_controller/controllers/helpers.rb +41 -0
- data/spec/public/abstract_controller/controllers/partial.rb +121 -0
- data/spec/public/abstract_controller/controllers/render.rb +113 -0
- data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/layout/alt.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/layout/custom.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +1 -0
- data/spec/public/abstract_controller/display_spec.rb +33 -0
- data/spec/public/abstract_controller/filter_spec.rb +106 -0
- data/spec/public/abstract_controller/helper_spec.rb +21 -0
- data/spec/public/abstract_controller/partial_spec.rb +61 -0
- data/spec/public/abstract_controller/render_spec.rb +90 -0
- data/spec/public/abstract_controller/spec_helper.rb +31 -0
- data/spec/public/boot_loader/boot_loader_spec.rb +33 -0
- data/spec/public/boot_loader/spec_helper.rb +1 -0
- data/spec/public/controller/authentication_spec.rb +103 -0
- data/spec/public/controller/base_spec.rb +36 -0
- data/spec/public/controller/controllers/authentication.rb +45 -0
- data/spec/public/controller/controllers/base.rb +36 -0
- data/spec/public/controller/controllers/display.rb +118 -0
- data/spec/public/controller/controllers/redirect.rb +30 -0
- data/spec/public/controller/controllers/responder.rb +93 -0
- data/spec/public/controller/controllers/url.rb +7 -0
- data/spec/public/controller/controllers/views/layout/custom.html.erb +1 -0
- data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +1 -0
- data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +1 -0
- data/spec/public/controller/display_spec.rb +84 -0
- data/spec/public/controller/redirect_spec.rb +27 -0
- data/spec/public/controller/responder_spec.rb +163 -0
- data/spec/public/controller/spec_helper.rb +11 -0
- data/spec/public/controller/url_spec.rb +180 -0
- data/spec/public/core/merb_core_spec.rb +45 -0
- data/spec/public/core_ext/class_spec.rb +91 -0
- data/spec/public/core_ext/fixtures/core_ext_dependency.rb +2 -0
- data/spec/public/core_ext/kernel_spec.rb +9 -0
- data/spec/public/core_ext/spec_helper.rb +1 -0
- data/spec/public/directory_structure/directory/app/controllers/application.rb +3 -0
- data/spec/public/directory_structure/directory/app/controllers/base.rb +13 -0
- data/spec/public/directory_structure/directory/app/controllers/custom.rb +19 -0
- data/spec/public/directory_structure/directory/app/views/base/template.html.erb +1 -0
- data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +1 -0
- data/spec/public/directory_structure/directory/config/router.rb +3 -0
- data/spec/public/directory_structure/directory/log/merb_test.log +562 -0
- data/spec/public/directory_structure/directory_spec.rb +44 -0
- data/spec/public/logger/logger_spec.rb +181 -0
- data/spec/public/logger/spec_helper.rb +1 -0
- data/spec/public/reloading/directory/app/controllers/application.rb +3 -0
- data/spec/public/reloading/directory/app/controllers/reload.rb +6 -0
- data/spec/public/reloading/directory/config/init.rb +2 -0
- data/spec/public/reloading/directory/log/merb_test.log +138 -0
- data/spec/public/reloading/reload_spec.rb +103 -0
- data/spec/public/request/multipart_spec.rb +41 -0
- data/spec/public/request/request_spec.rb +228 -0
- data/spec/public/router/default_spec.rb +21 -0
- data/spec/public/router/deferred_spec.rb +22 -0
- data/spec/public/router/fixation_spec.rb +27 -0
- data/spec/public/router/fixture/log/merb_test.log +1556 -0
- data/spec/public/router/namespace_spec.rb +113 -0
- data/spec/public/router/nested_matches_spec.rb +97 -0
- data/spec/public/router/nested_resources_spec.rb +41 -0
- data/spec/public/router/resource_spec.rb +37 -0
- data/spec/public/router/resources_spec.rb +82 -0
- data/spec/public/router/spec_helper.rb +90 -0
- data/spec/public/router/special_spec.rb +61 -0
- data/spec/public/router/string_spec.rb +61 -0
- data/spec/public/template/template_spec.rb +104 -0
- data/spec/public/template/templates/error.html.erb +2 -0
- data/spec/public/template/templates/template.html.erb +1 -0
- data/spec/public/template/templates/template.html.myt +1 -0
- data/spec/public/test/controller_matchers_spec.rb +402 -0
- data/spec/public/test/controllers/controller_assertion_mock.rb +7 -0
- data/spec/public/test/controllers/dispatch_controller.rb +11 -0
- data/spec/public/test/controllers/spec_helper_controller.rb +38 -0
- data/spec/public/test/multipart_request_helper_spec.rb +159 -0
- data/spec/public/test/multipart_upload_text_file.txt +1 -0
- data/spec/public/test/request_helper_spec.rb +221 -0
- data/spec/public/test/route_helper_spec.rb +71 -0
- data/spec/public/test/route_matchers_spec.rb +162 -0
- data/spec/public/test/view_helper_spec.rb +96 -0
- data/spec/public/test/view_matchers_spec.rb +183 -0
- data/spec/spec_helper.rb +68 -0
- metadata +493 -41
- data/README.txt +0 -3
- data/lib/extlib.rb +0 -32
- data/lib/extlib/assertions.rb +0 -8
- data/lib/extlib/blank.rb +0 -42
- data/lib/extlib/class.rb +0 -175
- data/lib/extlib/hash.rb +0 -410
- data/lib/extlib/hook.rb +0 -366
- data/lib/extlib/inflection.rb +0 -141
- data/lib/extlib/lazy_array.rb +0 -106
- data/lib/extlib/mash.rb +0 -143
- data/lib/extlib/module.rb +0 -37
- data/lib/extlib/object.rb +0 -165
- data/lib/extlib/object_space.rb +0 -13
- data/lib/extlib/pathname.rb +0 -5
- data/lib/extlib/pooling.rb +0 -233
- data/lib/extlib/rubygems.rb +0 -38
- data/lib/extlib/simple_set.rb +0 -39
- data/lib/extlib/string.rb +0 -132
- data/lib/extlib/struct.rb +0 -8
- data/lib/extlib/tasks/release.rb +0 -9
- data/lib/extlib/time.rb +0 -12
- data/lib/extlib/version.rb +0 -3
- data/lib/extlib/virtual_file.rb +0 -10
@@ -0,0 +1,44 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
2
|
+
Merb.start :environment => 'test',
|
3
|
+
:merb_root => File.dirname(__FILE__) / "directory"
|
4
|
+
|
5
|
+
describe "The default Merb directory structure" do
|
6
|
+
|
7
|
+
it "should load in controllers" do
|
8
|
+
calling { Base }.should_not raise_error
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be able to complete the dispatch cycle" do
|
12
|
+
controller = dispatch_to(Base, :string)
|
13
|
+
controller.body.should == "String"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should be able to complete the dispatch cycle with templates" do
|
17
|
+
controller = dispatch_to(Base, :template)
|
18
|
+
controller.body.should == "Template ERB"
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "Modifying the _template_path" do
|
24
|
+
|
25
|
+
it "should move the templates to a new location" do
|
26
|
+
controller = dispatch_to(Custom, :template)
|
27
|
+
controller.body.should == "Wonderful Template"
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "Merb.root_path" do
|
33
|
+
|
34
|
+
it "should return a path relative to Merb.root" do
|
35
|
+
path = Merb.root_path('/app/controllers/base.rb')
|
36
|
+
path.to_s.should == File.join(Merb.root, '/app/controllers/base.rb')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should accept multiple arguments like File.join" do
|
40
|
+
path = Merb.root_path('app', 'controllers', 'base.rb')
|
41
|
+
path.to_s.should == File.join(Merb.root, 'app', 'controllers', 'base.rb')
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
+
|
3
|
+
describe Merb do
|
4
|
+
|
5
|
+
describe "Command Line Options" do
|
6
|
+
|
7
|
+
it "should allow -l / --log_level to set the log_level" do
|
8
|
+
pending("How do we spec these?")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should allow -L / --log_file to set the log_file" do
|
12
|
+
pending("How do we spec these?")
|
13
|
+
# Run an instance of merb from the command line
|
14
|
+
# using system and test if the file was created?
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
describe Merb::Logger do
|
22
|
+
|
23
|
+
describe "#new" do
|
24
|
+
it "should call set_log with the arguments it was passed." do
|
25
|
+
logger = Merb::Logger.allocate # create an object sans initialization
|
26
|
+
logger.should_receive(:set_log).with('a partridge', 'a pear tree', 'a time bomb').and_return(true)
|
27
|
+
logger.send(:initialize, 'a partridge', 'a pear tree', 'a time bomb')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#set_log" do
|
32
|
+
|
33
|
+
before(:each) do
|
34
|
+
@logger = Merb::Logger.new(Merb.log_file)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should set the log level to :warn (4) when second parameter is :warn" do
|
38
|
+
Merb::Logger.new(Merb.log_file, :warn).level.should eql(4)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should set the log level to :debug (0) when Merb.environment is development" do
|
42
|
+
Merb.should_receive(:environment).and_return("development")
|
43
|
+
@logger.set_log(Merb.log_path / "development.log")
|
44
|
+
@logger.level.should eql(0)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should set the log level to :error (6) when Merb.environment is production" do
|
48
|
+
Merb.should_receive(:environment).and_return("production")
|
49
|
+
@logger.set_log(Merb.log_path / "production.log")
|
50
|
+
@logger.level.should eql(4)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should initialize the buffer to an empty array" do
|
54
|
+
@logger.buffer.should eql([])
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should default the delimiter to ' ~ '" do
|
58
|
+
@logger.delimiter.should eql(" ~ ")
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should assign the newly created object to Merb.logger" do
|
62
|
+
@logger = Merb::Logger.new(Merb.log_file)
|
63
|
+
Merb.logger.should eql(@logger)
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#flush" do
|
69
|
+
|
70
|
+
before(:each) do
|
71
|
+
@logger = Merb::Logger.new(Merb.log_file)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should immediately return if the buffer is empty" do
|
75
|
+
@logger.should_not_receive(:write)
|
76
|
+
@logger.flush
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should call the write_method with the stringified contents of the buffer if the buffer is non-empty" do
|
80
|
+
@logger.send(:<<, "a message")
|
81
|
+
@logger.send(:<<, "another message")
|
82
|
+
@logger.log.should_receive(:write).with(" ~ a message\n ~ another message\n")
|
83
|
+
@logger.flush
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#close" do
|
89
|
+
before(:each) do
|
90
|
+
@logger = Merb::Logger.new(Merb.log_file)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should flush the buffer before closing" do
|
94
|
+
# TODO: how to specify order? eg. flush then close
|
95
|
+
@logger.should_receive(:flush)
|
96
|
+
@logger.log.should_receive(:close)
|
97
|
+
@logger.close
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should call the close method if the log responds to close" do
|
101
|
+
@logger.log.should_receive(:close)
|
102
|
+
@logger.close
|
103
|
+
end
|
104
|
+
|
105
|
+
it "shouldn't call the close method if the log is a terminal" do
|
106
|
+
@logger.log.should_receive(:tty?).and_return(true)
|
107
|
+
@logger.log.should_not_receive(:close)
|
108
|
+
@logger.close
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should set the stored log attribute to nil" do
|
112
|
+
@logger.close
|
113
|
+
@logger.log.should eql(nil)
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "<<" do
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "level methods" do
|
123
|
+
|
124
|
+
before(:all) do
|
125
|
+
@logger = Merb::Logger.new(Merb.log_file)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should provide a #debug method which can be used to log" do
|
129
|
+
@logger.should respond_to(:debug)
|
130
|
+
@logger.should_receive(:<<).with("message").and_return(true)
|
131
|
+
@logger.debug("message")
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should provide a #info method which can be used to log" do
|
135
|
+
@logger.should respond_to(:info)
|
136
|
+
@logger.should_receive(:<<).with("message").and_return(true)
|
137
|
+
@logger.info("message")
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should provide a #warn method which can be used to log" do
|
141
|
+
@logger.should respond_to(:warn)
|
142
|
+
@logger.should_receive(:<<).with("message").and_return(true)
|
143
|
+
@logger.warn("message")
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should provide a #error method which can be used to log" do
|
147
|
+
@logger.should respond_to(:error)
|
148
|
+
@logger.should_receive(:<<).with("message").and_return(true)
|
149
|
+
@logger.error("message")
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should provide a #fatal method which can be used to log" do
|
153
|
+
@logger.should respond_to(:fatal)
|
154
|
+
@logger.should_receive(:<<).with("message").and_return(true)
|
155
|
+
@logger.fatal("message")
|
156
|
+
end
|
157
|
+
|
158
|
+
# TODO: add positive and negative tests for each of the methods below:
|
159
|
+
it "should provide a #debug? method" do
|
160
|
+
@logger.should respond_to(:debug?)
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should provide a #info? method" do
|
164
|
+
@logger.should respond_to(:info?)
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should provide a #warn? method" do
|
168
|
+
@logger.should respond_to(:warn?)
|
169
|
+
end
|
170
|
+
|
171
|
+
it "should provide a #error? method" do
|
172
|
+
@logger.should respond_to(:error?)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should provide a #fatal? method" do
|
176
|
+
@logger.should respond_to(:fatal?)
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
@@ -0,0 +1,138 @@
|
|
1
|
+
Thu, 15 May 2008 23:38:50 GMT ~ info ~ Logfile created
|
2
|
+
~ Not Using Sessions
|
3
|
+
~ Not Using Sessions
|
4
|
+
~ Not Using Sessions
|
5
|
+
~ Not Using Sessions
|
6
|
+
~ Not Using Sessions
|
7
|
+
~ Not Using Sessions
|
8
|
+
~ Not Using Sessions
|
9
|
+
~ Not Using Sessions
|
10
|
+
~ Not Using Sessions
|
11
|
+
~ Not Using Sessions
|
12
|
+
~ Not Using Sessions
|
13
|
+
~ Not Using Sessions
|
14
|
+
~ Not Using Sessions
|
15
|
+
~ Not Using Sessions
|
16
|
+
~ Not Using Sessions
|
17
|
+
~ Not Using Sessions
|
18
|
+
~ Not Using Sessions
|
19
|
+
~ Not Using Sessions
|
20
|
+
~ Not Using Sessions
|
21
|
+
~ Not Using Sessions
|
22
|
+
~ Not Using Sessions
|
23
|
+
~ Not Using Sessions
|
24
|
+
~ Not Using Sessions
|
25
|
+
~ Not Using Sessions
|
26
|
+
~ Not Using Sessions
|
27
|
+
~ Not Using Sessions
|
28
|
+
~ Not Using Sessions
|
29
|
+
~ Not Using Sessions
|
30
|
+
~ Not Using Sessions
|
31
|
+
~ Not Using Sessions
|
32
|
+
~ Not Using Sessions
|
33
|
+
~ Not Using Sessions
|
34
|
+
~ Not Using Sessions
|
35
|
+
~ Not Using Sessions
|
36
|
+
~ Not Using Sessions
|
37
|
+
~ Not Using Sessions
|
38
|
+
~ Not Using Sessions
|
39
|
+
~ Not Using Sessions
|
40
|
+
~ Not Using Sessions
|
41
|
+
~ Not Using Sessions
|
42
|
+
~ Not Using Sessions
|
43
|
+
~ Not Using Sessions
|
44
|
+
~ Not Using Sessions
|
45
|
+
~ Not Using Sessions
|
46
|
+
~ Not Using Sessions
|
47
|
+
~ Not Using Sessions
|
48
|
+
~ Not Using Sessions
|
49
|
+
~ Not Using Sessions
|
50
|
+
~ Not Using Sessions
|
51
|
+
~ Not Using Sessions
|
52
|
+
~ Not Using Sessions
|
53
|
+
~ Not Using Sessions
|
54
|
+
~ Not Using Sessions
|
55
|
+
~ Not Using Sessions
|
56
|
+
~ Not Using Sessions
|
57
|
+
~ Not Using Sessions
|
58
|
+
~ Not Using Sessions
|
59
|
+
~ Not Using Sessions
|
60
|
+
~ Not Using Sessions
|
61
|
+
~ Not Using Sessions
|
62
|
+
~ Not Using Sessions
|
63
|
+
~ Not Using Sessions
|
64
|
+
~ Not Using Sessions
|
65
|
+
~ Not Using Sessions
|
66
|
+
~ Not Using Sessions
|
67
|
+
~ Not Using Sessions
|
68
|
+
~ Not Using Sessions
|
69
|
+
~ Not Using Sessions
|
70
|
+
~ Not Using Sessions
|
71
|
+
~ Not Using Sessions
|
72
|
+
~ Not Using Sessions
|
73
|
+
~ Not Using Sessions
|
74
|
+
~ Not Using Sessions
|
75
|
+
~ Not Using Sessions
|
76
|
+
~ Not Using Sessions
|
77
|
+
~ Not Using Sessions
|
78
|
+
~ Not Using Sessions
|
79
|
+
~ Not Using Sessions
|
80
|
+
~ Not Using Sessions
|
81
|
+
~ Not Using Sessions
|
82
|
+
~ Not Using Sessions
|
83
|
+
~ Not Using Sessions
|
84
|
+
~ Not Using Sessions
|
85
|
+
~ Not Using Sessions
|
86
|
+
~ Not Using Sessions
|
87
|
+
~ Not Using Sessions
|
88
|
+
~ Not Using Sessions
|
89
|
+
~ Not Using Sessions
|
90
|
+
~ Not Using Sessions
|
91
|
+
~ Not Using Sessions
|
92
|
+
~ Not Using Sessions
|
93
|
+
~ Not Using Sessions
|
94
|
+
~ Not Using Sessions
|
95
|
+
~ Not Using Sessions
|
96
|
+
~ Not Using Sessions
|
97
|
+
~ Not Using Sessions
|
98
|
+
~ Not Using Sessions
|
99
|
+
~ Not Using Sessions
|
100
|
+
~ Not Using Sessions
|
101
|
+
~ Not Using Sessions
|
102
|
+
~ Not Using Sessions
|
103
|
+
~ Not Using Sessions
|
104
|
+
~ Not Using Sessions
|
105
|
+
~ Not Using Sessions
|
106
|
+
~ Not Using Sessions
|
107
|
+
~ Not Using Sessions
|
108
|
+
~ Not Using Sessions
|
109
|
+
~ Not Using Sessions
|
110
|
+
~ Not Using Sessions
|
111
|
+
~ Not Using Sessions
|
112
|
+
~ Not Using Sessions
|
113
|
+
~ Not Using Sessions
|
114
|
+
~ Not Using Sessions
|
115
|
+
~ Not Using Sessions
|
116
|
+
~ Not Using Sessions
|
117
|
+
~ Not Using Sessions
|
118
|
+
~ Not Using Sessions
|
119
|
+
~ Not Using Sessions
|
120
|
+
~ Not Using Sessions
|
121
|
+
~ Not Using Sessions
|
122
|
+
~ Not Using Sessions
|
123
|
+
~ Not Using Sessions
|
124
|
+
~ Not Using Sessions
|
125
|
+
~ Not Using Sessions
|
126
|
+
~ Not Using Sessions
|
127
|
+
~ Not Using Sessions
|
128
|
+
~ Not Using Sessions
|
129
|
+
~ Not Using Sessions
|
130
|
+
~ Not Using Sessions
|
131
|
+
~ Not Using Sessions
|
132
|
+
~ Not Using Sessions
|
133
|
+
~ Not Using Sessions
|
134
|
+
~ Not Using Sessions
|
135
|
+
~ Not Using Sessions
|
136
|
+
~ Not Using Sessions
|
137
|
+
~ Not Using Sessions
|
138
|
+
~ Not Using Sessions
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
2
|
+
|
3
|
+
class MockTimedExecutor
|
4
|
+
def self.every(seconds, &block)
|
5
|
+
@@scheduled_action = block
|
6
|
+
end
|
7
|
+
def self.run_task
|
8
|
+
@@scheduled_action.call
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
RealTimedExecutor = Merb::BootLoader::ReloadClasses::TimedExecutor
|
13
|
+
Merb::BootLoader::ReloadClasses::TimedExecutor = MockTimedExecutor
|
14
|
+
|
15
|
+
Merb.start :environment => 'test',
|
16
|
+
:merb_root => File.dirname(__FILE__) / "directory"
|
17
|
+
|
18
|
+
describe "TimedExecutor" do
|
19
|
+
it "should call a block of code repeatedly in the background" do
|
20
|
+
list_of_things = []
|
21
|
+
|
22
|
+
RealTimedExecutor.every(0.1) do
|
23
|
+
list_of_things << "Something"
|
24
|
+
end
|
25
|
+
|
26
|
+
sleep 0.5
|
27
|
+
|
28
|
+
list_of_things.should_not be_empty
|
29
|
+
list_of_things.size.should > 1
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "The reloader" do
|
35
|
+
|
36
|
+
before :all do
|
37
|
+
@reload_file = File.dirname(__FILE__) / "directory" / "app" / "controllers" / "reload.rb"
|
38
|
+
@text = <<-END
|
39
|
+
|
40
|
+
class Reloader < Application
|
41
|
+
end
|
42
|
+
|
43
|
+
class Hello < Application
|
44
|
+
end
|
45
|
+
END
|
46
|
+
update_file @text
|
47
|
+
MockTimedExecutor.run_task
|
48
|
+
end
|
49
|
+
|
50
|
+
def update_file(contents)
|
51
|
+
mtime = File.mtime(@reload_file)
|
52
|
+
f = File.open(@reload_file, "w") do |f|
|
53
|
+
f.puts contents
|
54
|
+
end
|
55
|
+
File.utime(mtime+30, mtime+30, @reload_file)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should reload files that were changed" do
|
59
|
+
defined?(Hello).should_not be_nil
|
60
|
+
defined?(Reloader).should_not be_nil
|
61
|
+
defined?(Reloader2).should be_nil
|
62
|
+
|
63
|
+
update_file <<-END
|
64
|
+
|
65
|
+
class Reloader < Application
|
66
|
+
end
|
67
|
+
|
68
|
+
class Reloader2
|
69
|
+
end
|
70
|
+
END
|
71
|
+
|
72
|
+
MockTimedExecutor.run_task
|
73
|
+
|
74
|
+
defined?(Hello).should be_nil
|
75
|
+
defined?(Reloader).should_not be_nil
|
76
|
+
defined?(Reloader2).should_not be_nil
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should remove classes for _abstract_subclasses" do
|
80
|
+
|
81
|
+
update_file <<-END
|
82
|
+
|
83
|
+
class Reloader < Application
|
84
|
+
end
|
85
|
+
|
86
|
+
class Reloader2 < Application
|
87
|
+
end
|
88
|
+
END
|
89
|
+
|
90
|
+
MockTimedExecutor.run_task
|
91
|
+
|
92
|
+
Merb::AbstractController._abstract_subclasses.should include("Reloader")
|
93
|
+
Merb::AbstractController._abstract_subclasses.should include("Reloader2")
|
94
|
+
defined?(Hello).should be_nil
|
95
|
+
defined?(Reloader).should_not be_nil
|
96
|
+
defined?(Reloader2).should_not be_nil
|
97
|
+
end
|
98
|
+
|
99
|
+
after :each do
|
100
|
+
update_file @text
|
101
|
+
MockTimedExecutor.run_task
|
102
|
+
end
|
103
|
+
end
|