actionpack 2.3.18 → 3.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of actionpack might be problematic. Click here for more details.
- data/CHANGELOG +15 -64
- data/README +39 -48
- data/lib/abstract_controller.rb +22 -0
- data/lib/abstract_controller/base.rb +191 -0
- data/lib/abstract_controller/callbacks.rb +113 -0
- data/lib/abstract_controller/collector.rb +30 -0
- data/lib/abstract_controller/compatibility.rb +18 -0
- data/lib/abstract_controller/helpers.rb +163 -0
- data/lib/abstract_controller/layouts.rb +413 -0
- data/lib/abstract_controller/localized_cache.rb +49 -0
- data/lib/abstract_controller/logger.rb +13 -0
- data/lib/abstract_controller/rendering.rb +238 -0
- data/lib/{action_controller → abstract_controller}/translation.rb +1 -1
- data/lib/action_controller.rb +68 -102
- data/lib/action_controller/base.rb +77 -1409
- data/lib/action_controller/caching.rb +58 -45
- data/lib/action_controller/caching/actions.rb +100 -114
- data/lib/action_controller/caching/fragments.rb +17 -19
- data/lib/action_controller/caching/pages.rb +12 -6
- data/lib/action_controller/caching/sweeping.rb +42 -0
- data/lib/action_controller/deprecated.rb +5 -0
- data/lib/action_controller/deprecated/dispatcher.rb +28 -0
- data/lib/action_controller/deprecated/integration_test.rb +2 -0
- data/lib/action_controller/deprecated/performance_test.rb +1 -0
- data/lib/action_controller/metal.rb +125 -0
- data/lib/action_controller/metal/compatibility.rb +141 -0
- data/lib/action_controller/metal/conditional_get.rb +86 -0
- data/lib/action_controller/metal/configuration.rb +28 -0
- data/lib/action_controller/metal/cookies.rb +17 -0
- data/lib/action_controller/metal/exceptions.rb +46 -0
- data/lib/action_controller/metal/flash.rb +28 -0
- data/lib/action_controller/metal/head.rb +33 -0
- data/lib/action_controller/metal/helpers.rb +116 -0
- data/lib/action_controller/metal/hide_actions.rb +50 -0
- data/lib/action_controller/{http_authentication.rb → metal/http_authentication.rb} +18 -15
- data/lib/action_controller/metal/instrumentation.rb +99 -0
- data/lib/action_controller/metal/mime_responds.rb +300 -0
- data/lib/action_controller/metal/rack_delegation.rb +35 -0
- data/lib/action_controller/metal/redirecting.rb +90 -0
- data/lib/action_controller/metal/renderers.rb +95 -0
- data/lib/action_controller/metal/rendering.rb +69 -0
- data/lib/action_controller/metal/request_forgery_protection.rb +115 -0
- data/lib/action_controller/metal/rescue.rb +13 -0
- data/lib/action_controller/metal/responder.rb +220 -0
- data/lib/action_controller/{session_management.rb → metal/session_management.rb} +5 -14
- data/lib/action_controller/{streaming.rb → metal/streaming.rb} +13 -12
- data/lib/action_controller/metal/testing.rb +42 -0
- data/lib/action_controller/metal/url_for.rb +157 -0
- data/lib/action_controller/{verification.rb → metal/verification.rb} +41 -41
- data/lib/action_controller/middleware.rb +38 -0
- data/lib/action_controller/polymorphic_routes.rb +20 -26
- data/lib/action_controller/railtie.rb +30 -0
- data/lib/action_controller/railties/subscriber.rb +63 -0
- data/lib/action_controller/record_identifier.rb +3 -16
- data/lib/action_controller/test_case.rb +156 -18
- data/lib/action_controller/url_rewriter.rb +47 -200
- data/lib/action_controller/vendor/html-scanner.rb +16 -12
- data/lib/action_controller/vendor/html-scanner/html/node.rb +1 -1
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +12 -9
- data/lib/action_dispatch.rb +88 -0
- data/lib/action_dispatch/http/cache.rb +123 -0
- data/lib/action_dispatch/http/filter_parameters.rb +98 -0
- data/lib/{action_controller → action_dispatch/http}/headers.rb +8 -8
- data/lib/action_dispatch/http/mime_negotiation.rb +101 -0
- data/lib/{action_controller → action_dispatch/http}/mime_type.rb +30 -11
- data/lib/{action_controller → action_dispatch/http}/mime_types.rb +5 -3
- data/lib/action_dispatch/http/parameters.rb +49 -0
- data/lib/action_dispatch/http/request.rb +223 -0
- data/lib/action_dispatch/http/response.rb +209 -0
- data/lib/action_dispatch/http/upload.rb +48 -0
- data/lib/action_dispatch/http/url.rb +129 -0
- data/lib/action_dispatch/middleware/callbacks.rb +50 -0
- data/lib/action_dispatch/middleware/cascade.rb +29 -0
- data/lib/action_dispatch/middleware/cookies.rb +216 -0
- data/lib/{action_controller → action_dispatch/middleware}/flash.rb +51 -90
- data/lib/action_dispatch/middleware/head.rb +18 -0
- data/lib/action_dispatch/middleware/params_parser.rb +78 -0
- data/lib/action_dispatch/middleware/rescue.rb +26 -0
- data/lib/action_dispatch/middleware/session/abstract_store.rb +209 -0
- data/lib/{action_controller → action_dispatch/middleware}/session/cookie_store.rb +56 -60
- data/lib/action_dispatch/middleware/session/mem_cache_store.rb +47 -0
- data/lib/action_dispatch/middleware/show_exceptions.rb +173 -0
- data/lib/{action_controller/middleware_stack.rb → action_dispatch/middleware/stack.rb} +23 -13
- data/lib/action_dispatch/middleware/static.rb +44 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_request_and_response.erb +10 -3
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_trace.erb +4 -4
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +10 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/layout.erb +2 -2
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/missing_template.erb +0 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/routing_error.erb +0 -0
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/template_error.erb +3 -3
- data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/unknown_action.erb +0 -0
- data/lib/action_dispatch/railtie.rb +15 -0
- data/lib/action_dispatch/routing.rb +217 -0
- data/lib/action_dispatch/routing/deprecated_mapper.rb +877 -0
- data/lib/action_dispatch/routing/mapper.rb +649 -0
- data/lib/action_dispatch/routing/route.rb +55 -0
- data/lib/action_dispatch/routing/route_set.rb +445 -0
- data/lib/action_dispatch/testing/assertions.rb +21 -0
- data/lib/action_dispatch/testing/assertions/dom.rb +37 -0
- data/lib/{action_controller/assertions/model_assertions.rb → action_dispatch/testing/assertions/model.rb} +2 -4
- data/lib/action_dispatch/testing/assertions/response.rb +154 -0
- data/lib/{action_controller/assertions/routing_assertions.rb → action_dispatch/testing/assertions/routing.rb} +72 -34
- data/lib/{action_controller/assertions/selector_assertions.rb → action_dispatch/testing/assertions/selector.rb} +14 -11
- data/lib/{action_controller/assertions/tag_assertions.rb → action_dispatch/testing/assertions/tag.rb} +25 -14
- data/lib/{action_controller → action_dispatch/testing}/integration.rb +173 -406
- data/lib/action_dispatch/testing/performance_test.rb +17 -0
- data/lib/action_dispatch/testing/test_process.rb +42 -0
- data/lib/action_dispatch/testing/test_request.rb +83 -0
- data/lib/action_dispatch/testing/test_response.rb +136 -0
- data/lib/action_pack/version.rb +3 -3
- data/lib/action_view.rb +29 -26
- data/lib/action_view/base.rb +101 -148
- data/lib/action_view/context.rb +44 -0
- data/lib/action_view/helpers.rb +6 -4
- data/lib/action_view/helpers/{active_record_helper.rb → active_model_helper.rb} +63 -63
- data/lib/action_view/helpers/asset_tag_helper.rb +166 -31
- data/lib/action_view/helpers/cache_helper.rb +1 -1
- data/lib/action_view/helpers/capture_helper.rb +40 -8
- data/lib/action_view/helpers/csrf_helper.rb +2 -4
- data/lib/action_view/helpers/date_helper.rb +14 -15
- data/lib/action_view/helpers/form_helper.rb +121 -24
- data/lib/action_view/helpers/form_options_helper.rb +26 -25
- data/lib/action_view/helpers/form_tag_helper.rb +42 -33
- data/lib/action_view/helpers/javascript_helper.rb +1 -109
- data/lib/action_view/helpers/number_helper.rb +4 -1
- data/lib/action_view/helpers/prototype_helper.rb +75 -499
- data/lib/action_view/helpers/raw_output_helper.rb +1 -1
- data/lib/action_view/helpers/record_tag_helper.rb +3 -3
- data/lib/action_view/helpers/sanitize_helper.rb +3 -2
- data/lib/action_view/helpers/scriptaculous_helper.rb +89 -53
- data/lib/action_view/helpers/tag_helper.rb +12 -13
- data/lib/action_view/helpers/text_helper.rb +33 -38
- data/lib/action_view/helpers/translation_helper.rb +11 -35
- data/lib/action_view/helpers/url_helper.rb +140 -134
- data/lib/action_view/locale/en.yml +34 -28
- data/lib/action_view/paths.rb +27 -24
- data/lib/action_view/railtie.rb +17 -0
- data/lib/action_view/railties/subscriber.rb +24 -0
- data/lib/action_view/{partials.rb → render/partials.rb} +161 -51
- data/lib/action_view/render/rendering.rb +117 -0
- data/lib/action_view/template.rb +88 -217
- data/lib/action_view/template/error.rb +105 -0
- data/lib/action_view/template/handler.rb +41 -0
- data/lib/action_view/template/handlers.rb +54 -0
- data/lib/action_view/{template_handlers → template/handlers}/builder.rb +6 -6
- data/lib/action_view/template/handlers/erb.rb +58 -0
- data/lib/action_view/{template_handlers → template/handlers}/rjs.rb +8 -3
- data/lib/action_view/template/resolver.rb +164 -0
- data/lib/action_view/template/text.rb +40 -0
- data/lib/action_view/test_case.rb +18 -18
- metadata +165 -420
- data/RUNNING_UNIT_TESTS +0 -24
- data/Rakefile +0 -158
- data/install.rb +0 -30
- data/lib/action_controller/assertions/dom_assertions.rb +0 -55
- data/lib/action_controller/assertions/response_assertions.rb +0 -169
- data/lib/action_controller/benchmarking.rb +0 -107
- data/lib/action_controller/caching/sweeper.rb +0 -45
- data/lib/action_controller/cgi_ext.rb +0 -15
- data/lib/action_controller/cgi_ext/cookie.rb +0 -112
- data/lib/action_controller/cgi_ext/query_extension.rb +0 -22
- data/lib/action_controller/cgi_ext/stdinput.rb +0 -24
- data/lib/action_controller/cgi_process.rb +0 -77
- data/lib/action_controller/cookies.rb +0 -197
- data/lib/action_controller/dispatcher.rb +0 -133
- data/lib/action_controller/failsafe.rb +0 -87
- data/lib/action_controller/filters.rb +0 -680
- data/lib/action_controller/helpers.rb +0 -225
- data/lib/action_controller/layout.rb +0 -286
- data/lib/action_controller/middlewares.rb +0 -14
- data/lib/action_controller/mime_responds.rb +0 -193
- data/lib/action_controller/params_parser.rb +0 -77
- data/lib/action_controller/performance_test.rb +0 -15
- data/lib/action_controller/rack_lint_patch.rb +0 -36
- data/lib/action_controller/reloader.rb +0 -54
- data/lib/action_controller/request.rb +0 -518
- data/lib/action_controller/request_forgery_protection.rb +0 -116
- data/lib/action_controller/rescue.rb +0 -183
- data/lib/action_controller/resources.rb +0 -682
- data/lib/action_controller/response.rb +0 -237
- data/lib/action_controller/routing.rb +0 -388
- data/lib/action_controller/routing/builder.rb +0 -197
- data/lib/action_controller/routing/optimisations.rb +0 -130
- data/lib/action_controller/routing/recognition_optimisation.rb +0 -167
- data/lib/action_controller/routing/route.rb +0 -265
- data/lib/action_controller/routing/route_set.rb +0 -503
- data/lib/action_controller/routing/routing_ext.rb +0 -49
- data/lib/action_controller/routing/segments.rb +0 -343
- data/lib/action_controller/session/abstract_store.rb +0 -276
- data/lib/action_controller/session/mem_cache_store.rb +0 -60
- data/lib/action_controller/status_codes.rb +0 -88
- data/lib/action_controller/string_coercion.rb +0 -29
- data/lib/action_controller/templates/rescues/diagnostics.erb +0 -11
- data/lib/action_controller/test_process.rb +0 -580
- data/lib/action_controller/uploaded_file.rb +0 -44
- data/lib/action_view/helpers/benchmark_helper.rb +0 -54
- data/lib/action_view/inline_template.rb +0 -19
- data/lib/action_view/reloadable_template.rb +0 -117
- data/lib/action_view/renderable.rb +0 -109
- data/lib/action_view/renderable_partial.rb +0 -53
- data/lib/action_view/template_error.rb +0 -99
- data/lib/action_view/template_handler.rb +0 -34
- data/lib/action_view/template_handlers.rb +0 -48
- data/lib/action_view/template_handlers/erb.rb +0 -25
- data/lib/actionpack.rb +0 -2
- data/test/abstract_unit.rb +0 -78
- data/test/active_record_unit.rb +0 -104
- data/test/activerecord/active_record_store_test.rb +0 -221
- data/test/activerecord/render_partial_with_record_identification_test.rb +0 -188
- data/test/adv_attr_test.rb +0 -20
- data/test/controller/action_pack_assertions_test.rb +0 -545
- data/test/controller/addresses_render_test.rb +0 -37
- data/test/controller/assert_select_test.rb +0 -735
- data/test/controller/base_test.rb +0 -217
- data/test/controller/benchmark_test.rb +0 -32
- data/test/controller/caching_test.rb +0 -743
- data/test/controller/capture_test.rb +0 -66
- data/test/controller/content_type_test.rb +0 -178
- data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
- data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
- data/test/controller/cookie_test.rb +0 -208
- data/test/controller/deprecation/deprecated_base_methods_test.rb +0 -32
- data/test/controller/dispatcher_test.rb +0 -144
- data/test/controller/dom_assertions_test.rb +0 -53
- data/test/controller/failsafe_test.rb +0 -60
- data/test/controller/fake_controllers.rb +0 -33
- data/test/controller/fake_models.rb +0 -19
- data/test/controller/filter_params_test.rb +0 -52
- data/test/controller/filters_test.rb +0 -885
- data/test/controller/flash_test.rb +0 -174
- data/test/controller/header_test.rb +0 -14
- data/test/controller/helper_test.rb +0 -224
- data/test/controller/html-scanner/cdata_node_test.rb +0 -15
- data/test/controller/html-scanner/document_test.rb +0 -148
- data/test/controller/html-scanner/node_test.rb +0 -89
- data/test/controller/html-scanner/sanitizer_test.rb +0 -300
- data/test/controller/html-scanner/tag_node_test.rb +0 -238
- data/test/controller/html-scanner/text_node_test.rb +0 -50
- data/test/controller/html-scanner/tokenizer_test.rb +0 -131
- data/test/controller/http_basic_authentication_test.rb +0 -113
- data/test/controller/http_digest_authentication_test.rb +0 -254
- data/test/controller/integration_test.rb +0 -526
- data/test/controller/layout_test.rb +0 -215
- data/test/controller/localized_templates_test.rb +0 -24
- data/test/controller/logging_test.rb +0 -46
- data/test/controller/middleware_stack_test.rb +0 -90
- data/test/controller/mime_responds_test.rb +0 -536
- data/test/controller/mime_type_test.rb +0 -93
- data/test/controller/output_escaping_test.rb +0 -19
- data/test/controller/polymorphic_routes_test.rb +0 -297
- data/test/controller/rack_test.rb +0 -308
- data/test/controller/record_identifier_test.rb +0 -139
- data/test/controller/redirect_test.rb +0 -285
- data/test/controller/reloader_test.rb +0 -125
- data/test/controller/render_test.rb +0 -1783
- data/test/controller/request/json_params_parsing_test.rb +0 -65
- data/test/controller/request/multipart_params_parsing_test.rb +0 -177
- data/test/controller/request/query_string_parsing_test.rb +0 -129
- data/test/controller/request/test_request_test.rb +0 -35
- data/test/controller/request/url_encoded_params_parsing_test.rb +0 -146
- data/test/controller/request/xml_params_parsing_test.rb +0 -103
- data/test/controller/request_forgery_protection_test.rb +0 -233
- data/test/controller/request_test.rb +0 -398
- data/test/controller/rescue_test.rb +0 -541
- data/test/controller/resources_test.rb +0 -1393
- data/test/controller/routing_test.rb +0 -2592
- data/test/controller/selector_test.rb +0 -628
- data/test/controller/send_file_test.rb +0 -171
- data/test/controller/session/abstract_store_test.rb +0 -64
- data/test/controller/session/cookie_store_test.rb +0 -354
- data/test/controller/session/mem_cache_store_test.rb +0 -187
- data/test/controller/session/test_session_test.rb +0 -58
- data/test/controller/test_test.rb +0 -700
- data/test/controller/translation_test.rb +0 -26
- data/test/controller/url_rewriter_test.rb +0 -395
- data/test/controller/verification_test.rb +0 -270
- data/test/controller/view_paths_test.rb +0 -141
- data/test/controller/webservice_test.rb +0 -273
- data/test/fixtures/_top_level_partial.html.erb +0 -1
- data/test/fixtures/_top_level_partial_only.erb +0 -1
- data/test/fixtures/addresses/list.erb +0 -1
- data/test/fixtures/alternate_helpers/foo_helper.rb +0 -3
- data/test/fixtures/bad_customers/_bad_customer.html.erb +0 -1
- data/test/fixtures/companies.yml +0 -24
- data/test/fixtures/company.rb +0 -10
- data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +0 -1
- data/test/fixtures/content_type/render_default_for_rhtml.rhtml +0 -1
- data/test/fixtures/content_type/render_default_for_rjs.rjs +0 -1
- data/test/fixtures/content_type/render_default_for_rxml.rxml +0 -1
- data/test/fixtures/customers/_customer.html.erb +0 -1
- data/test/fixtures/db_definitions/sqlite.sql +0 -49
- data/test/fixtures/developer.rb +0 -9
- data/test/fixtures/developers.yml +0 -21
- data/test/fixtures/developers/_developer.erb +0 -1
- data/test/fixtures/developers_projects.yml +0 -13
- data/test/fixtures/failsafe/500.html +0 -1
- data/test/fixtures/fun/games/_game.erb +0 -1
- data/test/fixtures/fun/games/hello_world.erb +0 -1
- data/test/fixtures/fun/serious/games/_game.erb +0 -1
- data/test/fixtures/functional_caching/_partial.erb +0 -3
- data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +0 -3
- data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +0 -6
- data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +0 -5
- data/test/fixtures/functional_caching/fragment_cached.html.erb +0 -2
- data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +0 -1
- data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +0 -2
- data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +0 -1
- data/test/fixtures/good_customers/_good_customer.html.erb +0 -1
- data/test/fixtures/helpers/abc_helper.rb +0 -5
- data/test/fixtures/helpers/fun/games_helper.rb +0 -3
- data/test/fixtures/helpers/fun/pdf_helper.rb +0 -3
- data/test/fixtures/layout_tests/abs_path_layout.rhtml +0 -1
- data/test/fixtures/layout_tests/alt/hello.rhtml +0 -1
- data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
- data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +0 -1
- data/test/fixtures/layout_tests/layouts/item.rhtml +0 -1
- data/test/fixtures/layout_tests/layouts/layout_test.rhtml +0 -1
- data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +0 -1
- data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +0 -1
- data/test/fixtures/layout_tests/views/hello.rhtml +0 -1
- data/test/fixtures/layouts/_column.html.erb +0 -2
- data/test/fixtures/layouts/block_with_layout.erb +0 -3
- data/test/fixtures/layouts/builder.builder +0 -3
- data/test/fixtures/layouts/default_html.html.erb +0 -1
- data/test/fixtures/layouts/partial_with_layout.erb +0 -3
- data/test/fixtures/layouts/standard.erb +0 -1
- data/test/fixtures/layouts/talk_from_action.erb +0 -2
- data/test/fixtures/layouts/xhr.html.erb +0 -2
- data/test/fixtures/layouts/yield.erb +0 -2
- data/test/fixtures/localized/hello_world.de.html +0 -1
- data/test/fixtures/localized/hello_world.en.html +0 -1
- data/test/fixtures/mascot.rb +0 -3
- data/test/fixtures/mascots.yml +0 -4
- data/test/fixtures/mascots/_mascot.html.erb +0 -1
- data/test/fixtures/multipart/binary_file +0 -0
- data/test/fixtures/multipart/boundary_problem_file +0 -10
- data/test/fixtures/multipart/bracketed_param +0 -5
- data/test/fixtures/multipart/empty +0 -10
- data/test/fixtures/multipart/hello.txt +0 -1
- data/test/fixtures/multipart/large_text_file +0 -10
- data/test/fixtures/multipart/mixed_files +0 -0
- data/test/fixtures/multipart/mona_lisa.jpg +0 -0
- data/test/fixtures/multipart/none +0 -9
- data/test/fixtures/multipart/single_parameter +0 -5
- data/test/fixtures/multipart/text_file +0 -10
- data/test/fixtures/override/test/hello_world.erb +0 -1
- data/test/fixtures/override2/layouts/test/sub.erb +0 -1
- data/test/fixtures/post_test/layouts/post.html.erb +0 -1
- data/test/fixtures/post_test/layouts/super_post.iphone.erb +0 -1
- data/test/fixtures/post_test/post/index.html.erb +0 -1
- data/test/fixtures/post_test/post/index.iphone.erb +0 -1
- data/test/fixtures/post_test/super_post/index.html.erb +0 -1
- data/test/fixtures/post_test/super_post/index.iphone.erb +0 -1
- data/test/fixtures/project.rb +0 -3
- data/test/fixtures/projects.yml +0 -7
- data/test/fixtures/projects/_project.erb +0 -1
- data/test/fixtures/public/404.html +0 -1
- data/test/fixtures/public/500.da.html +0 -1
- data/test/fixtures/public/500.html +0 -1
- data/test/fixtures/public/absolute/test.css +0 -23
- data/test/fixtures/public/absolute/test.js +0 -63
- data/test/fixtures/public/images/rails.png +0 -0
- data/test/fixtures/public/javascripts/application.js +0 -1
- data/test/fixtures/public/javascripts/bank.js +0 -1
- data/test/fixtures/public/javascripts/controls.js +0 -1
- data/test/fixtures/public/javascripts/dragdrop.js +0 -1
- data/test/fixtures/public/javascripts/effects.js +0 -1
- data/test/fixtures/public/javascripts/prototype.js +0 -1
- data/test/fixtures/public/javascripts/robber.js +0 -1
- data/test/fixtures/public/javascripts/subdir/subdir.js +0 -1
- data/test/fixtures/public/javascripts/version.1.0.js +0 -1
- data/test/fixtures/public/stylesheets/bank.css +0 -1
- data/test/fixtures/public/stylesheets/robber.css +0 -1
- data/test/fixtures/public/stylesheets/subdir/subdir.css +0 -1
- data/test/fixtures/public/stylesheets/version.1.0.css +0 -1
- data/test/fixtures/quiz/questions/_question.html.erb +0 -1
- data/test/fixtures/replies.yml +0 -15
- data/test/fixtures/replies/_reply.erb +0 -1
- data/test/fixtures/reply.rb +0 -7
- data/test/fixtures/respond_to/all_types_with_layout.html.erb +0 -1
- data/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
- data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +0 -1
- data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +0 -1
- data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +0 -1
- data/test/fixtures/respond_to/layouts/missing.html.erb +0 -1
- data/test/fixtures/respond_to/layouts/standard.html.erb +0 -1
- data/test/fixtures/respond_to/layouts/standard.iphone.erb +0 -1
- data/test/fixtures/respond_to/using_defaults.html.erb +0 -1
- data/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
- data/test/fixtures/respond_to/using_defaults.xml.builder +0 -1
- data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +0 -1
- data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
- data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +0 -1
- data/test/fixtures/scope/test/modgreet.erb +0 -1
- data/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +0 -10
- data/test/fixtures/shared.html.erb +0 -1
- data/test/fixtures/symlink_parent/symlinked_layout.erb +0 -5
- data/test/fixtures/test/_counter.html.erb +0 -1
- data/test/fixtures/test/_customer.erb +0 -1
- data/test/fixtures/test/_customer_counter.erb +0 -1
- data/test/fixtures/test/_customer_counter_with_as.erb +0 -1
- data/test/fixtures/test/_customer_greeting.erb +0 -1
- data/test/fixtures/test/_customer_with_var.erb +0 -1
- data/test/fixtures/test/_form.erb +0 -1
- data/test/fixtures/test/_from_helper.erb +0 -1
- data/test/fixtures/test/_hash_greeting.erb +0 -1
- data/test/fixtures/test/_hash_object.erb +0 -2
- data/test/fixtures/test/_hello.builder +0 -1
- data/test/fixtures/test/_labelling_form.erb +0 -1
- data/test/fixtures/test/_layout_for_block_with_args.html.erb +0 -3
- data/test/fixtures/test/_layout_for_partial.html.erb +0 -3
- data/test/fixtures/test/_local_inspector.html.erb +0 -1
- data/test/fixtures/test/_one.html.erb +0 -1
- data/test/fixtures/test/_partial.erb +0 -1
- data/test/fixtures/test/_partial.html.erb +0 -1
- data/test/fixtures/test/_partial.js.erb +0 -1
- data/test/fixtures/test/_partial_for_use_in_layout.html.erb +0 -1
- data/test/fixtures/test/_partial_only.erb +0 -1
- data/test/fixtures/test/_partial_with_only_html_version.html.erb +0 -1
- data/test/fixtures/test/_person.erb +0 -2
- data/test/fixtures/test/_raise.html.erb +0 -1
- data/test/fixtures/test/_two.html.erb +0 -1
- data/test/fixtures/test/_utf8_partial.html.erb +0 -1
- data/test/fixtures/test/_utf8_partial_magic.html.erb +0 -2
- data/test/fixtures/test/action_talk_to_layout.erb +0 -2
- data/test/fixtures/test/array_translation.erb +0 -1
- data/test/fixtures/test/calling_partial_with_layout.html.erb +0 -1
- data/test/fixtures/test/capturing.erb +0 -4
- data/test/fixtures/test/content_for.erb +0 -2
- data/test/fixtures/test/content_for_concatenated.erb +0 -3
- data/test/fixtures/test/content_for_with_parameter.erb +0 -2
- data/test/fixtures/test/delete_with_js.rjs +0 -2
- data/test/fixtures/test/dont_pick_me +0 -1
- data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +0 -1
- data/test/fixtures/test/enum_rjs_test.rjs +0 -6
- data/test/fixtures/test/formatted_html_erb.html.erb +0 -1
- data/test/fixtures/test/formatted_xml_erb.builder +0 -1
- data/test/fixtures/test/formatted_xml_erb.html.erb +0 -1
- data/test/fixtures/test/formatted_xml_erb.xml.erb +0 -1
- data/test/fixtures/test/greeting.erb +0 -1
- data/test/fixtures/test/greeting.js.rjs +0 -1
- data/test/fixtures/test/hello.builder +0 -4
- data/test/fixtures/test/hello_world.da.html.erb +0 -1
- data/test/fixtures/test/hello_world.erb +0 -1
- data/test/fixtures/test/hello_world.erb~ +0 -1
- data/test/fixtures/test/hello_world.pt-BR.html.erb +0 -1
- data/test/fixtures/test/hello_world_container.builder +0 -3
- data/test/fixtures/test/hello_world_from_rxml.builder +0 -4
- data/test/fixtures/test/hello_world_with_layout_false.erb +0 -1
- data/test/fixtures/test/hello_xml_world.builder +0 -11
- data/test/fixtures/test/hyphen-ated.erb +0 -1
- data/test/fixtures/test/implicit_content_type.atom.builder +0 -2
- data/test/fixtures/test/list.erb +0 -1
- data/test/fixtures/test/malformed/malformed.en.html.erb~ +0 -1
- data/test/fixtures/test/malformed/malformed.erb~ +0 -1
- data/test/fixtures/test/malformed/malformed.html.erb~ +0 -1
- data/test/fixtures/test/nested_layout.erb +0 -3
- data/test/fixtures/test/non_erb_block_content_for.builder +0 -4
- data/test/fixtures/test/potential_conflicts.erb +0 -4
- data/test/fixtures/test/render_explicit_html_template.js.rjs +0 -1
- data/test/fixtures/test/render_file_from_template.html.erb +0 -1
- data/test/fixtures/test/render_file_with_ivar.erb +0 -1
- data/test/fixtures/test/render_file_with_locals.erb +0 -1
- data/test/fixtures/test/render_implicit_html_template.js.rjs +0 -1
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +0 -1
- data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +0 -1
- data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +0 -1
- data/test/fixtures/test/render_to_string_test.erb +0 -1
- data/test/fixtures/test/scoped_array_translation.erb +0 -1
- data/test/fixtures/test/sub_template_raise.html.erb +0 -1
- data/test/fixtures/test/template.erb +0 -1
- data/test/fixtures/test/translation.erb +0 -1
- data/test/fixtures/test/update_element_with_capture.erb +0 -9
- data/test/fixtures/test/using_layout_around_block.html.erb +0 -1
- data/test/fixtures/test/using_layout_around_block_with_args.html.erb +0 -1
- data/test/fixtures/test/utf8.html.erb +0 -4
- data/test/fixtures/test/utf8_magic.html.erb +0 -5
- data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +0 -5
- data/test/fixtures/topic.rb +0 -3
- data/test/fixtures/topics.yml +0 -22
- data/test/fixtures/topics/_topic.html.erb +0 -1
- data/test/template/active_record_helper_i18n_test.rb +0 -51
- data/test/template/active_record_helper_test.rb +0 -302
- data/test/template/asset_tag_helper_test.rb +0 -770
- data/test/template/atom_feed_helper_test.rb +0 -315
- data/test/template/benchmark_helper_test.rb +0 -86
- data/test/template/compiled_templates_test.rb +0 -204
- data/test/template/date_helper_i18n_test.rb +0 -121
- data/test/template/date_helper_test.rb +0 -2603
- data/test/template/erb_util_test.rb +0 -36
- data/test/template/form_helper_test.rb +0 -1447
- data/test/template/form_options_helper_i18n_test.rb +0 -27
- data/test/template/form_options_helper_test.rb +0 -811
- data/test/template/form_tag_helper_test.rb +0 -356
- data/test/template/javascript_helper_test.rb +0 -106
- data/test/template/number_helper_i18n_test.rb +0 -69
- data/test/template/number_helper_test.rb +0 -132
- data/test/template/prototype_helper_test.rb +0 -639
- data/test/template/raw_output_helper_test.rb +0 -21
- data/test/template/record_tag_helper_test.rb +0 -58
- data/test/template/render_test.rb +0 -329
- data/test/template/sanitize_helper_test.rb +0 -57
- data/test/template/scriptaculous_helper_test.rb +0 -90
- data/test/template/tag_helper_test.rb +0 -98
- data/test/template/template_test.rb +0 -32
- data/test/template/test_test.rb +0 -54
- data/test/template/text_helper_test.rb +0 -601
- data/test/template/translation_helper_test.rb +0 -95
- data/test/template/url_helper_test.rb +0 -641
- data/test/testing_sandbox.rb +0 -15
- data/test/view/test_case_test.rb +0 -176
data/RUNNING_UNIT_TESTS
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
== Running with Rake
|
2
|
-
|
3
|
-
The easiest way to run the unit tests is through Rake. The default task runs
|
4
|
-
the entire test suite for all classes. For more information, checkout the
|
5
|
-
full array of rake tasks with "rake -T"
|
6
|
-
|
7
|
-
Rake can be found at http://rake.rubyforge.org
|
8
|
-
|
9
|
-
== Running by hand
|
10
|
-
|
11
|
-
If you only want to run a single test suite, or don't want to bother with Rake,
|
12
|
-
you can do so with something like:
|
13
|
-
|
14
|
-
ruby controller/base_tests.rb
|
15
|
-
|
16
|
-
== Dependency on ActiveRecord and database setup
|
17
|
-
|
18
|
-
Test cases in the test/controller/active_record/ directory depend on having
|
19
|
-
activerecord and sqlite installed. If ActiveRecord is not in
|
20
|
-
actionpack/../activerecord directory, or the sqlite rubygem is not installed,
|
21
|
-
these tests are skipped.
|
22
|
-
|
23
|
-
Other tests are runnable from a fresh copy of actionpack without any configuration.
|
24
|
-
|
data/Rakefile
DELETED
@@ -1,158 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
require 'rake/testtask'
|
4
|
-
require 'rdoc/task'
|
5
|
-
require 'rake/packagetask'
|
6
|
-
require 'rubygems/package_task'
|
7
|
-
require File.join(File.dirname(__FILE__), 'lib', 'action_pack', 'version')
|
8
|
-
|
9
|
-
PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
|
10
|
-
PKG_NAME = 'actionpack'
|
11
|
-
PKG_VERSION = ActionPack::VERSION::STRING + PKG_BUILD
|
12
|
-
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
13
|
-
|
14
|
-
RELEASE_NAME = "REL #{PKG_VERSION}"
|
15
|
-
|
16
|
-
RUBY_FORGE_PROJECT = "actionpack"
|
17
|
-
RUBY_FORGE_USER = "webster132"
|
18
|
-
|
19
|
-
desc "Default Task"
|
20
|
-
task :default => [ :test ]
|
21
|
-
|
22
|
-
# Run the unit tests
|
23
|
-
|
24
|
-
desc "Run all unit tests"
|
25
|
-
task :test => [:test_action_pack, :test_active_record_integration]
|
26
|
-
|
27
|
-
Rake::TestTask.new(:test_action_pack) do |t|
|
28
|
-
t.libs << "test"
|
29
|
-
|
30
|
-
# make sure we include the tests in alphabetical order as on some systems
|
31
|
-
# this will not happen automatically and the tests (as a whole) will error
|
32
|
-
t.test_files = Dir.glob( "test/[cftv]*/**/*_test.rb" ).sort
|
33
|
-
|
34
|
-
t.verbose = true
|
35
|
-
#t.warning = true
|
36
|
-
end
|
37
|
-
|
38
|
-
desc 'ActiveRecord Integration Tests'
|
39
|
-
Rake::TestTask.new(:test_active_record_integration) do |t|
|
40
|
-
t.libs << "test"
|
41
|
-
t.test_files = Dir.glob("test/activerecord/*_test.rb")
|
42
|
-
t.verbose = true
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
|
-
# Genereate the RDoc documentation
|
47
|
-
|
48
|
-
RDoc::Task.new { |rdoc|
|
49
|
-
rdoc.rdoc_dir = 'doc'
|
50
|
-
rdoc.title = "Action Pack -- On rails from request to response"
|
51
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
52
|
-
rdoc.options << '--charset' << 'utf-8'
|
53
|
-
rdoc.template = ENV['template'] ? "#{ENV['template']}.rb" : '../doc/template/horo'
|
54
|
-
if ENV['DOC_FILES']
|
55
|
-
rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
|
56
|
-
else
|
57
|
-
rdoc.rdoc_files.include('README', 'RUNNING_UNIT_TESTS', 'CHANGELOG')
|
58
|
-
rdoc.rdoc_files.include(Dir['lib/**/*.rb'] -
|
59
|
-
Dir['lib/*/vendor/**/*.rb'])
|
60
|
-
rdoc.rdoc_files.exclude('lib/actionpack.rb')
|
61
|
-
end
|
62
|
-
}
|
63
|
-
|
64
|
-
# Create compressed packages
|
65
|
-
dist_dirs = [ "lib", "test" ]
|
66
|
-
|
67
|
-
spec = Gem::Specification.new do |s|
|
68
|
-
s.platform = Gem::Platform::RUBY
|
69
|
-
s.name = PKG_NAME
|
70
|
-
s.version = PKG_VERSION
|
71
|
-
s.summary = "Web-flow and rendering framework putting the VC in MVC."
|
72
|
-
s.description = %q{Eases web-request routing, handling, and response as a half-way front, half-way page controller. Implemented with specific emphasis on enabling easy unit/integration testing that doesn't require a browser.} #'
|
73
|
-
|
74
|
-
s.author = "David Heinemeier Hansson"
|
75
|
-
s.email = "david@loudthinking.com"
|
76
|
-
s.rubyforge_project = "actionpack"
|
77
|
-
s.homepage = "http://www.rubyonrails.org"
|
78
|
-
|
79
|
-
s.requirements << 'none'
|
80
|
-
|
81
|
-
s.add_dependency('activesupport', '= 2.3.18' + PKG_BUILD)
|
82
|
-
s.add_dependency('rack', '~> 1.1.0')
|
83
|
-
|
84
|
-
s.require_path = 'lib'
|
85
|
-
|
86
|
-
s.files = [ "Rakefile", "install.rb", "README", "RUNNING_UNIT_TESTS", "CHANGELOG", "MIT-LICENSE" ]
|
87
|
-
dist_dirs.each do |dir|
|
88
|
-
s.files = s.files + Dir.glob( "#{dir}/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
Gem::PackageTask.new(spec) do |p|
|
93
|
-
p.gem_spec = spec
|
94
|
-
p.need_tar = true
|
95
|
-
p.need_zip = true
|
96
|
-
end
|
97
|
-
|
98
|
-
task :lines do
|
99
|
-
lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
|
100
|
-
|
101
|
-
for file_name in FileList["lib/**/*.rb"]
|
102
|
-
next if file_name =~ /vendor/
|
103
|
-
f = File.open(file_name)
|
104
|
-
|
105
|
-
while line = f.gets
|
106
|
-
lines += 1
|
107
|
-
next if line =~ /^\s*$/
|
108
|
-
next if line =~ /^\s*#/
|
109
|
-
codelines += 1
|
110
|
-
end
|
111
|
-
puts "L: #{sprintf("%4d", lines)}, LOC #{sprintf("%4d", codelines)} | #{file_name}"
|
112
|
-
|
113
|
-
total_lines += lines
|
114
|
-
total_codelines += codelines
|
115
|
-
|
116
|
-
lines, codelines = 0, 0
|
117
|
-
end
|
118
|
-
|
119
|
-
puts "Total: Lines #{total_lines}, LOC #{total_codelines}"
|
120
|
-
end
|
121
|
-
|
122
|
-
# Publishing ------------------------------------------------------
|
123
|
-
|
124
|
-
task :update_scriptaculous do
|
125
|
-
for js in %w( controls dragdrop effects )
|
126
|
-
system("svn export --force http://dev.rubyonrails.org/svn/rails/spinoffs/scriptaculous/src/#{js}.js #{File.dirname(__FILE__)}/lib/action_view/helpers/javascripts/#{js}.js")
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
desc "Updates actionpack to the latest version of the javascript spinoffs"
|
131
|
-
task :update_js => [ :update_scriptaculous ]
|
132
|
-
|
133
|
-
# Publishing ------------------------------------------------------
|
134
|
-
|
135
|
-
desc "Publish the API documentation"
|
136
|
-
task :pgem => [:package] do
|
137
|
-
require 'rake/contrib/sshpublisher'
|
138
|
-
Rake::SshFilePublisher.new("gems.rubyonrails.org", "/u/sites/gems/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
|
139
|
-
`ssh gems.rubyonrails.org '/u/sites/gems/gemupdate.sh'`
|
140
|
-
end
|
141
|
-
|
142
|
-
desc "Publish the API documentation"
|
143
|
-
task :pdoc => [:rdoc] do
|
144
|
-
require 'rake/contrib/sshpublisher'
|
145
|
-
Rake::SshDirPublisher.new("wrath.rubyonrails.org", "public_html/ap", "doc").upload
|
146
|
-
end
|
147
|
-
|
148
|
-
desc "Publish the release files to RubyForge."
|
149
|
-
task :release => [ :package ] do
|
150
|
-
require 'rubyforge'
|
151
|
-
require 'rake/contrib/rubyforgepublisher'
|
152
|
-
|
153
|
-
packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" }
|
154
|
-
|
155
|
-
rubyforge = RubyForge.new
|
156
|
-
rubyforge.login
|
157
|
-
rubyforge.add_release(PKG_NAME, PKG_NAME, "REL #{PKG_VERSION}", *packages)
|
158
|
-
end
|
data/install.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'rbconfig'
|
2
|
-
require 'find'
|
3
|
-
require 'ftools'
|
4
|
-
|
5
|
-
include Config
|
6
|
-
|
7
|
-
# this was adapted from rdoc's install.rb by way of Log4r
|
8
|
-
|
9
|
-
$sitedir = CONFIG["sitelibdir"]
|
10
|
-
unless $sitedir
|
11
|
-
version = CONFIG["MAJOR"] + "." + CONFIG["MINOR"]
|
12
|
-
$libdir = File.join(CONFIG["libdir"], "ruby", version)
|
13
|
-
$sitedir = $:.find {|x| x =~ /site_ruby/ }
|
14
|
-
if !$sitedir
|
15
|
-
$sitedir = File.join($libdir, "site_ruby")
|
16
|
-
elsif $sitedir !~ Regexp.quote(version)
|
17
|
-
$sitedir = File.join($sitedir, version)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# the actual gruntwork
|
22
|
-
Dir.chdir("lib")
|
23
|
-
|
24
|
-
Find.find("action_controller", "action_controller.rb", "action_view", "action_view.rb") { |f|
|
25
|
-
if f[-3..-1] == ".rb"
|
26
|
-
File::install(f, File.join($sitedir, *f.split(/\//)), 0644, true)
|
27
|
-
else
|
28
|
-
File::makedirs(File.join($sitedir, *f.split(/\//)))
|
29
|
-
end
|
30
|
-
}
|
@@ -1,55 +0,0 @@
|
|
1
|
-
module ActionController
|
2
|
-
module Assertions
|
3
|
-
module DomAssertions
|
4
|
-
def self.strip_whitespace!(nodes)
|
5
|
-
nodes.reject! do |node|
|
6
|
-
if node.is_a?(HTML::Text)
|
7
|
-
node.content.strip!
|
8
|
-
node.content.empty?
|
9
|
-
else
|
10
|
-
strip_whitespace! node.children
|
11
|
-
false
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
# Test two HTML strings for equivalency (e.g., identical up to reordering of attributes)
|
17
|
-
#
|
18
|
-
# ==== Examples
|
19
|
-
#
|
20
|
-
# # assert that the referenced method generates the appropriate HTML string
|
21
|
-
# assert_dom_equal '<a href="http://www.example.com">Apples</a>', link_to("Apples", "http://www.example.com")
|
22
|
-
#
|
23
|
-
def assert_dom_equal(expected, actual, message = "")
|
24
|
-
clean_backtrace do
|
25
|
-
expected_dom = HTML::Document.new(expected).root
|
26
|
-
actual_dom = HTML::Document.new(actual).root
|
27
|
-
DomAssertions.strip_whitespace!(expected_dom.children)
|
28
|
-
DomAssertions.strip_whitespace!(actual_dom.children)
|
29
|
-
|
30
|
-
full_message = build_message(message, "<?> expected but was\n<?>.", expected_dom.to_s, actual_dom.to_s)
|
31
|
-
assert_block(full_message) { expected_dom == actual_dom }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
# The negated form of +assert_dom_equal+.
|
36
|
-
#
|
37
|
-
# ==== Examples
|
38
|
-
#
|
39
|
-
# # assert that the referenced method does not generate the specified HTML string
|
40
|
-
# assert_dom_not_equal '<a href="http://www.example.com">Apples</a>', link_to("Oranges", "http://www.example.com")
|
41
|
-
#
|
42
|
-
def assert_dom_not_equal(expected, actual, message = "")
|
43
|
-
clean_backtrace do
|
44
|
-
expected_dom = HTML::Document.new(expected).root
|
45
|
-
actual_dom = HTML::Document.new(actual).root
|
46
|
-
DomAssertions.strip_whitespace!(expected_dom.children)
|
47
|
-
DomAssertions.strip_whitespace!(actual_dom.children)
|
48
|
-
|
49
|
-
full_message = build_message(message, "<?> expected to be != to\n<?>.", expected_dom.to_s, actual_dom.to_s)
|
50
|
-
assert_block(full_message) { expected_dom != actual_dom }
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,169 +0,0 @@
|
|
1
|
-
module ActionController
|
2
|
-
module Assertions
|
3
|
-
# A small suite of assertions that test responses from Rails applications.
|
4
|
-
module ResponseAssertions
|
5
|
-
# Asserts that the response is one of the following types:
|
6
|
-
#
|
7
|
-
# * <tt>:success</tt> - Status code was 200
|
8
|
-
# * <tt>:redirect</tt> - Status code was in the 300-399 range
|
9
|
-
# * <tt>:missing</tt> - Status code was 404
|
10
|
-
# * <tt>:error</tt> - Status code was in the 500-599 range
|
11
|
-
#
|
12
|
-
# You can also pass an explicit status number like assert_response(501)
|
13
|
-
# or its symbolic equivalent assert_response(:not_implemented).
|
14
|
-
# See ActionController::StatusCodes for a full list.
|
15
|
-
#
|
16
|
-
# ==== Examples
|
17
|
-
#
|
18
|
-
# # assert that the response was a redirection
|
19
|
-
# assert_response :redirect
|
20
|
-
#
|
21
|
-
# # assert that the response code was status code 401 (unauthorized)
|
22
|
-
# assert_response 401
|
23
|
-
#
|
24
|
-
def assert_response(type, message = nil)
|
25
|
-
clean_backtrace do
|
26
|
-
if [ :success, :missing, :redirect, :error ].include?(type) && @response.send("#{type}?")
|
27
|
-
assert_block("") { true } # to count the assertion
|
28
|
-
elsif type.is_a?(Fixnum) && @response.response_code == type
|
29
|
-
assert_block("") { true } # to count the assertion
|
30
|
-
elsif type.is_a?(Symbol) && @response.response_code == ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE[type]
|
31
|
-
assert_block("") { true } # to count the assertion
|
32
|
-
else
|
33
|
-
if @response.error?
|
34
|
-
exception = @response.template.instance_variable_get(:@exception)
|
35
|
-
exception_message = exception && exception.message
|
36
|
-
assert_block(build_message(message, "Expected response to be a <?>, but was <?>\n<?>", type, @response.response_code, exception_message.to_s)) { false }
|
37
|
-
else
|
38
|
-
assert_block(build_message(message, "Expected response to be a <?>, but was <?>", type, @response.response_code)) { false }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
# Assert that the redirection options passed in match those of the redirect called in the latest action.
|
45
|
-
# This match can be partial, such that assert_redirected_to(:controller => "weblog") will also
|
46
|
-
# match the redirection of redirect_to(:controller => "weblog", :action => "show") and so on.
|
47
|
-
#
|
48
|
-
# ==== Examples
|
49
|
-
#
|
50
|
-
# # assert that the redirection was to the "index" action on the WeblogController
|
51
|
-
# assert_redirected_to :controller => "weblog", :action => "index"
|
52
|
-
#
|
53
|
-
# # assert that the redirection was to the named route login_url
|
54
|
-
# assert_redirected_to login_url
|
55
|
-
#
|
56
|
-
# # assert that the redirection was to the url for @customer
|
57
|
-
# assert_redirected_to @customer
|
58
|
-
#
|
59
|
-
def assert_redirected_to(options = {}, message=nil)
|
60
|
-
clean_backtrace do
|
61
|
-
assert_response(:redirect, message)
|
62
|
-
return true if options == @response.redirected_to
|
63
|
-
|
64
|
-
# Support partial arguments for hash redirections
|
65
|
-
if options.is_a?(Hash) && @response.redirected_to.is_a?(Hash)
|
66
|
-
if options.all? {|(key, value)| @response.redirected_to[key] == value}
|
67
|
-
callstack = caller.dup
|
68
|
-
callstack.slice!(0, 2)
|
69
|
-
::ActiveSupport::Deprecation.warn("Using assert_redirected_to with partial hash arguments is deprecated. Specify the full set arguments instead", callstack)
|
70
|
-
return true
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
redirected_to_after_normalisation = normalize_argument_to_redirection(@response.redirected_to)
|
75
|
-
options_after_normalisation = normalize_argument_to_redirection(options)
|
76
|
-
|
77
|
-
if redirected_to_after_normalisation != options_after_normalisation
|
78
|
-
flunk "Expected response to be a redirect to <#{options_after_normalisation}> but was a redirect to <#{redirected_to_after_normalisation}>"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
# Asserts that the request was rendered with the appropriate template file or partials
|
84
|
-
#
|
85
|
-
# ==== Examples
|
86
|
-
#
|
87
|
-
# # assert that the "new" view template was rendered
|
88
|
-
# assert_template "new"
|
89
|
-
#
|
90
|
-
# # assert that the "new" view template was rendered with Symbol
|
91
|
-
# assert_template :new
|
92
|
-
#
|
93
|
-
# # assert that the "_customer" partial was rendered twice
|
94
|
-
# assert_template :partial => '_customer', :count => 2
|
95
|
-
#
|
96
|
-
# # assert that no partials were rendered
|
97
|
-
# assert_template :partial => false
|
98
|
-
#
|
99
|
-
def assert_template(options = {}, message = nil)
|
100
|
-
clean_backtrace do
|
101
|
-
case options
|
102
|
-
when NilClass, String, Symbol
|
103
|
-
rendered = @response.rendered[:template].to_s
|
104
|
-
msg = build_message(message,
|
105
|
-
"expecting <?> but rendering with <?>",
|
106
|
-
options, rendered)
|
107
|
-
assert_block(msg) do
|
108
|
-
if options.nil?
|
109
|
-
@response.rendered[:template].blank?
|
110
|
-
else
|
111
|
-
rendered.to_s.match(options.to_s)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
when Hash
|
115
|
-
if expected_partial = options[:partial]
|
116
|
-
partials = @response.rendered[:partials]
|
117
|
-
if expected_count = options[:count]
|
118
|
-
found = partials.detect { |p, _| p.to_s.match(expected_partial) }
|
119
|
-
actual_count = found.nil? ? 0 : found.second
|
120
|
-
msg = build_message(message,
|
121
|
-
"expecting ? to be rendered ? time(s) but rendered ? time(s)",
|
122
|
-
expected_partial, expected_count, actual_count)
|
123
|
-
assert(actual_count == expected_count.to_i, msg)
|
124
|
-
else
|
125
|
-
msg = build_message(message,
|
126
|
-
"expecting partial <?> but action rendered <?>",
|
127
|
-
options[:partial], partials.keys)
|
128
|
-
assert(partials.keys.any? { |p| p.to_s.match(expected_partial) }, msg)
|
129
|
-
end
|
130
|
-
else
|
131
|
-
assert @response.rendered[:partials].empty?,
|
132
|
-
"Expected no partials to be rendered"
|
133
|
-
end
|
134
|
-
else
|
135
|
-
raise ArgumentError
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
private
|
141
|
-
# Proxy to to_param if the object will respond to it.
|
142
|
-
def parameterize(value)
|
143
|
-
value.respond_to?(:to_param) ? value.to_param : value
|
144
|
-
end
|
145
|
-
|
146
|
-
def normalize_argument_to_redirection(fragment)
|
147
|
-
case fragment
|
148
|
-
when %r{^\w[\w\d+.-]*:.*}
|
149
|
-
fragment
|
150
|
-
when String
|
151
|
-
if fragment =~ %r{^\w[\w\d+.-]*:.*}
|
152
|
-
fragment
|
153
|
-
else
|
154
|
-
if fragment !~ /^\//
|
155
|
-
ActiveSupport::Deprecation.warn "Omitting the leading slash on a path with assert_redirected_to is deprecated. Use '/#{fragment}' instead.", caller(2)
|
156
|
-
fragment = "/#{fragment}"
|
157
|
-
end
|
158
|
-
@request.protocol + @request.host_with_port + fragment
|
159
|
-
end
|
160
|
-
when :back
|
161
|
-
raise RedirectBackError unless refer = @request.headers["Referer"]
|
162
|
-
refer
|
163
|
-
else
|
164
|
-
@controller.url_for(fragment)
|
165
|
-
end.gsub(/[\r\n]/, '')
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
@@ -1,107 +0,0 @@
|
|
1
|
-
require 'benchmark'
|
2
|
-
|
3
|
-
module ActionController #:nodoc:
|
4
|
-
# The benchmarking module times the performance of actions and reports to the logger. If the Active Record
|
5
|
-
# package has been included, a separate timing section for database calls will be added as well.
|
6
|
-
module Benchmarking #:nodoc:
|
7
|
-
def self.included(base)
|
8
|
-
base.extend(ClassMethods)
|
9
|
-
|
10
|
-
base.class_eval do
|
11
|
-
alias_method_chain :perform_action, :benchmark
|
12
|
-
alias_method_chain :render, :benchmark
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
module ClassMethods
|
17
|
-
# Log and benchmark the workings of a single block and silence whatever logging that may have happened inside it
|
18
|
-
# (unless <tt>use_silence</tt> is set to false).
|
19
|
-
#
|
20
|
-
# The benchmark is only recorded if the current level of the logger matches the <tt>log_level</tt>, which makes it
|
21
|
-
# easy to include benchmarking statements in production software that will remain inexpensive because the benchmark
|
22
|
-
# will only be conducted if the log level is low enough.
|
23
|
-
def benchmark(title, log_level = Logger::DEBUG, use_silence = true)
|
24
|
-
if logger && logger.level == log_level
|
25
|
-
result = nil
|
26
|
-
ms = Benchmark.ms { result = use_silence ? silence { yield } : yield }
|
27
|
-
logger.add(log_level, "#{title} (#{('%.1f' % ms)}ms)")
|
28
|
-
result
|
29
|
-
else
|
30
|
-
yield
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Silences the logger for the duration of the block.
|
35
|
-
def silence
|
36
|
-
old_logger_level, logger.level = logger.level, Logger::ERROR if logger
|
37
|
-
yield
|
38
|
-
ensure
|
39
|
-
logger.level = old_logger_level if logger
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
protected
|
44
|
-
def render_with_benchmark(options = nil, extra_options = {}, &block)
|
45
|
-
if logger
|
46
|
-
if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
|
47
|
-
db_runtime = ActiveRecord::Base.connection.reset_runtime
|
48
|
-
end
|
49
|
-
|
50
|
-
render_output = nil
|
51
|
-
@view_runtime = Benchmark.ms { render_output = render_without_benchmark(options, extra_options, &block) }
|
52
|
-
|
53
|
-
if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
|
54
|
-
@db_rt_before_render = db_runtime
|
55
|
-
@db_rt_after_render = ActiveRecord::Base.connection.reset_runtime
|
56
|
-
@view_runtime -= @db_rt_after_render
|
57
|
-
end
|
58
|
-
|
59
|
-
render_output
|
60
|
-
else
|
61
|
-
render_without_benchmark(options, extra_options, &block)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
def perform_action_with_benchmark
|
67
|
-
if logger
|
68
|
-
ms = [Benchmark.ms { perform_action_without_benchmark }, 0.01].max
|
69
|
-
logging_view = defined?(@view_runtime)
|
70
|
-
logging_active_record = Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
|
71
|
-
|
72
|
-
log_message = 'Completed in %.0fms' % ms
|
73
|
-
|
74
|
-
if logging_view || logging_active_record
|
75
|
-
log_message << " ("
|
76
|
-
log_message << view_runtime if logging_view
|
77
|
-
|
78
|
-
if logging_active_record
|
79
|
-
log_message << ", " if logging_view
|
80
|
-
log_message << active_record_runtime + ")"
|
81
|
-
else
|
82
|
-
")"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
log_message << " | #{response.status}"
|
87
|
-
log_message << " [#{complete_request_uri rescue "unknown"}]"
|
88
|
-
|
89
|
-
logger.info(log_message)
|
90
|
-
response.headers["X-Runtime"] = "%.0f" % ms
|
91
|
-
else
|
92
|
-
perform_action_without_benchmark
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def view_runtime
|
97
|
-
"View: %.0f" % @view_runtime
|
98
|
-
end
|
99
|
-
|
100
|
-
def active_record_runtime
|
101
|
-
db_runtime = ActiveRecord::Base.connection.reset_runtime
|
102
|
-
db_runtime += @db_rt_before_render if @db_rt_before_render
|
103
|
-
db_runtime += @db_rt_after_render if @db_rt_after_render
|
104
|
-
"DB: %.0f" % db_runtime
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|