1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

add tests and external file backtrace for Routing::Mapper#draw

This commit is contained in:
Kornelius Kalnbach 2012-05-15 04:28:10 +02:00
parent 2c0add7103
commit 0d3172c4e4
4 changed files with 55 additions and 3 deletions

View file

@ -1336,10 +1336,11 @@ module ActionDispatch
msg = "Your router tried to #draw the external file #{name}.rb,\n" \
"but the file was not found in:\n\n"
msg += @draw_paths.map { |_path| " * #{_path}" }.join("\n")
raise msg
raise ArgumentError, msg
end
instance_eval(path.join("#{name}.rb").read)
route_path = path.join("#{name}.rb")
instance_eval(route_path.read, route_path.to_s)
end
# match 'path' => 'controller#action'

View file

@ -2324,6 +2324,55 @@ class TestNamespaceWithControllerOption < ActionDispatch::IntegrationTest
end
end
class TestDrawExternalFile < ActionDispatch::IntegrationTest
class ExternalController < ActionController::Base
def index
render :text => "external#index"
end
end
DRAW_PATH = Pathname.new(File.expand_path('../../fixtures/routes', __FILE__))
DefaultScopeRoutes = ActionDispatch::Routing::RouteSet.new.tap do |app|
app.draw_paths << DRAW_PATH
end
def app
DefaultScopeRoutes
end
def test_draw_external_file
DefaultScopeRoutes.draw do
scope :module => 'test_draw_external_file' do
draw :external
end
end
get '/external'
assert_equal "external#index", @response.body
end
def test_draw_nonexistent_file
exception = assert_raise ArgumentError do
DefaultScopeRoutes.draw do
draw :nonexistent
end
end
assert_match 'Your router tried to #draw the external file nonexistent.rb', exception.message
assert_match DRAW_PATH.to_s, exception.message
end
def test_draw_bogus_file
exception = assert_raise NoMethodError do
DefaultScopeRoutes.draw do
draw :bogus
end
end
assert_match "undefined method `wrong'", exception.message
assert_match 'test/fixtures/routes/bogus.rb:1', exception.backtrace.first
end
end
class TestDefaultScope < ActionDispatch::IntegrationTest
module ::Blog
class PostsController < ActionController::Base

View file

@ -0,0 +1 @@
wrong :route

View file

@ -0,0 +1 @@
get '/external' => 'external#index'