提交 26eaf073 编写于 作者: N Nicholas Seckar

Remove ::Controllers related cruft; fix AP tests

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3668 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 d11f8d55
......@@ -324,8 +324,6 @@ def controller_path
unless @controller_path
components = self.name.to_s.split('::')
components[-1] = $1 if /^(.*)Controller$/ =~ components.last
# Accomodate the root Controllers module.
components.shift if components.first == 'Controllers'
@controller_path = components.map { |name| name.underscore }.join('/')
end
......
......@@ -109,7 +109,7 @@ def helper_attr(*attrs)
private
def default_helper_module!
module_name = name.sub(/^Controllers::/, '').sub(/Controller$|$/, 'Helper')
module_name = name.sub(/Controller$|$/, 'Helper')
module_path = module_name.split('::').map { |m| m.underscore }.join('/')
require_dependency module_path
helper module_name.constantize
......@@ -128,7 +128,7 @@ def inherited_with_helper(child)
rescue MissingSourceFile => e
raise unless e.is_missing?("helpers/#{child.controller_path}_helper")
end
end
end
end
end
end
......@@ -2,68 +2,57 @@
require 'test/unit'
require 'pp' # require 'pp' early to prevent hidden_methods from not picking up the pretty-print methods until too late
# This file currently contains a few controller UTs
# I couldn't find where the current base tests are, so I created this file.
# If there aren't any base-specific UTs, then this file should grow as they
# are written. If there are, or there is a better place for these, then I will
# move them to the correct location.
#
# Nicholas Seckar aka. Ulysses
# Provide a static version of the Controllers module instead of the auto-loading version.
# We don't want these tests to fail when dependencies are to blame.
module Controllers
module Submodule
class ContainedEmptyController < ActionController::Base
end
class ContainedNonEmptyController < ActionController::Base
def public_action
end
hide_action :hidden_action
def hidden_action
end
def another_hidden_action
end
hide_action :another_hidden_action
end
class SubclassedController < ContainedNonEmptyController
hide_action :public_action # Hiding it here should not affect the superclass.
end
end
class EmptyController < ActionController::Base
include ActionController::Caching
# Provide some controller to run the tests on.
module Submodule
class ContainedEmptyController < ActionController::Base
end
class NonEmptyController < ActionController::Base
class ContainedNonEmptyController < ActionController::Base
def public_action
end
hide_action :hidden_action
def hidden_action
end
def another_hidden_action
end
hide_action :another_hidden_action
end
class SubclassedController < ContainedNonEmptyController
hide_action :public_action # Hiding it here should not affect the superclass.
end
end
class EmptyController < ActionController::Base
include ActionController::Caching
end
class NonEmptyController < ActionController::Base
def public_action
end
hide_action :hidden_action
def hidden_action
end
end
class ControllerClassTests < Test::Unit::TestCase
def test_controller_path
assert_equal 'empty', Controllers::EmptyController.controller_path
assert_equal 'submodule/contained_empty', Controllers::Submodule::ContainedEmptyController.controller_path
assert_equal 'empty', EmptyController.controller_path
assert_equal 'submodule/contained_empty', Submodule::ContainedEmptyController.controller_path
end
def test_controller_name
assert_equal 'empty', Controllers::EmptyController.controller_name
assert_equal 'contained_empty', Controllers::Submodule::ContainedEmptyController.controller_name
assert_equal 'empty', EmptyController.controller_name
assert_equal 'contained_empty', Submodule::ContainedEmptyController.controller_name
end
end
class ControllerInstanceTests < Test::Unit::TestCase
def setup
@empty = Controllers::EmptyController.new
@contained = Controllers::Submodule::ContainedEmptyController.new
@empty_controllers = [@empty, @contained, Controllers::Submodule::SubclassedController.new]
@empty = EmptyController.new
@contained = Submodule::ContainedEmptyController.new
@empty_controllers = [@empty, @contained, Submodule::SubclassedController.new]
@non_empty_controllers = [Controllers::NonEmptyController.new,
Controllers::Submodule::ContainedNonEmptyController.new]
@non_empty_controllers = [NonEmptyController.new,
Submodule::ContainedNonEmptyController.new]
end
def test_action_methods
......
require File.dirname(__FILE__) + '/../abstract_unit'
require 'test/unit'
# Provide a static version of the Controllers module instead of the auto-loading version.
# We don't want these tests to fail when dependencies are to blame.
module Controllers
class BenchmarkedController < ActionController::Base
def public_action
render :nothing => true
end
# Provide some static controllers.
class BenchmarkedController < ActionController::Base
def public_action
render :nothing => true
end
def rescue_action(e)
raise e
end
def rescue_action(e)
raise e
end
end
......@@ -22,7 +19,7 @@ def method_missing(*args)
end
def setup
@controller = Controllers::BenchmarkedController.new
@controller = BenchmarkedController.new
# benchmark doesn't do anything unless a logger is set
@controller.logger = MockLogger.new
@request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new
......
......@@ -8,17 +8,17 @@ def subclasses
end
def remove_class(*klasses)
klasses.each do |klass|
klasses.flatten.each do |klass|
# Skip this class if there is nothing bound to this name
next unless defined?(klass.name)
basename = klass.to_s.split("::").last
parent = klass.parent
# Skip this class if it does not match the current one bound to this name
next unless parent.const_defined?(basename) && klass = parent.const_get(basename)
parent.send :remove_const, basename unless parent == klass
end
end
end
\ No newline at end of file
end
......@@ -98,10 +98,6 @@ def as_load_path
# Use const_missing to autoload associations so we don't have to
# require_association when using single-table inheritance.
def const_missing(class_id)
if Object.const_defined?(:Controllers) && Object::Controllers.const_available?(class_id)
return Object::Controllers.const_get(class_id)
end
file_name = class_id.to_s.demodulize.underscore
file_path = as_load_path.empty? ? file_name : "#{as_load_path}/#{file_name}"
begin
......
module Controllers #:nodoc:
class RailsInfoController < ApplicationController
def properties
if local_request?
render :inline => Rails::Info.to_html
else
render :text => '<p>For security purposes, this information is only available to local requests.</p>', :status => 500
end
class RailsInfoController < ApplicationController
def properties
if local_request?
render :inline => Rails::Info.to_html
else
render :text => '<p>For security purposes, this information is only available to local requests.</p>', :status => 500
end
end
end
\ No newline at end of file
end
......@@ -30,7 +30,9 @@
source = File.expand_path(File.join(File.dirname(__FILE__),
"..", "..", "..", "configs", "lighttpd.conf"))
puts "=> #{config_file} not found, copying from #{source}"
FileUtils.cp source, config_file
config = File.read source
config = config.gsub "CWD", File.expand_path(RAILS_ROOT).inspect
File.open(config_file, 'w') { |f| f.write config }
end
config = IO.read(config_file)
......
......@@ -24,12 +24,10 @@ class DispatcherTest < Test::Unit::TestCase
def setup
@output = StringIO.new
ENV['REQUEST_METHOD'] = "GET"
setup_minimal_environment
end
def teardown
ENV['REQUEST_METHOD'] = nil
teardown_minimal_environment
end
def test_ac_subclasses_cleared_on_reset
......@@ -91,13 +89,4 @@ def test_bad_multipart_request
def dispatch
Dispatcher.dispatch(nil, ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, @output)
end
def setup_minimal_environment
value = Dependencies::LoadingModule.root
Object.const_set("Controllers", value)
end
def teardown_minimal_environment
Object.send(:remove_const, "Controllers")
end
end
......@@ -8,8 +8,6 @@
require 'action_controller/test_process'
require 'rails_info'
module Controllers; def self.const_available?(constant); false end end
class ApplicationController < ActionController::Base
@local_request = false
class << self
......@@ -29,24 +27,24 @@ def local_request?
require 'rails_info_controller'
# Re-raise errors caught by the controller.
class Controllers::RailsInfoController; def rescue_action(e) raise e end; end
class RailsInfoController; def rescue_action(e) raise e end; end
class RailsInfoControllerTest < Test::Unit::TestCase
def setup
@controller = Controllers::RailsInfoController.new
@controller = RailsInfoController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
def test_rails_info_properties_table_rendered_for_local_request
Controllers::RailsInfoController.local_request = true
RailsInfoController.local_request = true
get :properties
assert_tag :tag => 'table'
assert_response :success
end
def test_rails_info_properties_error_rendered_for_non_local_request
Controllers::RailsInfoController.local_request = false
RailsInfoController.local_request = false
get :properties
assert_tag :tag => 'p'
assert_response 500
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册