提交 839362fa 编写于 作者: J José Valim

Make all AP tests pass for Ruby 1.9.1.

上级 f10631e1
......@@ -13,18 +13,21 @@ class LookupContext #:nodoc:
mattr_accessor :registered_details
self.registered_details = []
def self.register_detail(name, options = {})
def self.register_detail(name, options = {}, &block)
self.registered_details << name
Setters.send :define_method, :"#{name}=" do |value|
value = Array(value.presence || yield)
value |= [nil] unless options[:allow_nil] == false
Setters.send :define_method, :"_#{name}_defaults", &block
Setters.module_eval <<-METHOD, __FILE__, __LINE__ + 1
def #{name}=(value)
value = Array(value.presence || _#{name}_defaults)
#{"value << nil unless value.include?(nil)" unless options[:allow_nil] == false}
unless value == @details[name]
@details_key, @details = nil, @details.merge(name => value)
@details.freeze
unless value == @details[:#{name}]
@details_key, @details = nil, @details.merge(:#{name} => value)
@details.freeze
end
end
end
METHOD
end
# Holds raw setters for the registered details.
......
require 'abstract_unit'
class TestRoutingMount < ActionDispatch::IntegrationTest
SprocketsApp = lambda { |env|
[200, {"Content-Type" => "text/html"}, ["#{env["SCRIPT_NAME"]} -- #{env["PATH_INFO"]}"]]
}
Router = ActionDispatch::Routing::RouteSet.new
Router.draw do
SprocketsApp = lambda { |env|
[200, {"Content-Type" => "text/html"}, ["#{env["SCRIPT_NAME"]} -- #{env["PATH_INFO"]}"]]
}
mount SprocketsApp, :at => "/sprockets"
mount SprocketsApp => "/shorthand"
......
......@@ -12,7 +12,7 @@ def initialize(hash = {})
def query(partial, path, exts)
query = Regexp.escape(path)
exts.each do |ext|
query << '(?:' << ext.map {|e| e && Regexp.escape(".#{e}") }.join('|') << ')'
query << '(' << ext.map {|e| e && Regexp.escape(".#{e}") }.join('|') << ')'
end
templates = []
......@@ -21,7 +21,8 @@ def query(partial, path, exts)
templates << Template.new(source, path, handler,
:partial => partial, :virtual_path => path, :format => format)
end
templates.sort_by {|t| -t.formats.size }
templates.sort_by {|t| -t.identifier.match(/^#{query}$/).captures.reject(&:blank?).size }
end
end
......
......@@ -33,9 +33,7 @@ def teardown
end
test "does not allow details to be modified in place" do
assert_raise TypeError do
@lookup_context.details.clear
end
assert @lookup_context.details.frozen?
end
test "allows me to update an specific detail" do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册