未验证 提交 b6e775ae 编写于 作者: R Rafael França 提交者: Rafael Mendonça França

Merge pull request #35975 from xithan/master

mounted routes with non-word characters
上级 2a3f619a
......@@ -119,7 +119,8 @@ def visit_OR(node)
class UnanchoredRegexp < AnchoredRegexp # :nodoc:
def accept(node)
%r{\A#{visit node}(?:\b|\Z)}
path = visit node
path == "/" ? %r{\A/} : %r{\A#{path}(?:\b|\Z|/)}
end
end
......
......@@ -27,6 +27,7 @@ def self.call(env)
}
mount SprocketsApp, at: "/sprockets"
mount SprocketsApp, at: "/star*"
mount SprocketsApp => "/shorthand"
mount SinatraLikeApp, at: "/fakeengine", as: :fake
......@@ -58,6 +59,14 @@ def test_app_name_is_properly_generated_when_engine_is_mounted_in_resources
def test_mounting_at_root_path
get "/omg"
assert_equal " -- /omg", response.body
get "/~omg"
assert_equal " -- /~omg", response.body
end
def test_mounting_at_path_with_non_word_character
get "/star*/omg"
assert_equal "/star* -- /omg", response.body
end
def test_mounting_sets_script_name
......
......@@ -34,17 +34,17 @@ class TestPattern < ActiveSupport::TestCase
end
{
"/:controller(/:action)" => %r{\A/(#{x})(?:/([^/.?]+))?(?:\b|\Z)},
"/:controller/foo" => %r{\A/(#{x})/foo(?:\b|\Z)},
"/:controller/:action" => %r{\A/(#{x})/([^/.?]+)(?:\b|\Z)},
"/:controller" => %r{\A/(#{x})(?:\b|\Z)},
"/:controller(/:action(/:id))" => %r{\A/(#{x})(?:/([^/.?]+)(?:/([^/.?]+))?)?(?:\b|\Z)},
"/:controller/:action.xml" => %r{\A/(#{x})/([^/.?]+)\.xml(?:\b|\Z)},
"/:controller.:format" => %r{\A/(#{x})\.([^/.?]+)(?:\b|\Z)},
"/:controller(.:format)" => %r{\A/(#{x})(?:\.([^/.?]+))?(?:\b|\Z)},
"/:controller/*foo" => %r{\A/(#{x})/(.+)(?:\b|\Z)},
"/:controller/*foo/bar" => %r{\A/(#{x})/(.+)/bar(?:\b|\Z)},
"/:foo|*bar" => %r{\A/(?:([^/.?]+)|(.+))(?:\b|\Z)},
"/:controller(/:action)" => %r{\A/(#{x})(?:/([^/.?]+))?(?:\b|\Z|/)},
"/:controller/foo" => %r{\A/(#{x})/foo(?:\b|\Z|/)},
"/:controller/:action" => %r{\A/(#{x})/([^/.?]+)(?:\b|\Z|/)},
"/:controller" => %r{\A/(#{x})(?:\b|\Z|/)},
"/:controller(/:action(/:id))" => %r{\A/(#{x})(?:/([^/.?]+)(?:/([^/.?]+))?)?(?:\b|\Z|/)},
"/:controller/:action.xml" => %r{\A/(#{x})/([^/.?]+)\.xml(?:\b|\Z|/)},
"/:controller.:format" => %r{\A/(#{x})\.([^/.?]+)(?:\b|\Z|/)},
"/:controller(.:format)" => %r{\A/(#{x})(?:\.([^/.?]+))?(?:\b|\Z|/)},
"/:controller/*foo" => %r{\A/(#{x})/(.+)(?:\b|\Z|/)},
"/:controller/*foo/bar" => %r{\A/(#{x})/(.+)/bar(?:\b|\Z|/)},
"/:foo|*bar" => %r{\A/(?:([^/.?]+)|(.+))(?:\b|\Z|/)},
}.each do |path, expected|
define_method(:"test_to_non_anchored_regexp_#{Regexp.escape(path)}") do
path = Pattern.build(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册