diff options
author | José Valim <jose.valim@gmail.com> | 2012-05-20 05:15:36 -0700 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-05-20 05:15:36 -0700 |
commit | ed024f65bee8f66e168e2cf924142ec63eb94d61 (patch) | |
tree | e163b5ce4853a06fb51a7bbf65fe858e6a06101f /actionpack/lib | |
parent | 3655d66edacde2db4d04e939260a3585452c16ad (diff) | |
parent | dcce01132de9734c9f7a6973bfff1b16b07ef84a (diff) | |
download | rails-ed024f65bee8f66e168e2cf924142ec63eb94d61.tar.gz rails-ed024f65bee8f66e168e2cf924142ec63eb94d61.tar.bz2 rails-ed024f65bee8f66e168e2cf924142ec63eb94d61.zip |
Merge pull request #6399 from dchelimsky/issue-5899
Raise Assertion instead of RoutingError for routing assertion failures.
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_dispatch/testing/assertions/routing.rb | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/actionpack/lib/action_dispatch/testing/assertions/routing.rb b/actionpack/lib/action_dispatch/testing/assertions/routing.rb index 567ca0c392..41fa3a4b95 100644 --- a/actionpack/lib/action_dispatch/testing/assertions/routing.rb +++ b/actionpack/lib/action_dispatch/testing/assertions/routing.rb @@ -69,11 +69,9 @@ module ActionDispatch # assert_generates "changesets/12", { :controller => 'scm', :action => 'show_diff', :revision => "12" } def assert_generates(expected_path, options, defaults={}, extras = {}, message=nil) if expected_path =~ %r{://} - begin + fail_on(URI::InvalidURIError) do uri = URI.parse(expected_path) expected_path = uri.path.to_s.empty? ? "/" : uri.path - rescue URI::InvalidURIError => e - raise ActionController::RoutingError, e.message end else expected_path = "/#{expected_path}" unless expected_path.first == '/' @@ -189,14 +187,12 @@ module ActionDispatch request = ActionController::TestRequest.new if path =~ %r{://} - begin + fail_on(URI::InvalidURIError) do uri = URI.parse(path) request.env["rack.url_scheme"] = uri.scheme || "http" request.host = uri.host if uri.host request.port = uri.port if uri.port request.path = uri.path.to_s.empty? ? "/" : uri.path - rescue URI::InvalidURIError => e - raise ActionController::RoutingError, e.message end else path = "/#{path}" unless path.first == "/" @@ -205,11 +201,21 @@ module ActionDispatch request.request_method = method if method - params = @routes.recognize_path(path, { :method => method, :extras => extras }) + params = fail_on(ActionController::RoutingError) do + @routes.recognize_path(path, { :method => method, :extras => extras }) + end request.path_parameters = params.with_indifferent_access request end + + def fail_on(exception_class) + begin + yield + rescue exception_class => e + raise MiniTest::Assertion, e.message + end + end end end end |