[DRE-commits] r4378 - in trunk/redmine/debian: . patches

Jérémy Lal kapouer-guest at alioth.debian.org
Mon Nov 23 00:21:25 UTC 2009


Author: kapouer-guest
Date: 2009-11-23 00:21:25 +0000 (Mon, 23 Nov 2009)
New Revision: 4378

Added:
   trunk/redmine/debian/patches/revert_rails_2.3.patch
Removed:
   trunk/redmine/debian/patches/rails22.patch
Modified:
   trunk/redmine/debian/changelog
   trunk/redmine/debian/patches/series
   trunk/redmine/debian/patches/version.patch
Log:
Upstream update, new and simpler patch to revert rails 2.3 changes.

Modified: trunk/redmine/debian/changelog
===================================================================
--- trunk/redmine/debian/changelog	2009-11-23 00:21:21 UTC (rev 4377)
+++ trunk/redmine/debian/changelog	2009-11-23 00:21:25 UTC (rev 4378)
@@ -1,4 +1,4 @@
-redmine (0.9.0~svn2993-1) UNRELEASED; urgency=low
+redmine (0.9.0~svn3084-1) UNRELEASED; urgency=low
 
   * Upstream update.
   * Stop using deprecated dbfile param in database.yml.

Deleted: trunk/redmine/debian/patches/rails22.patch
===================================================================
--- trunk/redmine/debian/patches/rails22.patch	2009-11-23 00:21:21 UTC (rev 4377)
+++ trunk/redmine/debian/patches/rails22.patch	2009-11-23 00:21:25 UTC (rev 4378)
@@ -1,5142 +0,0 @@
-diff --git a/app/controllers/application.rb b/app/controllers/application.rb
-new file mode 100644
-index 0000000..ec23775
---- /dev/null
-+++ b/app/controllers/application.rb
-@@ -0,0 +1,257 @@
-+# redMine - project management software
-+# Copyright (C) 2006-2007  Jean-Philippe Lang
-+#
-+# This program is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU General Public License
-+# as published by the Free Software Foundation; either version 2
-+# of the License, or (at your option) any later version.
-+# 
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+# 
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-+
-+require 'uri'
-+require 'cgi'
-+
-+class ApplicationController < ActionController::Base
-+  include Redmine::I18n
-+
-+  # In case the cookie store secret changes
-+  rescue_from CGI::Session::CookieStore::TamperedWithCookie do |exception|
-+    render :text => 'Your session was invalid and has been reset. Please, reload this page.', :status => 500
-+  end
-+
-+  layout 'base'
-+  
-+  before_filter :user_setup, :check_if_login_required, :set_localization
-+  filter_parameter_logging :password
-+  
-+  include Redmine::Search::Controller
-+  include Redmine::MenuManager::MenuController
-+  helper Redmine::MenuManager::MenuHelper
-+  
-+  REDMINE_SUPPORTED_SCM.each do |scm|
-+    require_dependency "repository/#{scm.underscore}"
-+  end
-+  
-+  def user_setup
-+    # Check the settings cache for each request
-+    Setting.check_cache
-+    # Find the current user
-+    User.current = find_current_user
-+  end
-+  
-+  # Returns the current user or nil if no user is logged in
-+  # and starts a session if needed
-+  def find_current_user
-+    if session[:user_id]
-+      # existing session
-+      (User.active.find(session[:user_id]) rescue nil)
-+    elsif cookies[:autologin] && Setting.autologin?
-+      # auto-login feature starts a new session
-+      user = User.try_to_autologin(cookies[:autologin])
-+      session[:user_id] = user.id if user
-+      user
-+    elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action])
-+      # RSS key authentication does not start a session
-+      User.find_by_rss_key(params[:key])
-+    end
-+  end
-+  
-+  # Sets the logged in user
-+  def logged_user=(user)
-+    if user && user.is_a?(User)
-+      User.current = user
-+      session[:user_id] = user.id
-+    else
-+      User.current = User.anonymous
-+      session[:user_id] = nil
-+    end
-+  end
-+  
-+  # check if login is globally required to access the application
-+  def check_if_login_required
-+    # no check needed if user is already logged in
-+    return true if User.current.logged?
-+    require_login if Setting.login_required?
-+  end 
-+  
-+  def set_localization
-+    lang = nil
-+    if User.current.logged?
-+      lang = find_language(User.current.language)
-+    end
-+    if lang.nil? && request.env['HTTP_ACCEPT_LANGUAGE']
-+      accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.downcase
-+      if !accept_lang.blank?
-+        lang = find_language(accept_lang) || find_language(accept_lang.split('-').first)
-+      end
-+    end
-+    lang ||= Setting.default_language
-+    set_language_if_valid(lang)
-+  end
-+  
-+  def require_login
-+    if !User.current.logged?
-+      redirect_to :controller => "account", :action => "login", :back_url => url_for(params)
-+      return false
-+    end
-+    true
-+  end
-+
-+  def require_admin
-+    return unless require_login
-+    if !User.current.admin?
-+      render_403
-+      return false
-+    end
-+    true
-+  end
-+  
-+  def deny_access
-+    User.current.logged? ? render_403 : require_login
-+  end
-+
-+  # Authorize the user for the requested action
-+  def authorize(ctrl = params[:controller], action = params[:action], global = false)
-+    allowed = User.current.allowed_to?({:controller => ctrl, :action => action}, @project, :global => global)
-+    allowed ? true : deny_access
-+  end
-+
-+  # Authorize the user for the requested action outside a project
-+  def authorize_global(ctrl = params[:controller], action = params[:action], global = true)
-+    authorize(ctrl, action, global)
-+  end
-+  
-+  # make sure that the user is a member of the project (or admin) if project is private
-+  # used as a before_filter for actions that do not require any particular permission on the project
-+  def check_project_privacy
-+    if @project && @project.active?
-+      if @project.is_public? || User.current.member_of?(@project) || User.current.admin?
-+        true
-+      else
-+        User.current.logged? ? render_403 : require_login
-+      end
-+    else
-+      @project = nil
-+      render_404
-+      false
-+    end
-+  end
-+
-+  def redirect_back_or_default(default)
-+    back_url = CGI.unescape(params[:back_url].to_s)
-+    if !back_url.blank?
-+      begin
-+        uri = URI.parse(back_url)
-+        # do not redirect user to another host or to the login or register page
-+        if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)})
-+          redirect_to(back_url) and return
-+        end
-+      rescue URI::InvalidURIError
-+        # redirect to default
-+      end
-+    end
-+    redirect_to default
-+  end
-+  
-+  def render_403
-+    @project = nil
-+    render :template => "common/403", :layout => !request.xhr?, :status => 403
-+    return false
-+  end
-+    
-+  def render_404
-+    render :template => "common/404", :layout => !request.xhr?, :status => 404
-+    return false
-+  end
-+  
-+  def render_error(msg)
-+    flash.now[:error] = msg
-+    render :text => '', :layout => !request.xhr?, :status => 500
-+  end
-+  
-+  def render_feed(items, options={})    
-+    @items = items || []
-+    @items.sort! {|x,y| y.event_datetime <=> x.event_datetime }
-+    @items = @items.slice(0, Setting.feeds_limit.to_i)
-+    @title = options[:title] || Setting.app_title
-+    render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml'
-+  end
-+  
-+  def self.accept_key_auth(*actions)
-+    actions = actions.flatten.map(&:to_s)
-+    write_inheritable_attribute('accept_key_auth_actions', actions)
-+  end
-+  
-+  def accept_key_auth_actions
-+    self.class.read_inheritable_attribute('accept_key_auth_actions') || []
-+  end
-+  
-+  # TODO: move to model
-+  def attach_files(obj, attachments)
-+    attached = []
-+    unsaved = []
-+    if attachments && attachments.is_a?(Hash)
-+      attachments.each_value do |attachment|
-+        file = attachment['file']
-+        next unless file && file.size > 0
-+        a = Attachment.create(:container => obj, 
-+                              :file => file,
-+                              :description => attachment['description'].to_s.strip,
-+                              :author => User.current)
-+        a.new_record? ? (unsaved << a) : (attached << a)
-+      end
-+      if unsaved.any?
-+        flash[:warning] = l(:warning_attachments_not_saved, unsaved.size)
-+      end
-+    end
-+    attached
-+  end
-+
-+  # Returns the number of objects that should be displayed
-+  # on the paginated list
-+  def per_page_option
-+    per_page = nil
-+    if params[:per_page] && Setting.per_page_options_array.include?(params[:per_page].to_s.to_i)
-+      per_page = params[:per_page].to_s.to_i
-+      session[:per_page] = per_page
-+    elsif session[:per_page]
-+      per_page = session[:per_page]
-+    else
-+      per_page = Setting.per_page_options_array.first || 25
-+    end
-+    per_page
-+  end
-+
-+  # qvalues http header parser
-+  # code taken from webrick
-+  def parse_qvalues(value)
-+    tmp = []
-+    if value
-+      parts = value.split(/,\s*/)
-+      parts.each {|part|
-+        if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
-+          val = m[1]
-+          q = (m[2] or 1).to_f
-+          tmp.push([val, q])
-+        end
-+      }
-+      tmp = tmp.sort_by{|val, q| -q}
-+      tmp.collect!{|val, q| val}
-+    end
-+    return tmp
-+  rescue
-+    nil
-+  end
-+  
-+  # Returns a string that can be used as filename value in Content-Disposition header
-+  def filename_for_content_disposition(name)
-+    request.env['HTTP_USER_AGENT'] =~ %r{MSIE} ? ERB::Util.url_encode(name) : name
-+  end
-+end
-diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
-deleted file mode 100644
-index 68377b6..0000000
---- a/app/controllers/application_controller.rb
-+++ /dev/null
-@@ -1,252 +0,0 @@
--# redMine - project management software
--# Copyright (C) 2006-2007  Jean-Philippe Lang
--#
--# This program is free software; you can redistribute it and/or
--# modify it under the terms of the GNU General Public License
--# as published by the Free Software Foundation; either version 2
--# of the License, or (at your option) any later version.
--# 
--# This program is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--# GNU General Public License for more details.
--# 
--# You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
--
--require 'uri'
--require 'cgi'
--
--class ApplicationController < ActionController::Base
--  include Redmine::I18n
--
--  layout 'base'
--  
--  before_filter :user_setup, :check_if_login_required, :set_localization
--  filter_parameter_logging :password
--  
--  include Redmine::Search::Controller
--  include Redmine::MenuManager::MenuController
--  helper Redmine::MenuManager::MenuHelper
--  
--  REDMINE_SUPPORTED_SCM.each do |scm|
--    require_dependency "repository/#{scm.underscore}"
--  end
--  
--  def user_setup
--    # Check the settings cache for each request
--    Setting.check_cache
--    # Find the current user
--    User.current = find_current_user
--  end
--  
--  # Returns the current user or nil if no user is logged in
--  # and starts a session if needed
--  def find_current_user
--    if session[:user_id]
--      # existing session
--      (User.active.find(session[:user_id]) rescue nil)
--    elsif cookies[:autologin] && Setting.autologin?
--      # auto-login feature starts a new session
--      user = User.try_to_autologin(cookies[:autologin])
--      session[:user_id] = user.id if user
--      user
--    elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action])
--      # RSS key authentication does not start a session
--      User.find_by_rss_key(params[:key])
--    end
--  end
--  
--  # Sets the logged in user
--  def logged_user=(user)
--    if user && user.is_a?(User)
--      User.current = user
--      session[:user_id] = user.id
--    else
--      User.current = User.anonymous
--      session[:user_id] = nil
--    end
--  end
--  
--  # check if login is globally required to access the application
--  def check_if_login_required
--    # no check needed if user is already logged in
--    return true if User.current.logged?
--    require_login if Setting.login_required?
--  end 
--  
--  def set_localization
--    lang = nil
--    if User.current.logged?
--      lang = find_language(User.current.language)
--    end
--    if lang.nil? && request.env['HTTP_ACCEPT_LANGUAGE']
--      accept_lang = parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.downcase
--      if !accept_lang.blank?
--        lang = find_language(accept_lang) || find_language(accept_lang.split('-').first)
--      end
--    end
--    lang ||= Setting.default_language
--    set_language_if_valid(lang)
--  end
--  
--  def require_login
--    if !User.current.logged?
--      redirect_to :controller => "account", :action => "login", :back_url => url_for(params)
--      return false
--    end
--    true
--  end
--
--  def require_admin
--    return unless require_login
--    if !User.current.admin?
--      render_403
--      return false
--    end
--    true
--  end
--  
--  def deny_access
--    User.current.logged? ? render_403 : require_login
--  end
--
--  # Authorize the user for the requested action
--  def authorize(ctrl = params[:controller], action = params[:action], global = false)
--    allowed = User.current.allowed_to?({:controller => ctrl, :action => action}, @project, :global => global)
--    allowed ? true : deny_access
--  end
--
--  # Authorize the user for the requested action outside a project
--  def authorize_global(ctrl = params[:controller], action = params[:action], global = true)
--    authorize(ctrl, action, global)
--  end
--  
--  # make sure that the user is a member of the project (or admin) if project is private
--  # used as a before_filter for actions that do not require any particular permission on the project
--  def check_project_privacy
--    if @project && @project.active?
--      if @project.is_public? || User.current.member_of?(@project) || User.current.admin?
--        true
--      else
--        User.current.logged? ? render_403 : require_login
--      end
--    else
--      @project = nil
--      render_404
--      false
--    end
--  end
--
--  def redirect_back_or_default(default)
--    back_url = CGI.unescape(params[:back_url].to_s)
--    if !back_url.blank?
--      begin
--        uri = URI.parse(back_url)
--        # do not redirect user to another host or to the login or register page
--        if (uri.relative? || (uri.host == request.host)) && !uri.path.match(%r{/(login|account/register)})
--          redirect_to(back_url) and return
--        end
--      rescue URI::InvalidURIError
--        # redirect to default
--      end
--    end
--    redirect_to default
--  end
--  
--  def render_403
--    @project = nil
--    render :template => "common/403", :layout => !request.xhr?, :status => 403
--    return false
--  end
--    
--  def render_404
--    render :template => "common/404", :layout => !request.xhr?, :status => 404
--    return false
--  end
--  
--  def render_error(msg)
--    flash.now[:error] = msg
--    render :text => '', :layout => !request.xhr?, :status => 500
--  end
--  
--  def render_feed(items, options={})    
--    @items = items || []
--    @items.sort! {|x,y| y.event_datetime <=> x.event_datetime }
--    @items = @items.slice(0, Setting.feeds_limit.to_i)
--    @title = options[:title] || Setting.app_title
--    render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml'
--  end
--  
--  def self.accept_key_auth(*actions)
--    actions = actions.flatten.map(&:to_s)
--    write_inheritable_attribute('accept_key_auth_actions', actions)
--  end
--  
--  def accept_key_auth_actions
--    self.class.read_inheritable_attribute('accept_key_auth_actions') || []
--  end
--  
--  # TODO: move to model
--  def attach_files(obj, attachments)
--    attached = []
--    unsaved = []
--    if attachments && attachments.is_a?(Hash)
--      attachments.each_value do |attachment|
--        file = attachment['file']
--        next unless file && file.size > 0
--        a = Attachment.create(:container => obj, 
--                              :file => file,
--                              :description => attachment['description'].to_s.strip,
--                              :author => User.current)
--        a.new_record? ? (unsaved << a) : (attached << a)
--      end
--      if unsaved.any?
--        flash[:warning] = l(:warning_attachments_not_saved, unsaved.size)
--      end
--    end
--    attached
--  end
--
--  # Returns the number of objects that should be displayed
--  # on the paginated list
--  def per_page_option
--    per_page = nil
--    if params[:per_page] && Setting.per_page_options_array.include?(params[:per_page].to_s.to_i)
--      per_page = params[:per_page].to_s.to_i
--      session[:per_page] = per_page
--    elsif session[:per_page]
--      per_page = session[:per_page]
--    else
--      per_page = Setting.per_page_options_array.first || 25
--    end
--    per_page
--  end
--
--  # qvalues http header parser
--  # code taken from webrick
--  def parse_qvalues(value)
--    tmp = []
--    if value
--      parts = value.split(/,\s*/)
--      parts.each {|part|
--        if m = %r{^([^\s,]+?)(?:;\s*q=(\d+(?:\.\d+)?))?$}.match(part)
--          val = m[1]
--          q = (m[2] or 1).to_f
--          tmp.push([val, q])
--        end
--      }
--      tmp = tmp.sort_by{|val, q| -q}
--      tmp.collect!{|val, q| val}
--    end
--    return tmp
--  rescue
--    nil
--  end
--  
--  # Returns a string that can be used as filename value in Content-Disposition header
--  def filename_for_content_disposition(name)
--    request.env['HTTP_USER_AGENT'] =~ %r{MSIE} ? ERB::Util.url_encode(name) : name
--  end
--end
-diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
-index 8e39d42..a160f21 100644
---- a/app/controllers/repositories_controller.rb
-+++ b/app/controllers/repositories_controller.rb
-@@ -261,7 +261,7 @@ private
- 
-   def graph_commits_per_author(repository)
-     commits_by_author = repository.changesets.count(:all, :group => :committer)
--    commits_by_author.to_a.sort! {|x, y| x.last <=> y.last}
-+    commits_by_author.sort! {|x, y| x.last <=> y.last}
- 
-     changes_by_author = repository.changes.count(:all, :group => :committer)
-     h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o}
-diff --git a/app/views/layouts/mailer.text.html.erb b/app/views/layouts/mailer.text.html.erb
-index 83d9678..e69de29 100644
---- a/app/views/layouts/mailer.text.html.erb
-+++ b/app/views/layouts/mailer.text.html.erb
-@@ -1,32 +0,0 @@
--<html>
--<head>
--<style>
--body {
--  font-family: Verdana, sans-serif;
--  font-size: 0.8em;
--  color:#484848;
--}
--h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin: 0px; }
--h1 { font-size: 1.2em; }
--h2, h3 { font-size: 1.1em; }
--a, a:link, a:visited { color: #2A5685;}
--a:hover, a:active { color: #c61a1a; }
--a.wiki-anchor { display: none; }
--hr {
--  width: 100%;
--  height: 1px;
--  background: #ccc;
--  border: 0;
--}
--.footer {
--  font-size: 0.8em;
--  font-style: italic;
--}
--</style>
--</head>
--<body>
--<%= yield %>
--<hr />
--<span class="footer"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer) %></span>
--</body>
--</html>
-diff --git a/app/views/layouts/mailer.text.plain.erb b/app/views/layouts/mailer.text.plain.erb
-index 1cbcbc2..e69de29 100644
---- a/app/views/layouts/mailer.text.plain.erb
-+++ b/app/views/layouts/mailer.text.plain.erb
-@@ -1,3 +0,0 @@
--<%= yield %>
---- 
--<%= Setting.emails_footer %>
-diff --git a/app/views/mailer/layout.text.html.rhtml b/app/views/mailer/layout.text.html.rhtml
-new file mode 100644
-index 0000000..83d9678
---- /dev/null
-+++ b/app/views/mailer/layout.text.html.rhtml
-@@ -0,0 +1,32 @@
-+<html>
-+<head>
-+<style>
-+body {
-+  font-family: Verdana, sans-serif;
-+  font-size: 0.8em;
-+  color:#484848;
-+}
-+h1, h2, h3 { font-family: "Trebuchet MS", Verdana, sans-serif; margin: 0px; }
-+h1 { font-size: 1.2em; }
-+h2, h3 { font-size: 1.1em; }
-+a, a:link, a:visited { color: #2A5685;}
-+a:hover, a:active { color: #c61a1a; }
-+a.wiki-anchor { display: none; }
-+hr {
-+  width: 100%;
-+  height: 1px;
-+  background: #ccc;
-+  border: 0;
-+}
-+.footer {
-+  font-size: 0.8em;
-+  font-style: italic;
-+}
-+</style>
-+</head>
-+<body>
-+<%= yield %>
-+<hr />
-+<span class="footer"><%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer) %></span>
-+</body>
-+</html>
-diff --git a/app/views/mailer/layout.text.plain.rhtml b/app/views/mailer/layout.text.plain.rhtml
-new file mode 100644
-index 0000000..1cbcbc2
---- /dev/null
-+++ b/app/views/mailer/layout.text.plain.rhtml
-@@ -0,0 +1,3 @@
-+<%= yield %>
-+-- 
-+<%= Setting.emails_footer %>
-diff --git a/app/views/settings/_authentication.rhtml b/app/views/settings/_authentication.rhtml
-index f4b8dbf..25d344d 100644
---- a/app/views/settings/_authentication.rhtml
-+++ b/app/views/settings/_authentication.rhtml
-@@ -2,9 +2,7 @@
- 
- <div class="box tabular settings">
- <p><label><%= l(:setting_login_required) %></label>
--<%= hidden_field_tag 'settings[login_required]', 0 %>
--<%= check_box_tag 'settings[login_required]', 1, Setting.login_required? %>
--</p>
-+<%= check_box_tag 'settings[login_required]', 1, Setting.login_required? %><%= hidden_field_tag 'settings[login_required]', 0 %></p>
- 
- <p><label><%= l(:setting_autologin) %></label>
- <%= select_tag 'settings[autologin]', options_for_select( [[l(:label_disabled), "0"]] + [1, 7, 30, 365].collect{|days| [l('datetime.distance_in_words.x_days', :count => days), days.to_s]}, Setting.autologin) %></p>
-@@ -21,14 +19,10 @@
- <%= text_field_tag 'settings[password_min_length]', Setting.password_min_length, :size => 6 %></p>
- 
- <p><label><%= l(:label_password_lost) %></label>
--<%= hidden_field_tag 'settings[lost_password]', 0 %>
--<%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %>
--</p>
-+<%= check_box_tag 'settings[lost_password]', 1, Setting.lost_password? %><%= hidden_field_tag 'settings[lost_password]', 0 %></p>
- 
- <p><label><%= l(:setting_openid) %></label>
--<%= hidden_field_tag 'settings[openid]', 0 %>
--<%= check_box_tag 'settings[openid]', 1, Setting.openid?, :disabled => !Object.const_defined?(:OpenID) %>
--</p>
-+<%= check_box_tag 'settings[openid]', 1, Setting.openid?, :disabled => !Object.const_defined?(:OpenID) %><%= hidden_field_tag 'settings[openid]', 0 %></p>
- </div>
- 
- <div style="float:right;">
-diff --git a/app/views/settings/_display.rhtml b/app/views/settings/_display.rhtml
-index 984f762..a14ff47 100644
---- a/app/views/settings/_display.rhtml
-+++ b/app/views/settings/_display.rhtml
-@@ -17,9 +17,7 @@
- <%= select_tag 'settings[user_format]', options_for_select( @options[:user_format], Setting.user_format.to_s ) %></p>
- 
- <p><label><%= l(:setting_gravatar_enabled) %></label>
--<%= hidden_field_tag 'settings[gravatar_enabled]', 0 %>
--<%= check_box_tag 'settings[gravatar_enabled]', 1, Setting.gravatar_enabled? %>
--</p>
-+<%= check_box_tag 'settings[gravatar_enabled]', 1, Setting.gravatar_enabled? %><%= hidden_field_tag 'settings[gravatar_enabled]', 0 %></p>
- </div>
- 
- <%= submit_tag l(:button_save) %>
-diff --git a/app/views/settings/_issues.rhtml b/app/views/settings/_issues.rhtml
-index b0277fa..0703661 100644
---- a/app/views/settings/_issues.rhtml
-+++ b/app/views/settings/_issues.rhtml
-@@ -2,14 +2,10 @@
- 
- <div class="box tabular settings">
- <p><label><%= l(:setting_cross_project_issue_relations) %></label>
--<%= hidden_field_tag 'settings[cross_project_issue_relations]', 0 %>
--<%= check_box_tag 'settings[cross_project_issue_relations]', 1, Setting.cross_project_issue_relations? %>
--</p>
-+<%= check_box_tag 'settings[cross_project_issue_relations]', 1, Setting.cross_project_issue_relations? %><%= hidden_field_tag 'settings[cross_project_issue_relations]', 0 %></p>
- 
- <p><label><%= l(:setting_display_subprojects_issues) %></label>
--<%= hidden_field_tag 'settings[display_subprojects_issues]', 0 %>
--<%= check_box_tag 'settings[display_subprojects_issues]', 1, Setting.display_subprojects_issues? %>
--</p>
-+<%= check_box_tag 'settings[display_subprojects_issues]', 1, Setting.display_subprojects_issues? %><%= hidden_field_tag 'settings[display_subprojects_issues]', 0 %></p>
- 
- <p><label><%= l(:setting_issues_export_limit) %></label>
- <%= text_field_tag 'settings[issues_export_limit]', Setting.issues_export_limit, :size => 6 %></p>
-diff --git a/app/views/settings/_mail_handler.rhtml b/app/views/settings/_mail_handler.rhtml
-index 8d83358..830b1ba 100644
---- a/app/views/settings/_mail_handler.rhtml
-+++ b/app/views/settings/_mail_handler.rhtml
-@@ -2,10 +2,9 @@
- 
- <div class="box tabular settings">
- <p><label><%= l(:setting_mail_handler_api_enabled) %></label>
--<%= hidden_field_tag 'settings[mail_handler_api_enabled]', 0 %>
- <%= check_box_tag 'settings[mail_handler_api_enabled]', 1, Setting.mail_handler_api_enabled?,
-                   :onclick => "if (this.checked) { Form.Element.enable('settings_mail_handler_api_key'); } else { Form.Element.disable('settings_mail_handler_api_key'); }" %>
--</p>
-+<%= hidden_field_tag 'settings[mail_handler_api_enabled]', 0 %></p>
- 
- <p><label><%= l(:setting_mail_handler_api_key) %></label>
- <%= text_field_tag 'settings[mail_handler_api_key]', Setting.mail_handler_api_key, 
-diff --git a/app/views/settings/_notifications.rhtml b/app/views/settings/_notifications.rhtml
-index 1b1b294..bc01411 100644
---- a/app/views/settings/_notifications.rhtml
-+++ b/app/views/settings/_notifications.rhtml
-@@ -6,14 +6,12 @@
- <%= text_field_tag 'settings[mail_from]', Setting.mail_from, :size => 60 %></p>
- 
- <p><label><%= l(:setting_bcc_recipients) %></label>
--<%= hidden_field_tag 'settings[bcc_recipients]', 0 %>
- <%= check_box_tag 'settings[bcc_recipients]', 1, Setting.bcc_recipients? %>
--</p>
-+<%= hidden_field_tag 'settings[bcc_recipients]', 0 %></p>
- 
- <p><label><%= l(:setting_plain_text_mail) %></label>
--<%= hidden_field_tag 'settings[plain_text_mail]', 0 %>
- <%= check_box_tag 'settings[plain_text_mail]', 1, Setting.plain_text_mail? %>
--</p>
-+<%= hidden_field_tag 'settings[plain_text_mail]', 0 %></p>
- </div>
- 
- <fieldset class="box" id="notified_events"><legend><%=l(:text_select_mail_notifications)%></legend>
-diff --git a/app/views/settings/_projects.rhtml b/app/views/settings/_projects.rhtml
-index 704905a..2f831c8 100644
---- a/app/views/settings/_projects.rhtml
-+++ b/app/views/settings/_projects.rhtml
-@@ -2,14 +2,10 @@
- 
- <div class="box tabular settings">
- <p><label><%= l(:setting_default_projects_public) %></label>
--<%= hidden_field_tag 'settings[default_projects_public]', 0 %>
--<%= check_box_tag 'settings[default_projects_public]', 1, Setting.default_projects_public? %>
--</p>
-+<%= check_box_tag 'settings[default_projects_public]', 1, Setting.default_projects_public? %><%= hidden_field_tag 'settings[default_projects_public]', 0 %></p>
- 
- <p><label><%= l(:setting_sequential_project_identifiers) %></label>
--<%= hidden_field_tag 'settings[sequential_project_identifiers]', 0 %>
--<%= check_box_tag 'settings[sequential_project_identifiers]', 1, Setting.sequential_project_identifiers? %>
--</p>
-+<%= check_box_tag 'settings[sequential_project_identifiers]', 1, Setting.sequential_project_identifiers? %><%= hidden_field_tag 'settings[sequential_project_identifiers]', 0 %></p>
- 
- <p><label><%= l(:setting_new_project_user_role_id) %></label>
- <%= select_tag('settings[new_project_user_role_id]', options_for_select([["--- #{l(:actionview_instancetag_blank_option)} ---", '']] + Role.find_all_givable.collect {|r| [r.name, r.id]}, Setting.new_project_user_role_id.to_i)) %></p>
-diff --git a/app/views/settings/_repositories.rhtml b/app/views/settings/_repositories.rhtml
-index 4f07f05..a20fc51 100644
---- a/app/views/settings/_repositories.rhtml
-+++ b/app/views/settings/_repositories.rhtml
-@@ -2,14 +2,10 @@
- 
- <div class="box tabular settings">
- <p><label><%= l(:setting_autofetch_changesets) %></label>
--<%= hidden_field_tag 'settings[autofetch_changesets]', 0 %>
--<%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %>
--</p>
-+<%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %><%= hidden_field_tag 'settings[autofetch_changesets]', 0 %></p>
- 
- <p><label><%= l(:setting_sys_api_enabled) %></label>
--<%= hidden_field_tag 'settings[sys_api_enabled]', 0 %>
--<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %>
--</p>
-+<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p>
- 
- <p><label><%= l(:setting_enabled_scm) %></label>
- <% REDMINE_SUPPORTED_SCM.each do |scm| -%>
-diff --git a/config/boot.rb b/config/boot.rb
-index dd5e3b6..67cc517 100644
---- a/config/boot.rb
-+++ b/config/boot.rb
-@@ -1,7 +1,7 @@
- # Don't change this file!
- # Configure your app in config/environment.rb and config/environments/*.rb
- 
--RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
-+RAILS_ROOT = File.expand_path("#{File.dirname(__FILE__)}/..") unless defined?(RAILS_ROOT)
- 
- module Rails
-   class << self
-@@ -44,7 +44,6 @@ module Rails
-     def load_initializer
-       require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
-       Rails::Initializer.run(:install_gem_spec_stubs)
--      Rails::GemDependency.add_frozen_gem_path
-     end
-   end
- 
-@@ -82,8 +81,8 @@ module Rails
-       end
- 
-       def load_rubygems
--        min_version = '1.3.2'
-         require 'rubygems'
-+        min_version = '1.3.1'
-         unless rubygems_version >= min_version
-           $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
-           exit 1
-diff --git a/config/environment.rb b/config/environment.rb
-index d173db4..f98968b 100644
---- a/config/environment.rb
-+++ b/config/environment.rb
-@@ -5,7 +5,7 @@
- # ENV['RAILS_ENV'] ||= 'production'
- 
- # Specifies gem version of Rails to use when vendor/rails is not present
--RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION
-+RAILS_GEM_VERSION = '2.2.2' unless defined? RAILS_GEM_VERSION
- 
- # Bootstrap the Rails environment, frameworks, and default configuration
- require File.join(File.dirname(__FILE__), 'boot')
-diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb
-index 94d40fa..f4ae06c 100644
---- a/config/initializers/10-patches.rb
-+++ b/config/initializers/10-patches.rb
-@@ -33,7 +33,7 @@ module ActiveRecord
-             end
-           else
-             attr_name = @base.class.human_attribute_name(attr)
--            full_messages << attr_name + ' ' + message.to_s
-+            full_messages << attr_name + ' ' + message
-           end
-         end
-       end
-diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb
-index c2169ed..e69de29 100644
---- a/config/initializers/backtrace_silencers.rb
-+++ b/config/initializers/backtrace_silencers.rb
-@@ -1,7 +0,0 @@
--# Be sure to restart your server when you modify this file.
--
--# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
--# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
--
--# You can also remove all the silencers if you're trying do debug a problem that might steem from framework code.
--# Rails.backtrace_cleaner.remove_silencers!
-\ No newline at end of file
-diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
-index d531b8b..e69de29 100644
---- a/config/initializers/inflections.rb
-+++ b/config/initializers/inflections.rb
-@@ -1,10 +0,0 @@
--# Be sure to restart your server when you modify this file.
--
--# Add new inflection rules using the following format 
--# (all these examples are active by default):
--# ActiveSupport::Inflector.inflections do |inflect|
--#   inflect.plural /^(ox)$/i, '\1en'
--#   inflect.singular /^(ox)en/i, '\1'
--#   inflect.irregular 'person', 'people'
--#   inflect.uncountable %w( fish sheep )
--# end
-diff --git a/config/locales/bg.yml b/config/locales/bg.yml
-index 46551d6..c0e866b 100644
---- a/config/locales/bg.yml
-+++ b/config/locales/bg.yml
-@@ -59,22 +59,6 @@ bg:
-       over_x_years:
-         one:   "over 1 year"
-         other: "over {{count}} years"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: 'MB'
-       
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/bs.yml b/config/locales/bs.yml
-index d746048..08ff706 100644
---- a/config/locales/bs.yml
-+++ b/config/locales/bs.yml
-@@ -83,16 +83,9 @@ bs:
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+
-+
-+
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/ca.yml b/config/locales/ca.yml
-index 24bb33e..56d856c 100644
---- a/config/locales/ca.yml
-+++ b/config/locales/ca.yml
-@@ -59,22 +59,6 @@ ca:
-       over_x_years:
-         one:   "més d'un any"
-         other: "més de {{count}} anys"
--
--  number:
--    human:
--      format:
--        delimiter: ""
--        precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/cs.yml b/config/locales/cs.yml
-index c1c429d..7944a5c 100644
---- a/config/locales/cs.yml
-+++ b/config/locales/cs.yml
-@@ -59,22 +59,6 @@ cs:
-       over_x_years:
-         one:   "více než 1 rok"
-         other: "více než {{count}} roky"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/da.yml b/config/locales/da.yml
-index 7ebea2c..0a1ff76 100644
---- a/config/locales/da.yml
-+++ b/config/locales/da.yml
-@@ -85,16 +85,7 @@ da:
-         # separator: 
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [Bytes, KB, MB, GB, TB]
-     percentage:
-       format:
-         # separator:
-diff --git a/config/locales/de.yml b/config/locales/de.yml
-index 8f99608..edf46f8 100644
---- a/config/locales/de.yml
-+++ b/config/locales/de.yml
-@@ -83,16 +83,6 @@ de:
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
- 
-   support:
-     array:
-diff --git a/config/locales/el.yml b/config/locales/el.yml
-index 6147bd5..c0a359c 100644
---- a/config/locales/el.yml
-+++ b/config/locales/el.yml
-@@ -63,22 +63,6 @@ el:
-         one:   "πάνω από 1 χρόνο"
-         other: "πάνω από {{count}} χρόνια"
-         
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
--
- # Used in array.to_sentence.
-   support:
-     array:
-diff --git a/config/locales/en.yml b/config/locales/en.yml
-index 71e599a..82a5a7f 100644
---- a/config/locales/en.yml
-+++ b/config/locales/en.yml
-@@ -59,23 +59,6 @@ en:
-       over_x_years:
-         one:   "over 1 year"
-         other: "over {{count}} years"
--
--  number:
--    human:
--      format:
--        delimiter: ""
--        precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
--
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/es.yml b/config/locales/es.yml
-index e76929d..2906676 100644
---- a/config/locales/es.yml
-+++ b/config/locales/es.yml
-@@ -47,16 +47,6 @@ es:
-         # separator: 
-         delimiter: "" 
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
- 
-   # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
-   datetime:
-diff --git a/config/locales/fi.yml b/config/locales/fi.yml
-index fffddc6..c197a16 100644
---- a/config/locales/fi.yml
-+++ b/config/locales/fi.yml
-@@ -61,16 +61,7 @@ fi:
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Tavua"
--            other: "Tavua"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [Tavua, KB, MB, GB, TB]
-  
-   datetime:
-     distance_in_words:
-diff --git a/config/locales/fr.yml b/config/locales/fr.yml
-index 82936b4..b791c3b 100644
---- a/config/locales/fr.yml
-+++ b/config/locales/fr.yml
-@@ -84,16 +84,7 @@ fr:
-     human:
-       format:
-         precision: 2
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Octet"
--            other: "Octet"
--          kb: "ko"
--          mb: "Mo"
--          gb: "Go"
--          tb: "To"
-+      storage_units: [ Octet, ko, Mo, Go, To ]
-   
-   support:
-     array:
-diff --git a/config/locales/gl.yml b/config/locales/gl.yml
-index 00bdbbf..5447e08 100644
---- a/config/locales/gl.yml
-+++ b/config/locales/gl.yml
-@@ -33,16 +33,6 @@ gl:
-         # separator: 
-         delimiter: "" 
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-   
-   
-   date:
-diff --git a/config/locales/he.yml b/config/locales/he.yml
-index ecf5820..9eb078e 100644
---- a/config/locales/he.yml
-+++ b/config/locales/he.yml
-@@ -76,17 +76,6 @@ he:
-         unit: 'שח'
-         precision: 2
-         format: '%u %n'
--    human:
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-         
-   support:
-     array:
-diff --git a/config/locales/hu.yml b/config/locales/hu.yml
-index 70b0d00..96d27cd 100644
---- a/config/locales/hu.yml
-+++ b/config/locales/hu.yml
-@@ -90,16 +90,7 @@
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "bájt"
--            other: "bájt"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [bájt, KB, MB, GB, TB]
- 
-   support:
-     array:
-diff --git a/config/locales/it.yml b/config/locales/it.yml
-index d51e240..1e3372f 100644
---- a/config/locales/it.yml
-+++ b/config/locales/it.yml
-@@ -74,17 +74,6 @@ it:
-         unit: '€'
-         precision: 2
-         format: '%n %u'
--    human:
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-         
-   support:
-     array:
-diff --git a/config/locales/ja.yml b/config/locales/ja.yml
-index 35121b7..3743f9a 100644
---- a/config/locales/ja.yml
-+++ b/config/locales/ja.yml
-@@ -90,16 +90,6 @@ ja:
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
- 
-         
- # Used in array.to_sentence.
-diff --git a/config/locales/ko.yml b/config/locales/ko.yml
-index 82ab805..ead69c6 100644
---- a/config/locales/ko.yml
-+++ b/config/locales/ko.yml
-@@ -117,16 +117,7 @@ ko:
-         # separator: 
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [Bytes, KB, MB, GB, TB]
- 
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/lt.yml b/config/locales/lt.yml
-index fbe3c67..83e2bfc 100644
---- a/config/locales/lt.yml
-+++ b/config/locales/lt.yml
-@@ -28,16 +28,7 @@ lt:
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "baitai"
--            other: "baitai"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [baitai, KB, MB, GB, TB]
- 
-   datetime:
-     distance_in_words:
-diff --git a/config/locales/nl.yml b/config/locales/nl.yml
-index 9f89b81..f75ec99 100644
---- a/config/locales/nl.yml
-+++ b/config/locales/nl.yml
-@@ -59,22 +59,6 @@ nl:
-       over_x_years:
-         one:   "over 1 jaar"
-         other: "over {{count}} jaren"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/no.yml b/config/locales/no.yml
-index c22200c..c6ce37f 100644
---- a/config/locales/no.yml
-+++ b/config/locales/no.yml
-@@ -67,18 +67,6 @@
-       format:
-         delimiter: ""
-         precision: 4
--    human:
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
--
-   activerecord:
-     errors:
-       template:
-diff --git a/config/locales/pl.yml b/config/locales/pl.yml
-index 4f6a28c..7e9fe40 100644
---- a/config/locales/pl.yml
-+++ b/config/locales/pl.yml
-@@ -21,16 +21,7 @@ pl:
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "B"
--            other: "B"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [B, KB, MB, GB, TB]
- 
-   date:
-     formats:
-diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
-index 287a068..de8eb37 100644
---- a/config/locales/pt-BR.yml
-+++ b/config/locales/pt-BR.yml
-@@ -93,16 +93,6 @@ pt-BR:
-       format:
-         precision: 1
-         delimiter: '.'
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-   support:
-     array:
-       sentence_connector: "e"
-diff --git a/config/locales/pt.yml b/config/locales/pt.yml
-index 2086af4..c4aee0c 100644
---- a/config/locales/pt.yml
-+++ b/config/locales/pt.yml
-@@ -83,16 +83,6 @@ pt:
-       format:
-         precision: 1
-         delimiter: ''
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
- 
-   activerecord:
-     errors:
-diff --git a/config/locales/ro.yml b/config/locales/ro.yml
-index c3b8dd2..11ccd8e 100644
---- a/config/locales/ro.yml
-+++ b/config/locales/ro.yml
-@@ -57,22 +57,6 @@ ro:
-       over_x_years:
-         one:   "peste un an"
-         other: "peste {{count}} ani"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/sk.yml b/config/locales/sk.yml
-index 59a5faa..14bb1c7 100644
---- a/config/locales/sk.yml
-+++ b/config/locales/sk.yml
-@@ -59,22 +59,6 @@ sk:
-       over_x_years:
-         one:   "cez 1 rok"
-         other: "cez {{count}} roky/ov"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/sl.yml b/config/locales/sl.yml
-index bfc5e08..2ee0e83 100644
---- a/config/locales/sl.yml
-+++ b/config/locales/sl.yml
-@@ -59,22 +59,6 @@ sl:
-       over_x_years:
-         one:   "over 1 year"
-         other: "over {{count}} years"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/sr.yml b/config/locales/sr.yml
-index 0f8ed10..056286f 100644
---- a/config/locales/sr.yml
-+++ b/config/locales/sr.yml
-@@ -81,17 +81,6 @@
-         unit: 'ДИН'
-         precision: 2
-         format: '%n %u'
--    human:
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
- 
-   support:
-     array:
-diff --git a/config/locales/sv.yml b/config/locales/sv.yml
-index 9c15c8b..98c9208 100644
---- a/config/locales/sv.yml
-+++ b/config/locales/sv.yml
-@@ -47,16 +47,7 @@ sv:
-         # separator: 
-         delimiter: ""
-         # precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [Byte, KB, MB, GB, TB]
- 
-   # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
-   datetime:
-diff --git a/config/locales/th.yml b/config/locales/th.yml
-index fb6b36e..745173f 100644
---- a/config/locales/th.yml
-+++ b/config/locales/th.yml
-@@ -59,22 +59,6 @@ th:
-       over_x_years:
-         one:   "over 1 year"
-         other: "over {{count}} years"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/tr.yml b/config/locales/tr.yml
-index d51e465..5381383 100644
---- a/config/locales/tr.yml
-+++ b/config/locales/tr.yml
-@@ -92,16 +92,6 @@ tr:
-         delimiter: '.'
-         separator: ','
-         precision: 2
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
- 
-   support:
-     array:
-diff --git a/config/locales/uk.yml b/config/locales/uk.yml
-index c14f604..3233bd1 100644
---- a/config/locales/uk.yml
-+++ b/config/locales/uk.yml
-@@ -59,22 +59,6 @@ uk:
-       over_x_years:
-         one:   "over 1 year"
-         other: "over {{count}} years"
--
--  number: 
--    human: 
--      format: 
--        precision: 1
--        delimiter: ""
--      storage_units: 
--        format: "%n %u"
--        units: 
--          kb: KB
--          tb: TB
--          gb: GB
--          byte: 
--            one: Byte
--            other: Bytes
--          mb: MB
-         
- # Used in array.to_sentence.
-   support:
-diff --git a/config/locales/vi.yml b/config/locales/vi.yml
-index 766b462..b2b58f5 100644
---- a/config/locales/vi.yml
-+++ b/config/locales/vi.yml
-@@ -49,16 +49,7 @@ vi:
-         # separator:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [Bytes, KB, MB, GB, TB]
- 
-   # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
-   datetime:
-diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
-index 091d0cc..ce37824 100644
---- a/config/locales/zh-TW.yml
-+++ b/config/locales/zh-TW.yml
-@@ -86,9 +86,8 @@
-         precision: 1
-         # 儲存單位輸出格式.
-         # %u 是儲存單位, %n 是數值 (預設值: 2 MB)
--      storage_units:
-         format: "%n %u"
--        units:
-+        storage_units:
-           byte:
-             one: "位元組 (B)"
-             other: "位元組 (B)"
-diff --git a/config/locales/zh.yml b/config/locales/zh.yml
-index 596a08d..282d3c9 100644
---- a/config/locales/zh.yml
-+++ b/config/locales/zh.yml
-@@ -86,16 +86,7 @@ zh:
-       format:
-         delimiter: ""
-         precision: 1
--      storage_units:
--        format: "%n %u"
--        units:
--          byte:
--            one: "Byte"
--            other: "Bytes"
--          kb: "KB"
--          mb: "MB"
--          gb: "GB"
--          tb: "TB"
-+      storage_units: [Bytes, KB, MB, GB, TB]
-   
-   support:
-     array:
-diff --git a/config/routes.rb b/config/routes.rb
-index 1e34001..6dc75ce 100644
---- a/config/routes.rb
-+++ b/config/routes.rb
-@@ -6,6 +6,11 @@ ActionController::Routing::Routes.draw do |map|
-   # map.connect 'products/:id', :controller => 'catalog', :action => 'view'
-   # Keep in mind you can assign values other than :controller and :action
- 
-+  # Allow Redmine plugins to map routes and potentially override them
-+  Rails.plugins.each do |plugin|
-+    map.from_plugin plugin.name.to_sym
-+  end
-+
-   map.home '', :controller => 'welcome'
-   
-   map.signin 'login', :controller => 'account', :action => 'login'
-diff --git a/lib/generators/redmine_plugin_model/templates/unit_test.rb.erb b/lib/generators/redmine_plugin_model/templates/unit_test.rb.erb
-index bc6ae91..cc8b2e5 100644
---- a/lib/generators/redmine_plugin_model/templates/unit_test.rb.erb
-+++ b/lib/generators/redmine_plugin_model/templates/unit_test.rb.erb
-@@ -1,6 +1,6 @@
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class <%= class_name %>Test < ActiveSupport::TestCase
-+class <%= class_name %>Test < Test::Unit::TestCase
-   fixtures :<%= table_name %>
- 
-   # Replace this with your real tests.
-diff --git a/lib/tabular_form_builder.rb b/lib/tabular_form_builder.rb
-index 8728266..5bf690b 100644
---- a/lib/tabular_form_builder.rb
-+++ b/lib/tabular_form_builder.rb
-@@ -43,7 +43,7 @@ class TabularFormBuilder < ActionView::Helpers::FormBuilder
-       return '' if options.delete(:no_label)
-       text = options[:label].is_a?(Symbol) ? l(options[:label]) : options[:label]
-       text ||= l(("field_" + field.to_s.gsub(/\_id$/, "")).to_sym)
--      text += @template.content_tag("span", " *", :class => "required") if options.delete(:required)
-+      text << @template.content_tag("span", " *", :class => "required") if options.delete(:required)
-       @template.content_tag("label", text, 
-                                      :class => (@object && @object.errors[field] ? "error" : nil), 
-                                      :for => (@object_name.to_s + "_" + field.to_s))
-diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb
-index 17d19df..c48778d 100644
---- a/test/functional/account_controller_test.rb
-+++ b/test/functional/account_controller_test.rb
-@@ -21,7 +21,7 @@ require 'account_controller'
- # Re-raise errors caught by the controller.
- class AccountController; def rescue_action(e) raise e end; end
- 
--class AccountControllerTest < ActionController::TestCase
-+class AccountControllerTest < Test::Unit::TestCase
-   fixtures :users, :roles
-   
-   def setup
-diff --git a/test/functional/admin_controller_test.rb b/test/functional/admin_controller_test.rb
-index 47091c4..32965de 100644
---- a/test/functional/admin_controller_test.rb
-+++ b/test/functional/admin_controller_test.rb
-@@ -21,7 +21,7 @@ require 'admin_controller'
- # Re-raise errors caught by the controller.
- class AdminController; def rescue_action(e) raise e end; end
- 
--class AdminControllerTest < ActionController::TestCase
-+class AdminControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles
-   
-   def setup
-diff --git a/test/functional/application_controller_test.rb b/test/functional/application_controller_test.rb
-index 7e221c2..0232b6a 100644
---- a/test/functional/application_controller_test.rb
-+++ b/test/functional/application_controller_test.rb
-@@ -16,12 +16,12 @@
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- 
- require File.dirname(__FILE__) + '/../test_helper'
--require 'application_controller'
-+require 'application'
- 
- # Re-raise errors caught by the controller.
- class ApplicationController; def rescue_action(e) raise e end; end
- 
--class ApplicationControllerTest < ActionController::TestCase
-+class ApplicationControllerTest < Test::Unit::TestCase
-   include Redmine::I18n
-   
-   def setup
-diff --git a/test/functional/attachments_controller_test.rb b/test/functional/attachments_controller_test.rb
-index bf57349..3a4b897 100644
---- a/test/functional/attachments_controller_test.rb
-+++ b/test/functional/attachments_controller_test.rb
-@@ -22,7 +22,7 @@ require 'attachments_controller'
- class AttachmentsController; def rescue_action(e) raise e end; end
- 
- 
--class AttachmentsControllerTest < ActionController::TestCase
-+class AttachmentsControllerTest < Test::Unit::TestCase
-   fixtures :users, :projects, :roles, :members, :member_roles, :enabled_modules, :issues, :trackers, :attachments,
-            :versions, :wiki_pages, :wikis, :documents
-   
-diff --git a/test/functional/boards_controller_test.rb b/test/functional/boards_controller_test.rb
-index 254ee93..eb9a50e 100644
---- a/test/functional/boards_controller_test.rb
-+++ b/test/functional/boards_controller_test.rb
-@@ -21,7 +21,7 @@ require 'boards_controller'
- # Re-raise errors caught by the controller.
- class BoardsController; def rescue_action(e) raise e end; end
- 
--class BoardsControllerTest < ActionController::TestCase
-+class BoardsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :members, :member_roles, :roles, :boards, :messages, :enabled_modules
-   
-   def setup
-diff --git a/test/functional/custom_fields_controller_test.rb b/test/functional/custom_fields_controller_test.rb
-index 1caf98f..230d62c 100644
---- a/test/functional/custom_fields_controller_test.rb
-+++ b/test/functional/custom_fields_controller_test.rb
-@@ -21,7 +21,7 @@ require 'custom_fields_controller'
- # Re-raise errors caught by the controller.
- class CustomFieldsController; def rescue_action(e) raise e end; end
- 
--class CustomFieldsControllerTest < ActionController::TestCase
-+class CustomFieldsControllerTest < Test::Unit::TestCase
-   fixtures :custom_fields, :trackers, :users
-   
-   def setup
-diff --git a/test/functional/documents_controller_test.rb b/test/functional/documents_controller_test.rb
-index bdab5ac..c0fe095 100644
---- a/test/functional/documents_controller_test.rb
-+++ b/test/functional/documents_controller_test.rb
-@@ -21,7 +21,7 @@ require 'documents_controller'
- # Re-raise errors caught by the controller.
- class DocumentsController; def rescue_action(e) raise e end; end
- 
--class DocumentsControllerTest < ActionController::TestCase
-+class DocumentsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :documents, :enumerations
-   
-   def setup
-@@ -75,7 +75,7 @@ class DocumentsControllerTest < ActionController::TestCase
-                :document => { :title => 'DocumentsControllerTest#test_post_new',
-                               :description => 'This is a new document',
-                               :category_id => 2},
--               :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-+               :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
-                
-     assert_redirected_to 'projects/ecookbook/documents'
-     
-diff --git a/test/functional/enumerations_controller_test.rb b/test/functional/enumerations_controller_test.rb
-index 8c66186..afbe23a 100644
---- a/test/functional/enumerations_controller_test.rb
-+++ b/test/functional/enumerations_controller_test.rb
-@@ -21,7 +21,7 @@ require 'enumerations_controller'
- # Re-raise errors caught by the controller.
- class EnumerationsController; def rescue_action(e) raise e end; end
- 
--class EnumerationsControllerTest < ActionController::TestCase
-+class EnumerationsControllerTest < Test::Unit::TestCase
-   fixtures :enumerations, :issues, :users
-   
-   def setup
-diff --git a/test/functional/groups_controller_test.rb b/test/functional/groups_controller_test.rb
-index d7bdbb7..ae795c3 100644
---- a/test/functional/groups_controller_test.rb
-+++ b/test/functional/groups_controller_test.rb
-@@ -21,7 +21,7 @@ require 'groups_controller'
- # Re-raise errors caught by the controller.
- class GroupsController; def rescue_action(e) raise e end; end
- 
--class GroupsControllerTest < ActionController::TestCase
-+class GroupsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :members, :member_roles, :groups_users
-   
-   def setup
-diff --git a/test/functional/issue_categories_controller_test.rb b/test/functional/issue_categories_controller_test.rb
-index 3d1dd06..ffb8733 100644
---- a/test/functional/issue_categories_controller_test.rb
-+++ b/test/functional/issue_categories_controller_test.rb
-@@ -21,7 +21,7 @@ require 'issue_categories_controller'
- # Re-raise errors caught by the controller.
- class IssueCategoriesController; def rescue_action(e) raise e end; end
- 
--class IssueCategoriesControllerTest < ActionController::TestCase
-+class IssueCategoriesControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :members, :member_roles, :roles, :enabled_modules, :issue_categories
-   
-   def setup
-diff --git a/test/functional/issue_relations_controller_test.rb b/test/functional/issue_relations_controller_test.rb
-index 8566174..a23f64a 100644
---- a/test/functional/issue_relations_controller_test.rb
-+++ b/test/functional/issue_relations_controller_test.rb
-@@ -5,7 +5,7 @@ require 'issue_relations_controller'
- class IssueRelationsController; def rescue_action(e) raise e end; end
- 
- 
--class IssueRelationsControllerTest < ActionController::TestCase
-+class IssueRelationsControllerTest < Test::Unit::TestCase
-   fixtures :projects,
-            :users,
-            :roles,
-diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
-index b38b8bb..853b3d1 100644
---- a/test/functional/issues_controller_test.rb
-+++ b/test/functional/issues_controller_test.rb
-@@ -21,7 +21,7 @@ require 'issues_controller'
- # Re-raise errors caught by the controller.
- class IssuesController; def rescue_action(e) raise e end; end
- 
--class IssuesControllerTest < ActionController::TestCase
-+class IssuesControllerTest < Test::Unit::TestCase
-   fixtures :projects,
-            :users,
-            :roles,
-@@ -42,8 +42,7 @@ class IssuesControllerTest < ActionController::TestCase
-            :custom_fields_trackers,
-            :time_entries,
-            :journals,
--           :journal_details,
--           :queries
-+           :journal_details
-   
-   def setup
-     @controller = IssuesController.new
-@@ -453,16 +452,14 @@ class IssuesControllerTest < ActionController::TestCase
-   
-   def test_post_new
-     @request.session[:user_id] = 2
--    assert_difference 'Issue.count' do
--      post :new, :project_id => 1, 
--                 :issue => {:tracker_id => 3,
--                            :subject => 'This is the test_new issue',
--                            :description => 'This is the description',
--                            :priority_id => 5,
--                            :estimated_hours => '',
--                            :custom_field_values => {'2' => 'Value for field 2'}}
--    end
--    assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
-+    post :new, :project_id => 1, 
-+               :issue => {:tracker_id => 3,
-+                          :subject => 'This is the test_new issue',
-+                          :description => 'This is the description',
-+                          :priority_id => 5,
-+                          :estimated_hours => '',
-+                          :custom_field_values => {'2' => 'Value for field 2'}}
-+    assert_redirected_to :action => 'show'
-     
-     issue = Issue.find_by_subject('This is the test_new issue')
-     assert_not_nil issue
-@@ -486,14 +483,12 @@ class IssuesControllerTest < ActionController::TestCase
-   
-   def test_post_new_without_custom_fields_param
-     @request.session[:user_id] = 2
--    assert_difference 'Issue.count' do
--      post :new, :project_id => 1, 
--                 :issue => {:tracker_id => 1,
--                            :subject => 'This is the test_new issue',
--                            :description => 'This is the description',
--                            :priority_id => 5}
--    end
--    assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
-+    post :new, :project_id => 1, 
-+               :issue => {:tracker_id => 1,
-+                          :subject => 'This is the test_new issue',
-+                          :description => 'This is the description',
-+                          :priority_id => 5}
-+    assert_redirected_to :action => 'show'
-   end
- 
-   def test_post_new_with_required_custom_field_and_without_custom_fields_param
-@@ -541,16 +536,14 @@ class IssuesControllerTest < ActionController::TestCase
-   def test_post_new_should_send_a_notification
-     ActionMailer::Base.deliveries.clear
-     @request.session[:user_id] = 2
--    assert_difference 'Issue.count' do
--      post :new, :project_id => 1, 
--                 :issue => {:tracker_id => 3,
--                            :subject => 'This is the test_new issue',
--                            :description => 'This is the description',
--                            :priority_id => 5,
--                            :estimated_hours => '',
--                            :custom_field_values => {'2' => 'Value for field 2'}}
--    end
--    assert_redirected_to :controller => 'issues', :action => 'show', :id => Issue.last.id
-+    post :new, :project_id => 1, 
-+               :issue => {:tracker_id => 3,
-+                          :subject => 'This is the test_new issue',
-+                          :description => 'This is the description',
-+                          :priority_id => 5,
-+                          :estimated_hours => '',
-+                          :custom_field_values => {'2' => 'Value for field 2'}}
-+    assert_redirected_to :action => 'show'
-     
-     assert_equal 1, ActionMailer::Base.deliveries.size
-   end
-@@ -787,7 +780,7 @@ class IssuesControllerTest < ActionController::TestCase
-     post :edit,
-          :id => 1,
-          :notes => '',
--         :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-+         :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
-     assert_redirected_to :action => 'show', :id => '1'
-     j = Issue.find(1).journals.find(:first, :order => 'id DESC')
-     assert j.notes.blank?
-diff --git a/test/functional/journals_controller_test.rb b/test/functional/journals_controller_test.rb
-index 0a11bab..ae112ab 100644
---- a/test/functional/journals_controller_test.rb
-+++ b/test/functional/journals_controller_test.rb
-@@ -21,7 +21,7 @@ require 'journals_controller'
- # Re-raise errors caught by the controller.
- class JournalsController; def rescue_action(e) raise e end; end
- 
--class JournalsControllerTest < ActionController::TestCase
-+class JournalsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :members, :member_roles, :roles, :issues, :journals, :journal_details, :enabled_modules
-   
-   def setup
-diff --git a/test/functional/mail_handler_controller_test.rb b/test/functional/mail_handler_controller_test.rb
-index 8365f31..e99f99a 100644
---- a/test/functional/mail_handler_controller_test.rb
-+++ b/test/functional/mail_handler_controller_test.rb
-@@ -21,7 +21,7 @@ require 'mail_handler_controller'
- # Re-raise errors caught by the controller.
- class MailHandlerController; def rescue_action(e) raise e end; end
- 
--class MailHandlerControllerTest < ActionController::TestCase
-+class MailHandlerControllerTest < Test::Unit::TestCase
-   fixtures :users, :projects, :enabled_modules, :roles, :members, :member_roles, :issues, :issue_statuses, :trackers, :enumerations
-   
-   FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler'
-diff --git a/test/functional/members_controller_test.rb b/test/functional/members_controller_test.rb
-index bc5f92e..91f36ab 100644
---- a/test/functional/members_controller_test.rb
-+++ b/test/functional/members_controller_test.rb
-@@ -22,7 +22,7 @@ require 'members_controller'
- class MembersController; def rescue_action(e) raise e end; end
- 
- 
--class MembersControllerTest < ActionController::TestCase
-+class MembersControllerTest < Test::Unit::TestCase
-   fixtures :projects, :members, :member_roles, :roles, :users
-   
-   def setup
-diff --git a/test/functional/messages_controller_test.rb b/test/functional/messages_controller_test.rb
-index 2522f0a..70061ac 100644
---- a/test/functional/messages_controller_test.rb
-+++ b/test/functional/messages_controller_test.rb
-@@ -21,7 +21,7 @@ require 'messages_controller'
- # Re-raise errors caught by the controller.
- class MessagesController; def rescue_action(e) raise e end; end
- 
--class MessagesControllerTest < ActionController::TestCase
-+class MessagesControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :members, :member_roles, :roles, :boards, :messages, :enabled_modules
-   
-   def setup
-diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb
-index 8862466..9973400 100644
---- a/test/functional/my_controller_test.rb
-+++ b/test/functional/my_controller_test.rb
-@@ -21,7 +21,7 @@ require 'my_controller'
- # Re-raise errors caught by the controller.
- class MyController; def rescue_action(e) raise e end; end
- 
--class MyControllerTest < ActionController::TestCase
-+class MyControllerTest < Test::Unit::TestCase
-   fixtures :users, :issues, :issue_statuses, :trackers, :enumerations, :custom_fields
-   
-   def setup
-diff --git a/test/functional/news_controller_test.rb b/test/functional/news_controller_test.rb
-index 427d75b..cea35ca 100644
---- a/test/functional/news_controller_test.rb
-+++ b/test/functional/news_controller_test.rb
-@@ -21,7 +21,7 @@ require 'news_controller'
- # Re-raise errors caught by the controller.
- class NewsController; def rescue_action(e) raise e end; end
- 
--class NewsControllerTest < ActionController::TestCase
-+class NewsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news, :comments
-   
-   def setup
-diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb
-index dcbcb77..7b76f2f 100644
---- a/test/functional/projects_controller_test.rb
-+++ b/test/functional/projects_controller_test.rb
-@@ -21,7 +21,7 @@ require 'projects_controller'
- # Re-raise errors caught by the controller.
- class ProjectsController; def rescue_action(e) raise e end; end
- 
--class ProjectsControllerTest < ActionController::TestCase
-+class ProjectsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
-            :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,
-            :attachments, :custom_fields, :custom_values, :time_entries
-@@ -272,7 +272,7 @@ class ProjectsControllerTest < ActionController::TestCase
-     
-     assert_difference 'Attachment.count' do
-       post :add_file, :id => 1, :version_id => '',
--           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-+           :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
-     end
-     assert_redirected_to 'projects/ecookbook/files'
-     a = Attachment.find(:first, :order => 'created_on DESC')
-@@ -303,7 +303,7 @@ class ProjectsControllerTest < ActionController::TestCase
-     
-     assert_difference 'Attachment.count' do
-       post :add_file, :id => 1, :version_id => '2',
--           :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
-+           :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain')}}
-     end
-     assert_redirected_to 'projects/ecookbook/files'
-     a = Attachment.find(:first, :order => 'created_on DESC')
-diff --git a/test/functional/queries_controller_test.rb b/test/functional/queries_controller_test.rb
-index af2a86e..8edde44 100644
---- a/test/functional/queries_controller_test.rb
-+++ b/test/functional/queries_controller_test.rb
-@@ -21,7 +21,7 @@ require 'queries_controller'
- # Re-raise errors caught by the controller.
- class QueriesController; def rescue_action(e) raise e end; end
- 
--class QueriesControllerTest < ActionController::TestCase
-+class QueriesControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :members, :member_roles, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :custom_fields, :custom_values, :queries
-   
-   def setup
-@@ -70,7 +70,7 @@ class QueriesControllerTest < ActionController::TestCase
-          :query => {"name" => "test_new_project_public_query", "is_public" => "1"}
-          
-     q = Query.find_by_name('test_new_project_public_query')
--    assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
-+    assert_redirected_to :controller => 'issues', :action => 'index', :query_id => q
-     assert q.is_public?
-     assert q.has_default_columns?
-     assert q.valid?
-@@ -88,7 +88,7 @@ class QueriesControllerTest < ActionController::TestCase
-          :query => {"name" => "test_new_project_private_query", "is_public" => "1"}
-          
-     q = Query.find_by_name('test_new_project_private_query')
--    assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
-+    assert_redirected_to :controller => 'issues', :action => 'index', :query_id => q
-     assert !q.is_public?
-     assert q.has_default_columns?
-     assert q.valid?
-@@ -104,7 +104,7 @@ class QueriesControllerTest < ActionController::TestCase
-          :query => {"name" => "test_new_global_private_query", "is_public" => "1", "column_names" => ["", "tracker", "subject", "priority", "category"]}
-          
-     q = Query.find_by_name('test_new_global_private_query')
--    assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :query_id => q
-+    assert_redirected_to :controller => 'issues', :action => 'index', :query_id => q
-     assert !q.is_public?
-     assert !q.has_default_columns?
-     assert_equal [:tracker, :subject, :priority, :category], q.columns.collect {|c| c.name}
-diff --git a/test/functional/reports_controller_test.rb b/test/functional/reports_controller_test.rb
-index ab33b30..125b175 100644
---- a/test/functional/reports_controller_test.rb
-+++ b/test/functional/reports_controller_test.rb
-@@ -22,7 +22,7 @@ require 'reports_controller'
- class ReportsController; def rescue_action(e) raise e end; end
- 
- 
--class ReportsControllerTest < ActionController::TestCase
-+class ReportsControllerTest < Test::Unit::TestCase
-   fixtures :all
-   
-   def setup
-diff --git a/test/functional/repositories_bazaar_controller_test.rb b/test/functional/repositories_bazaar_controller_test.rb
-index 18841d5..98aa236 100644
---- a/test/functional/repositories_bazaar_controller_test.rb
-+++ b/test/functional/repositories_bazaar_controller_test.rb
-@@ -21,7 +21,7 @@ require 'repositories_controller'
- # Re-raise errors caught by the controller.
- class RepositoriesController; def rescue_action(e) raise e end; end
- 
--class RepositoriesBazaarControllerTest < ActionController::TestCase
-+class RepositoriesBazaarControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules
- 
-   # No '..' in the repository path
-diff --git a/test/functional/repositories_controller_test.rb b/test/functional/repositories_controller_test.rb
-index 5ff2a6a..89327dd 100644
---- a/test/functional/repositories_controller_test.rb
-+++ b/test/functional/repositories_controller_test.rb
-@@ -21,7 +21,7 @@ require 'repositories_controller'
- # Re-raise errors caught by the controller.
- class RepositoriesController; def rescue_action(e) raise e end; end
- 
--class RepositoriesControllerTest < ActionController::TestCase
-+class RepositoriesControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
-   
-   def setup
-diff --git a/test/functional/repositories_cvs_controller_test.rb b/test/functional/repositories_cvs_controller_test.rb
-index f3d4ecf..c728bf3 100644
---- a/test/functional/repositories_cvs_controller_test.rb
-+++ b/test/functional/repositories_cvs_controller_test.rb
-@@ -21,7 +21,7 @@ require 'repositories_controller'
- # Re-raise errors caught by the controller.
- class RepositoriesController; def rescue_action(e) raise e end; end
- 
--class RepositoriesCvsControllerTest < ActionController::TestCase
-+class RepositoriesCvsControllerTest < Test::Unit::TestCase
- 
-   # No '..' in the repository path
-   REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
-diff --git a/test/functional/repositories_darcs_controller_test.rb b/test/functional/repositories_darcs_controller_test.rb
-index b605ff8..3f841e9 100644
---- a/test/functional/repositories_darcs_controller_test.rb
-+++ b/test/functional/repositories_darcs_controller_test.rb
-@@ -21,7 +21,7 @@ require 'repositories_controller'
- # Re-raise errors caught by the controller.
- class RepositoriesController; def rescue_action(e) raise e end; end
- 
--class RepositoriesDarcsControllerTest < ActionController::TestCase
-+class RepositoriesDarcsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules
- 
-   # No '..' in the repository path
-diff --git a/test/functional/repositories_git_controller_test.rb b/test/functional/repositories_git_controller_test.rb
-index 37c6fb8..6c2502f 100644
---- a/test/functional/repositories_git_controller_test.rb
-+++ b/test/functional/repositories_git_controller_test.rb
-@@ -21,7 +21,7 @@ require 'repositories_controller'
- # Re-raise errors caught by the controller.
- class RepositoriesController; def rescue_action(e) raise e end; end
- 
--class RepositoriesGitControllerTest < ActionController::TestCase
-+class RepositoriesGitControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules
- 
-   # No '..' in the repository path
-diff --git a/test/functional/repositories_mercurial_controller_test.rb b/test/functional/repositories_mercurial_controller_test.rb
-index f2639ee..ec25265 100644
---- a/test/functional/repositories_mercurial_controller_test.rb
-+++ b/test/functional/repositories_mercurial_controller_test.rb
-@@ -21,7 +21,7 @@ require 'repositories_controller'
- # Re-raise errors caught by the controller.
- class RepositoriesController; def rescue_action(e) raise e end; end
- 
--class RepositoriesMercurialControllerTest < ActionController::TestCase
-+class RepositoriesMercurialControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules
- 
-   # No '..' in the repository path
-diff --git a/test/functional/repositories_subversion_controller_test.rb b/test/functional/repositories_subversion_controller_test.rb
-index f07c7ea..8aa154d 100644
---- a/test/functional/repositories_subversion_controller_test.rb
-+++ b/test/functional/repositories_subversion_controller_test.rb
-@@ -21,7 +21,7 @@ require 'repositories_controller'
- # Re-raise errors caught by the controller.
- class RepositoriesController; def rescue_action(e) raise e end; end
- 
--class RepositoriesSubversionControllerTest < ActionController::TestCase
-+class RepositoriesSubversionControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules,
-            :repositories, :issues, :issue_statuses, :changesets, :changes,
-            :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
-diff --git a/test/functional/roles_controller_test.rb b/test/functional/roles_controller_test.rb
-index 2004088..61e9bd6 100644
---- a/test/functional/roles_controller_test.rb
-+++ b/test/functional/roles_controller_test.rb
-@@ -21,7 +21,7 @@ require 'roles_controller'
- # Re-raise errors caught by the controller.
- class RolesController; def rescue_action(e) raise e end; end
- 
--class RolesControllerTest < ActionController::TestCase
-+class RolesControllerTest < Test::Unit::TestCase
-   fixtures :roles, :users, :members, :member_roles, :workflows
-   
-   def setup
-diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb
-index b062468..4f79081 100644
---- a/test/functional/search_controller_test.rb
-+++ b/test/functional/search_controller_test.rb
-@@ -4,7 +4,7 @@ require 'search_controller'
- # Re-raise errors caught by the controller.
- class SearchController; def rescue_action(e) raise e end; end
- 
--class SearchControllerTest < ActionController::TestCase
-+class SearchControllerTest < Test::Unit::TestCase
-   fixtures :projects, :enabled_modules, :roles, :users, :members, :member_roles,
-            :issues, :trackers, :issue_statuses,
-            :custom_fields, :custom_values,
-diff --git a/test/functional/settings_controller_test.rb b/test/functional/settings_controller_test.rb
-index 1e0c48f..0e919a7 100644
---- a/test/functional/settings_controller_test.rb
-+++ b/test/functional/settings_controller_test.rb
-@@ -21,7 +21,7 @@ require 'settings_controller'
- # Re-raise errors caught by the controller.
- class SettingsController; def rescue_action(e) raise e end; end
- 
--class SettingsControllerTest < ActionController::TestCase
-+class SettingsControllerTest < Test::Unit::TestCase
-   fixtures :users
-   
-   def setup
-diff --git a/test/functional/sys_controller_test.rb b/test/functional/sys_controller_test.rb
-index 59b1d2a..db9dd2a 100644
---- a/test/functional/sys_controller_test.rb
-+++ b/test/functional/sys_controller_test.rb
-@@ -21,7 +21,7 @@ require 'sys_controller'
- # Re-raise errors caught by the controller.
- class SysController; def rescue_action(e) raise e end; end
- 
--class SysControllerTest < ActionController::TestCase
-+class SysControllerTest < Test::Unit::TestCase
-   fixtures :projects, :repositories
-   
-   def setup
-diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb
-index d689e9e..65b6987 100644
---- a/test/functional/timelog_controller_test.rb
-+++ b/test/functional/timelog_controller_test.rb
-@@ -22,7 +22,7 @@ require 'timelog_controller'
- # Re-raise errors caught by the controller.
- class TimelogController; def rescue_action(e) raise e end; end
- 
--class TimelogControllerTest < ActionController::TestCase
-+class TimelogControllerTest < Test::Unit::TestCase
-   fixtures :projects, :enabled_modules, :roles, :members, :member_roles, :issues, :time_entries, :users, :trackers, :enumerations, :issue_statuses, :custom_fields, :custom_values
- 
-   def setup
-diff --git a/test/functional/trackers_controller_test.rb b/test/functional/trackers_controller_test.rb
-index ec41224..e2109ba 100644
---- a/test/functional/trackers_controller_test.rb
-+++ b/test/functional/trackers_controller_test.rb
-@@ -21,7 +21,7 @@ require 'trackers_controller'
- # Re-raise errors caught by the controller.
- class TrackersController; def rescue_action(e) raise e end; end
- 
--class TrackersControllerTest < ActionController::TestCase
-+class TrackersControllerTest < Test::Unit::TestCase
-   fixtures :trackers, :projects, :projects_trackers, :users, :issues
-   
-   def setup
-diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb
-index 74cfb65..4025903 100644
---- a/test/functional/users_controller_test.rb
-+++ b/test/functional/users_controller_test.rb
-@@ -21,7 +21,7 @@ require 'users_controller'
- # Re-raise errors caught by the controller.
- class UsersController; def rescue_action(e) raise e end; end
- 
--class UsersControllerTest < ActionController::TestCase
-+class UsersControllerTest < Test::Unit::TestCase
-   include Redmine::I18n
-   
-   fixtures :users, :projects, :members, :member_roles, :roles
-diff --git a/test/functional/versions_controller_test.rb b/test/functional/versions_controller_test.rb
-index 4343b88..3d212de 100644
---- a/test/functional/versions_controller_test.rb
-+++ b/test/functional/versions_controller_test.rb
-@@ -21,7 +21,7 @@ require 'versions_controller'
- # Re-raise errors caught by the controller.
- class VersionsController; def rescue_action(e) raise e end; end
- 
--class VersionsControllerTest < ActionController::TestCase
-+class VersionsControllerTest < Test::Unit::TestCase
-   fixtures :projects, :versions, :issues, :users, :roles, :members, :member_roles, :enabled_modules
-   
-   def setup
-diff --git a/test/functional/watchers_controller_test.rb b/test/functional/watchers_controller_test.rb
-index d36f783..ada2955 100644
---- a/test/functional/watchers_controller_test.rb
-+++ b/test/functional/watchers_controller_test.rb
-@@ -21,7 +21,7 @@ require 'watchers_controller'
- # Re-raise errors caught by the controller.
- class WatchersController; def rescue_action(e) raise e end; end
- 
--class WatchersControllerTest < ActionController::TestCase
-+class WatchersControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules,
-            :issues, :trackers, :projects_trackers, :issue_statuses, :enumerations, :watchers
-   
-diff --git a/test/functional/welcome_controller_test.rb b/test/functional/welcome_controller_test.rb
-index 5fef176..0376fd8 100644
---- a/test/functional/welcome_controller_test.rb
-+++ b/test/functional/welcome_controller_test.rb
-@@ -21,7 +21,7 @@ require 'welcome_controller'
- # Re-raise errors caught by the controller.
- class WelcomeController; def rescue_action(e) raise e end; end
- 
--class WelcomeControllerTest < ActionController::TestCase
-+class WelcomeControllerTest < Test::Unit::TestCase
-   fixtures :projects, :news
-   
-   def setup
-diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb
-index cf247db..9d104c5 100644
---- a/test/functional/wiki_controller_test.rb
-+++ b/test/functional/wiki_controller_test.rb
-@@ -21,7 +21,7 @@ require 'wiki_controller'
- # Re-raise errors caught by the controller.
- class WikiController; def rescue_action(e) raise e end; end
- 
--class WikiControllerTest < ActionController::TestCase
-+class WikiControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :attachments
-   
-   def setup
-diff --git a/test/functional/wikis_controller_test.rb b/test/functional/wikis_controller_test.rb
-index dc7df4d..7a5634f 100644
---- a/test/functional/wikis_controller_test.rb
-+++ b/test/functional/wikis_controller_test.rb
-@@ -21,7 +21,7 @@ require 'wikis_controller'
- # Re-raise errors caught by the controller.
- class WikisController; def rescue_action(e) raise e end; end
- 
--class WikisControllerTest < ActionController::TestCase
-+class WikisControllerTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :wikis
-   
-   def setup
-diff --git a/test/functional/workflows_controller_test.rb b/test/functional/workflows_controller_test.rb
-index 19187b7..d6078bb 100644
---- a/test/functional/workflows_controller_test.rb
-+++ b/test/functional/workflows_controller_test.rb
-@@ -21,7 +21,7 @@ require 'workflows_controller'
- # Re-raise errors caught by the controller.
- class WorkflowsController; def rescue_action(e) raise e end; end
- 
--class WorkflowsControllerTest < ActionController::TestCase
-+class WorkflowsControllerTest < Test::Unit::TestCase
-   fixtures :roles, :trackers, :workflows
-   
-   def setup
-diff --git a/test/helper_testcase.rb b/test/helper_testcase.rb
-index 1ce9d86..aba6784 100644
---- a/test/helper_testcase.rb
-+++ b/test/helper_testcase.rb
-@@ -4,7 +4,7 @@ class StubController < ApplicationController
-   attr_accessor :request, :url
- end
- 
--class HelperTestCase < ActiveSupport::TestCase
-+class HelperTestCase < Test::Unit::TestCase
- 
-   # Add other helpers here if you need them
-   include ActionView::Helpers::ActiveRecordHelper
-diff --git a/test/integration/issues_test.rb b/test/integration/issues_test.rb
-index 0a35e13..9a73252 100644
---- a/test/integration/issues_test.rb
-+++ b/test/integration/issues_test.rb
-@@ -71,7 +71,7 @@ class IssuesTest < ActionController::IntegrationTest
- 
-     post 'issues/1/edit',
-          :notes => 'Some notes',
--         :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain'), 'description' => 'This is an attachment'}}
-+         :attachments => {'1' => {'file' => test_uploaded_file('testfile.txt', 'text/plain'), 'description' => 'This is an attachment'}}
-     assert_redirected_to "issues/1"
-     
-     # make sure attachment was saved
-diff --git a/test/test_helper.rb b/test/test_helper.rb
-index 07d4af7..c8dae5d 100644
---- a/test/test_helper.rb
-+++ b/test/test_helper.rb
-@@ -24,7 +24,7 @@ require File.join(RAILS_ROOT,'test', 'mocks', 'open_id_authentication_mock.rb')
- require File.expand_path(File.dirname(__FILE__) + '/object_daddy_helpers')
- include ObjectDaddyHelpers
- 
--class ActiveSupport::TestCase
-+class Test::Unit::TestCase
-   # Transactional fixtures accelerate your tests by wrapping each test method
-   # in a transaction that's rolled back on completion.  This ensures that the
-   # test database remains unchanged so your fixtures don't have to be reloaded
-@@ -57,8 +57,8 @@ class ActiveSupport::TestCase
-     assert_equal login, User.find(session[:user_id]).login
-   end
-   
--  def uploaded_test_file(name, mime)
--    ActionController::TestUploadedFile.new(ActiveSupport::TestCase.fixture_path + "/files/#{name}", mime)
-+  def test_uploaded_file(name, mime)
-+    ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + "/files/#{name}", mime)
-   end
-   
-   # Use a temporary directory for attachment related tests
-diff --git a/test/unit/activity_test.rb b/test/unit/activity_test.rb
-index 86a07e6..0b1773d 100644
---- a/test/unit/activity_test.rb
-+++ b/test/unit/activity_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class ActivityTest < ActiveSupport::TestCase
-+class ActivityTest < Test::Unit::TestCase
-   fixtures :projects, :versions, :attachments, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
-            :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages
- 
-diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb
-index 7b289d5..ff1ee90 100644
---- a/test/unit/attachment_test.rb
-+++ b/test/unit/attachment_test.rb
-@@ -19,7 +19,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class AttachmentTest < ActiveSupport::TestCase
-+class AttachmentTest < Test::Unit::TestCase
-   fixtures :issues, :users
-   
-   def setup
-@@ -27,14 +27,14 @@ class AttachmentTest < ActiveSupport::TestCase
- 
-   def test_create
-     a = Attachment.new(:container => Issue.find(1),
--                       :file => uploaded_test_file("testfile.txt", "text/plain"),
-+                       :file => test_uploaded_file("testfile.txt", "text/plain"),
-                        :author => User.find(1))
-     assert a.save
-     assert_equal 'testfile.txt', a.filename
-     assert_equal 59, a.filesize
-     assert_equal 'text/plain', a.content_type
-     assert_equal 0, a.downloads
--    assert_equal Digest::MD5.hexdigest(uploaded_test_file("testfile.txt", "text/plain").read), a.digest
-+    assert_equal Digest::MD5.hexdigest(test_uploaded_file("testfile.txt", "text/plain").read), a.digest
-     assert File.exist?(a.diskfile)
-   end
-   
-diff --git a/test/unit/auth_source_ldap_test.rb b/test/unit/auth_source_ldap_test.rb
-index d0f7a6e..30abd5d 100644
---- a/test/unit/auth_source_ldap_test.rb
-+++ b/test/unit/auth_source_ldap_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class AuthSourceLdapTest < ActiveSupport::TestCase
-+class AuthSourceLdapTest < Test::Unit::TestCase
- 
-   def setup
-   end
-diff --git a/test/unit/board_test.rb b/test/unit/board_test.rb
-index 569c462..3ba4b2d 100644
---- a/test/unit/board_test.rb
-+++ b/test/unit/board_test.rb
-@@ -1,6 +1,6 @@
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class BoardTest < ActiveSupport::TestCase
-+class BoardTest < Test::Unit::TestCase
-   fixtures :projects, :boards, :messages
- 
-   def setup
-diff --git a/test/unit/calendar_test.rb b/test/unit/calendar_test.rb
-index 05e1d0b..98d8569 100644
---- a/test/unit/calendar_test.rb
-+++ b/test/unit/calendar_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class CalendarTest < ActiveSupport::TestCase
-+class CalendarTest < Test::Unit::TestCase
-   
-   def test_monthly
-     c = Redmine::Helpers::Calendar.new(Date.today, :fr, :month)
-diff --git a/test/unit/changeset_test.rb b/test/unit/changeset_test.rb
-index 02736a9..a747236 100644
---- a/test/unit/changeset_test.rb
-+++ b/test/unit/changeset_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class ChangesetTest < ActiveSupport::TestCase
-+class ChangesetTest < Test::Unit::TestCase
-   fixtures :projects, :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :users, :members, :member_roles, :trackers
- 
-   def setup
-diff --git a/test/unit/comment_test.rb b/test/unit/comment_test.rb
-index 0a62148..c07ee82 100644
---- a/test/unit/comment_test.rb
-+++ b/test/unit/comment_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class CommentTest < ActiveSupport::TestCase
-+class CommentTest < Test::Unit::TestCase
-   fixtures :users, :news, :comments
- 
-   def setup
-diff --git a/test/unit/custom_field_test.rb b/test/unit/custom_field_test.rb
-index 513c6fb..2f17d99 100644
---- a/test/unit/custom_field_test.rb
-+++ b/test/unit/custom_field_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class CustomFieldTest < ActiveSupport::TestCase
-+class CustomFieldTest < Test::Unit::TestCase
-   fixtures :custom_fields
-   
-   def test_create
-diff --git a/test/unit/custom_value_test.rb b/test/unit/custom_value_test.rb
-index 332c926..f014ded 100644
---- a/test/unit/custom_value_test.rb
-+++ b/test/unit/custom_value_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class CustomValueTest < ActiveSupport::TestCase
-+class CustomValueTest < Test::Unit::TestCase
-   fixtures :custom_fields, :custom_values, :users
- 
-   def test_string_field_validation_with_blank_value
-diff --git a/test/unit/default_data_test.rb b/test/unit/default_data_test.rb
-index a63d205..457f885 100644
---- a/test/unit/default_data_test.rb
-+++ b/test/unit/default_data_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class DefaultDataTest < ActiveSupport::TestCase
-+class DefaultDataTest < Test::Unit::TestCase
-   include Redmine::I18n
-   fixtures :roles
-   
-diff --git a/test/unit/document_category_test.rb b/test/unit/document_category_test.rb
-index 3237e96..1345380 100644
---- a/test/unit/document_category_test.rb
-+++ b/test/unit/document_category_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class DocumentCategoryTest < ActiveSupport::TestCase
-+class DocumentCategoryTest < Test::Unit::TestCase
-   fixtures :enumerations, :documents, :issues
- 
-   def test_should_be_an_enumeration
-diff --git a/test/unit/document_test.rb b/test/unit/document_test.rb
-index 02ae94d..1950f85 100644
---- a/test/unit/document_test.rb
-+++ b/test/unit/document_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class DocumentTest < ActiveSupport::TestCase
-+class DocumentTest < Test::Unit::TestCase
-   fixtures :projects, :enumerations, :documents
- 
-   def test_create
-diff --git a/test/unit/enabled_module_test.rb b/test/unit/enabled_module_test.rb
-index 5e662eb..3daec43 100644
---- a/test/unit/enabled_module_test.rb
-+++ b/test/unit/enabled_module_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class EnabledModuleTest < ActiveSupport::TestCase
-+class EnabledModuleTest < Test::Unit::TestCase
-   fixtures :projects, :wikis
-   
-   def test_enabling_wiki_should_create_a_wiki
-diff --git a/test/unit/enumeration_test.rb b/test/unit/enumeration_test.rb
-index abb1535..e6711a3 100644
---- a/test/unit/enumeration_test.rb
-+++ b/test/unit/enumeration_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class EnumerationTest < ActiveSupport::TestCase
-+class EnumerationTest < Test::Unit::TestCase
-   fixtures :enumerations, :issues, :custom_fields, :custom_values
- 
-   def setup
-diff --git a/test/unit/filesystem_adapter_test.rb b/test/unit/filesystem_adapter_test.rb
-index 26e97bd..720d1e9 100644
---- a/test/unit/filesystem_adapter_test.rb
-+++ b/test/unit/filesystem_adapter_test.rb
-@@ -2,7 +2,7 @@
- require File.dirname(__FILE__) + '/../test_helper'
- 
- 
--class FilesystemAdapterTest < ActiveSupport::TestCase
-+class FilesystemAdapterTest < Test::Unit::TestCase
-   
-   REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/filesystem_repository'  
-   
-diff --git a/test/unit/git_adapter_test.rb b/test/unit/git_adapter_test.rb
-index 9ab25c1..50bded0 100644
---- a/test/unit/git_adapter_test.rb
-+++ b/test/unit/git_adapter_test.rb
-@@ -1,6 +1,6 @@
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class GitAdapterTest < ActiveSupport::TestCase
-+class GitAdapterTest < Test::Unit::TestCase
-   REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
- 
-   if File.directory?(REPOSITORY_PATH)  
-diff --git a/test/unit/group_test.rb b/test/unit/group_test.rb
-index 4b26f8f..79b9d41 100644
---- a/test/unit/group_test.rb
-+++ b/test/unit/group_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class GroupTest < ActiveSupport::TestCase
-+class GroupTest < Test::Unit::TestCase
-   fixtures :all
- 
-   def test_create
-diff --git a/test/unit/issue_category_test.rb b/test/unit/issue_category_test.rb
-index ebb9f0f..a6edb3c 100644
---- a/test/unit/issue_category_test.rb
-+++ b/test/unit/issue_category_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class IssueCategoryTest < ActiveSupport::TestCase
-+class IssueCategoryTest < Test::Unit::TestCase
-   fixtures :issue_categories, :issues
- 
-   def setup
-diff --git a/test/unit/issue_priority_test.rb b/test/unit/issue_priority_test.rb
-index 6574bf3..e2da1e8 100644
---- a/test/unit/issue_priority_test.rb
-+++ b/test/unit/issue_priority_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class IssuePriorityTest < ActiveSupport::TestCase
-+class IssuePriorityTest < Test::Unit::TestCase
-   fixtures :enumerations, :issues
- 
-   def test_should_be_an_enumeration
-diff --git a/test/unit/issue_status_test.rb b/test/unit/issue_status_test.rb
-index 042f30e..aebe74c 100644
---- a/test/unit/issue_status_test.rb
-+++ b/test/unit/issue_status_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class IssueStatusTest < ActiveSupport::TestCase
-+class IssueStatusTest < Test::Unit::TestCase
-   fixtures :issue_statuses, :issues
- 
-   def test_create
-diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
-index 147d31f..a6710ed 100644
---- a/test/unit/issue_test.rb
-+++ b/test/unit/issue_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class IssueTest < ActiveSupport::TestCase
-+class IssueTest < Test::Unit::TestCase
-   fixtures :projects, :users, :members, :member_roles,
-            :trackers, :projects_trackers,
-            :issue_statuses, :issue_categories, :issue_relations, :workflows, 
-diff --git a/test/unit/journal_test.rb b/test/unit/journal_test.rb
-index 87273ad..147af4a 100644
---- a/test/unit/journal_test.rb
-+++ b/test/unit/journal_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class JournalTest < ActiveSupport::TestCase
-+class JournalTest < Test::Unit::TestCase
-   fixtures :issues, :issue_statuses, :journals, :journal_details
- 
-   def setup
-diff --git a/test/unit/lib/redmine/access_control_test.rb b/test/unit/lib/redmine/access_control_test.rb
-index dcc84c1..5dd87d2 100644
---- a/test/unit/lib/redmine/access_control_test.rb
-+++ b/test/unit/lib/redmine/access_control_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../../../test_helper'
- 
--class Redmine::AccessControlTest < ActiveSupport::TestCase
-+class Redmine::AccessControlTest < Test::Unit::TestCase
-   
-   def setup
-     @access_module = Redmine::AccessControl
-diff --git a/test/unit/lib/redmine/hook_test.rb b/test/unit/lib/redmine/hook_test.rb
-index de74f1e..9313a36 100644
---- a/test/unit/lib/redmine/hook_test.rb
-+++ b/test/unit/lib/redmine/hook_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../../../test_helper'
- 
--class Redmine::Hook::ManagerTest < ActiveSupport::TestCase
-+class Redmine::Hook::ManagerTest < Test::Unit::TestCase
- 
-   fixtures :issues
-   
-diff --git a/test/unit/lib/redmine/i18n_test.rb b/test/unit/lib/redmine/i18n_test.rb
-index 35401f1..8b91359 100644
---- a/test/unit/lib/redmine/i18n_test.rb
-+++ b/test/unit/lib/redmine/i18n_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../../../test_helper'
- 
--class Redmine::I18nTest < ActiveSupport::TestCase
-+class Redmine::I18nTest < Test::Unit::TestCase
-   include Redmine::I18n
-   
-   def setup
-diff --git a/test/unit/lib/redmine/mime_type_test.rb b/test/unit/lib/redmine/mime_type_test.rb
-index 2cf1518..79d0869 100644
---- a/test/unit/lib/redmine/mime_type_test.rb
-+++ b/test/unit/lib/redmine/mime_type_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../../../test_helper'
- 
--class Redmine::MimeTypeTest < ActiveSupport::TestCase
-+class Redmine::MimeTypeTest < Test::Unit::TestCase
-   
-   def test_of
-     to_test = {'test.unk' => nil,
-diff --git a/test/unit/lib/redmine/plugin_test.rb b/test/unit/lib/redmine/plugin_test.rb
-index 234da14..e6237c2 100644
---- a/test/unit/lib/redmine/plugin_test.rb
-+++ b/test/unit/lib/redmine/plugin_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../../../test_helper'
- 
--class Redmine::PluginTest < ActiveSupport::TestCase
-+class Redmine::PluginTest < Test::Unit::TestCase
- 
-   def setup
-     @klass = Redmine::Plugin
-diff --git a/test/unit/lib/redmine/unified_diff_test.rb b/test/unit/lib/redmine/unified_diff_test.rb
-index 5b26cde..5e6ba1a 100644
---- a/test/unit/lib/redmine/unified_diff_test.rb
-+++ b/test/unit/lib/redmine/unified_diff_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../../../test_helper'
- 
--class Redmine::UnifiedDiffTest < ActiveSupport::TestCase
-+class Redmine::UnifiedDiffTest < Test::Unit::TestCase
-   
-   def setup
-   end
-diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb
-index 9b6c28b..9a9d7d8 100644
---- a/test/unit/mail_handler_test.rb
-+++ b/test/unit/mail_handler_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class MailHandlerTest < ActiveSupport::TestCase
-+class MailHandlerTest < Test::Unit::TestCase
-   fixtures :users, :projects, 
-                    :enabled_modules,
-                    :roles,
-diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
-index cc6e6cf..1c9f8ca 100644
---- a/test/unit/mailer_test.rb
-+++ b/test/unit/mailer_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class MailerTest < ActiveSupport::TestCase
-+class MailerTest < Test::Unit::TestCase
-   include Redmine::I18n
-   fixtures :projects, :issues, :users, :members, :member_roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
-   
-diff --git a/test/unit/member_test.rb b/test/unit/member_test.rb
-index 41ac488..5eef6a6 100644
---- a/test/unit/member_test.rb
-+++ b/test/unit/member_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class MemberTest < ActiveSupport::TestCase
-+class MemberTest < Test::Unit::TestCase
-   fixtures :users, :projects, :roles, :members, :member_roles
- 
-   def setup
-diff --git a/test/unit/mercurial_adapter_test.rb b/test/unit/mercurial_adapter_test.rb
-index f7b0d3c..a2673ad 100644
---- a/test/unit/mercurial_adapter_test.rb
-+++ b/test/unit/mercurial_adapter_test.rb
-@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../test_helper'
- begin
-   require 'mocha'
-   
--  class MercurialAdapterTest < ActiveSupport::TestCase
-+  class MercurialAdapterTest < Test::Unit::TestCase
-     
-     TEMPLATES_DIR = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATES_DIR
-     TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME
-diff --git a/test/unit/message_test.rb b/test/unit/message_test.rb
-index 5bce8a8..09857fb 100644
---- a/test/unit/message_test.rb
-+++ b/test/unit/message_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class MessageTest < ActiveSupport::TestCase
-+class MessageTest < Test::Unit::TestCase
-   fixtures :projects, :roles, :members, :member_roles, :boards, :messages, :users, :watchers
- 
-   def setup
-diff --git a/test/unit/news_test.rb b/test/unit/news_test.rb
-index e9d3880..a4fc89e 100644
---- a/test/unit/news_test.rb
-+++ b/test/unit/news_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class NewsTest < ActiveSupport::TestCase
-+class NewsTest < Test::Unit::TestCase
-   fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :news
- 
-   def valid_news
-diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb
-index 082a850..448e06a 100644
---- a/test/unit/project_test.rb
-+++ b/test/unit/project_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class ProjectTest < ActiveSupport::TestCase
-+class ProjectTest < Test::Unit::TestCase
-   fixtures :projects, :enabled_modules, 
-            :issues, :issue_statuses, :journals, :journal_details,
-            :users, :members, :member_roles, :roles, :projects_trackers, :trackers, :boards,
-diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb
-index f1f9397..73efa42 100644
---- a/test/unit/query_test.rb
-+++ b/test/unit/query_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class QueryTest < ActiveSupport::TestCase
-+class QueryTest < Test::Unit::TestCase
-   fixtures :projects, :enabled_modules, :users, :members, :member_roles, :roles, :trackers, :issue_statuses, :issue_categories, :enumerations, :issues, :watchers, :custom_fields, :custom_values, :versions, :queries
- 
-   def test_custom_fields_for_all_projects_should_be_available_in_global_queries
-diff --git a/test/unit/repository_bazaar_test.rb b/test/unit/repository_bazaar_test.rb
-index c29e04e..b7a3cf9 100644
---- a/test/unit/repository_bazaar_test.rb
-+++ b/test/unit/repository_bazaar_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RepositoryBazaarTest < ActiveSupport::TestCase
-+class RepositoryBazaarTest < Test::Unit::TestCase
-   fixtures :projects
-   
-   # No '..' in the repository path
-diff --git a/test/unit/repository_cvs_test.rb b/test/unit/repository_cvs_test.rb
-index d240a6e..47c4070 100644
---- a/test/unit/repository_cvs_test.rb
-+++ b/test/unit/repository_cvs_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- require 'pp'
--class RepositoryCvsTest < ActiveSupport::TestCase
-+class RepositoryCvsTest < Test::Unit::TestCase
-   fixtures :projects
-   
-   # No '..' in the repository path
-diff --git a/test/unit/repository_darcs_test.rb b/test/unit/repository_darcs_test.rb
-index b9ad95d..0c8c9a1 100644
---- a/test/unit/repository_darcs_test.rb
-+++ b/test/unit/repository_darcs_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RepositoryDarcsTest < ActiveSupport::TestCase
-+class RepositoryDarcsTest < Test::Unit::TestCase
-   fixtures :projects
-   
-   # No '..' in the repository path
-diff --git a/test/unit/repository_filesystem_test.rb b/test/unit/repository_filesystem_test.rb
-index 7688dd4..6b643f9 100644
---- a/test/unit/repository_filesystem_test.rb
-+++ b/test/unit/repository_filesystem_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RepositoryFilesystemTest < ActiveSupport::TestCase
-+class RepositoryFilesystemTest < Test::Unit::TestCase
-   fixtures :projects
-   
-   # No '..' in the repository path
-diff --git a/test/unit/repository_git_test.rb b/test/unit/repository_git_test.rb
-index 5ebbb00..3827743 100644
---- a/test/unit/repository_git_test.rb
-+++ b/test/unit/repository_git_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RepositoryGitTest < ActiveSupport::TestCase
-+class RepositoryGitTest < Test::Unit::TestCase
-   fixtures :projects
-   
-   # No '..' in the repository path
-diff --git a/test/unit/repository_mercurial_test.rb b/test/unit/repository_mercurial_test.rb
-index 6ce3d5f..0f993ac 100644
---- a/test/unit/repository_mercurial_test.rb
-+++ b/test/unit/repository_mercurial_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RepositoryMercurialTest < ActiveSupport::TestCase
-+class RepositoryMercurialTest < Test::Unit::TestCase
-   fixtures :projects
-   
-   # No '..' in the repository path
-diff --git a/test/unit/repository_subversion_test.rb b/test/unit/repository_subversion_test.rb
-index f0ad212..006b25b 100644
---- a/test/unit/repository_subversion_test.rb
-+++ b/test/unit/repository_subversion_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RepositorySubversionTest < ActiveSupport::TestCase
-+class RepositorySubversionTest < Test::Unit::TestCase
-   fixtures :projects
-   
-   # No '..' in the repository path for svn
-diff --git a/test/unit/repository_test.rb b/test/unit/repository_test.rb
-index 6512c06..9a2cfa9 100644
---- a/test/unit/repository_test.rb
-+++ b/test/unit/repository_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RepositoryTest < ActiveSupport::TestCase
-+class RepositoryTest < Test::Unit::TestCase
-   fixtures :projects,
-            :trackers,
-            :projects_trackers,
-diff --git a/test/unit/role_test.rb b/test/unit/role_test.rb
-index 1e76dd8..cab668c 100644
---- a/test/unit/role_test.rb
-+++ b/test/unit/role_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class RoleTest < ActiveSupport::TestCase
-+class RoleTest < Test::Unit::TestCase
-   fixtures :roles, :workflows
- 
-   def test_copy_workflows
-diff --git a/test/unit/search_test.rb b/test/unit/search_test.rb
-index 71ed7ad..46d7694 100644
---- a/test/unit/search_test.rb
-+++ b/test/unit/search_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class SearchTest < ActiveSupport::TestCase
-+class SearchTest < Test::Unit::TestCase
-   fixtures :users,
-            :members, 
-            :member_roles,
-diff --git a/test/unit/setting_test.rb b/test/unit/setting_test.rb
-index 25ec417..34d07c1 100644
---- a/test/unit/setting_test.rb
-+++ b/test/unit/setting_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class SettingTest < ActiveSupport::TestCase
-+class SettingTest < Test::Unit::TestCase
-   
-   def test_read_default
-     assert_equal "Redmine", Setting.app_title
-diff --git a/test/unit/subversion_adapter_test.rb b/test/unit/subversion_adapter_test.rb
-index ddef52d..9f20883 100644
---- a/test/unit/subversion_adapter_test.rb
-+++ b/test/unit/subversion_adapter_test.rb
-@@ -19,7 +19,7 @@ require 'mkmf'
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class SubversionAdapterTest < ActiveSupport::TestCase
-+class SubversionAdapterTest < Test::Unit::TestCase
-   
-   if find_executable0('svn')
-     def test_client_version
-diff --git a/test/unit/testing_test.rb b/test/unit/testing_test.rb
-index 7c78288..8ccad5b 100644
---- a/test/unit/testing_test.rb
-+++ b/test/unit/testing_test.rb
-@@ -18,7 +18,7 @@
- require File.dirname(__FILE__) + '/../test_helper'
- 
- # Test case that checks that the testing infrastructure is setup correctly.
--class TestingTest < ActiveSupport::TestCase
-+class TestingTest < Test::Unit::TestCase
-   def test_working
-     assert true
-   end
-diff --git a/test/unit/time_entry_activity_test.rb b/test/unit/time_entry_activity_test.rb
-index 16077c0..759d127 100644
---- a/test/unit/time_entry_activity_test.rb
-+++ b/test/unit/time_entry_activity_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class TimeEntryActivityTest < ActiveSupport::TestCase
-+class TimeEntryActivityTest < Test::Unit::TestCase
-   fixtures :enumerations, :time_entries
- 
-   def test_should_be_an_enumeration
-diff --git a/test/unit/time_entry_test.rb b/test/unit/time_entry_test.rb
-index 7ac1c02..dd54fd1 100644
---- a/test/unit/time_entry_test.rb
-+++ b/test/unit/time_entry_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class TimeEntryTest < ActiveSupport::TestCase
-+class TimeEntryTest < Test::Unit::TestCase
-   fixtures :issues, :projects, :users, :time_entries
- 
-   def test_hours_format
-diff --git a/test/unit/token_test.rb b/test/unit/token_test.rb
-index 42791e6..64ac85a 100644
---- a/test/unit/token_test.rb
-+++ b/test/unit/token_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class TokenTest < ActiveSupport::TestCase
-+class TokenTest < Test::Unit::TestCase
-   fixtures :tokens
- 
-   def test_create
-diff --git a/test/unit/tracker_test.rb b/test/unit/tracker_test.rb
-index efc2aa7..6dab889 100644
---- a/test/unit/tracker_test.rb
-+++ b/test/unit/tracker_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class TrackerTest < ActiveSupport::TestCase
-+class TrackerTest < Test::Unit::TestCase
-   fixtures :trackers, :workflows
- 
-   def test_copy_workflows
-diff --git a/test/unit/user_preference_test.rb b/test/unit/user_preference_test.rb
-index 19dc63f..cf6787b 100644
---- a/test/unit/user_preference_test.rb
-+++ b/test/unit/user_preference_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class UserPreferenceTest < ActiveSupport::TestCase
-+class UserPreferenceTest < Test::Unit::TestCase
-   fixtures :users, :user_preferences
- 
-   def test_create
-diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
-index 1555c0c..f802460 100644
---- a/test/unit/user_test.rb
-+++ b/test/unit/user_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class UserTest < ActiveSupport::TestCase
-+class UserTest < Test::Unit::TestCase
-   fixtures :users, :members, :projects, :roles, :member_roles
- 
-   def setup
-diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb
-index 7df8579..6c5297f 100644
---- a/test/unit/version_test.rb
-+++ b/test/unit/version_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class VersionTest < ActiveSupport::TestCase
-+class VersionTest < Test::Unit::TestCase
-   fixtures :projects, :users, :issues, :issue_statuses, :trackers, :enumerations, :versions
- 
-   def setup
-diff --git a/test/unit/watcher_test.rb b/test/unit/watcher_test.rb
-index f49365e..9566e6a 100644
---- a/test/unit/watcher_test.rb
-+++ b/test/unit/watcher_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class WatcherTest < ActiveSupport::TestCase
-+class WatcherTest < Test::Unit::TestCase
-   fixtures :issues, :users
- 
-   def setup
-diff --git a/test/unit/wiki_content_test.rb b/test/unit/wiki_content_test.rb
-index 372121b..f3f8bc0 100644
---- a/test/unit/wiki_content_test.rb
-+++ b/test/unit/wiki_content_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class WikiContentTest < ActiveSupport::TestCase
-+class WikiContentTest < Test::Unit::TestCase
-   fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, :users
- 
-   def setup
-diff --git a/test/unit/wiki_page_test.rb b/test/unit/wiki_page_test.rb
-index 5c0def1..5fdb4d1 100644
---- a/test/unit/wiki_page_test.rb
-+++ b/test/unit/wiki_page_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class WikiPageTest < ActiveSupport::TestCase
-+class WikiPageTest < Test::Unit::TestCase
-   fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
- 
-   def setup
-diff --git a/test/unit/wiki_redirect_test.rb b/test/unit/wiki_redirect_test.rb
-index 7e80638..12f6b7d 100644
---- a/test/unit/wiki_redirect_test.rb
-+++ b/test/unit/wiki_redirect_test.rb
-@@ -17,7 +17,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class WikiRedirectTest < ActiveSupport::TestCase
-+class WikiRedirectTest < Test::Unit::TestCase
-   fixtures :projects, :wikis
- 
-   def setup
-diff --git a/test/unit/wiki_test.rb b/test/unit/wiki_test.rb
-index 6595e6d..ece0c81 100644
---- a/test/unit/wiki_test.rb
-+++ b/test/unit/wiki_test.rb
-@@ -19,7 +19,7 @@
- 
- require File.dirname(__FILE__) + '/../test_helper'
- 
--class WikiTest < ActiveSupport::TestCase
-+class WikiTest < Test::Unit::TestCase
-   fixtures :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
-   
-   def test_create
-diff --git a/vendor/plugins/engines/Rakefile b/vendor/plugins/engines/Rakefile
-index 6c621de..b964022 100644
---- a/vendor/plugins/engines/Rakefile
-+++ b/vendor/plugins/engines/Rakefile
-@@ -172,29 +172,16 @@ namespace :test do
-   
-   desc 'Update the plugin and tests files in the test application from the plugin'
-   task :mirror_engine_files => [:test_app, :copy_engines_plugin] do
--    puts "> Tweaking generated application to be suitable for testing"
--    
--    # Replace the Rails plugin loader with the engines one.
-+    puts "> Modifying default config files to load engines plugin"
-     insert_line("require File.join(File.dirname(__FILE__), '../vendor/plugins/engines/boot')",
-                 :into => 'config/environment.rb',
-                 :after => "require File.join(File.dirname(__FILE__), 'boot')")
--    
--    # Add the engines test helper to handle fixtures & stuff.
-+                
-+    insert_line('map.from_plugin :test_routing', :into => 'config/routes.rb', 
-+                :after => /\AActionController::Routing::Routes/)
-+                
-     insert_line("require 'engines_test_helper'", :into => 'test/test_helper.rb')
-     
--    # Run engine plugin tests when running the application 
--    insert_line("task :test => ['test:engines:all']", :into => 'Rakefile')
--    
--    # We want exceptions to be raised
--    insert_line("def rescue_action(e) raise e end;", 
--                :into => "app/controllers/application_controller.rb",
--                :after => "class ApplicationController < ActionController::Base")
--    
--    # We need this method to test where actions are being rendered from.
--    insert_line("include RenderInformation", 
--                :into => "app/controllers/application_controller.rb",
--                :after => "class ApplicationController < ActionController::Base")
--    
-     puts "> Mirroring test application files into #{test_app_dir}"
-     mirror_test_files('app')
-     mirror_test_files('lib')
-diff --git a/vendor/plugins/engines/about.yml b/vendor/plugins/engines/about.yml
-index 13f55ec..619bd5a 100644
---- a/vendor/plugins/engines/about.yml
-+++ b/vendor/plugins/engines/about.yml
-@@ -4,4 +4,4 @@ homepage: http://www.rails-engines.org
- summary: Enhances the plugin mechanism to perform more flexible sharing
- description: The Rails Engines plugin allows the sharing of almost any type of code or asset that you could use in a Rails application, including controllers, models, stylesheets, and views.
- license: MIT
--version: 2.3.2
-\ No newline at end of file
-+version: 2.1.0
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/boot.rb b/vendor/plugins/engines/boot.rb
-index 7dd90d1..3ee90ed 100644
---- a/vendor/plugins/engines/boot.rb
-+++ b/vendor/plugins/engines/boot.rb
-@@ -1,7 +1,7 @@
- begin
-   require 'rails/version'
--  unless Rails::VERSION::MAJOR >= 2 && Rails::VERSION::MINOR >= 3 && Rails::VERSION::TINY >= 2
--    raise "This version of the engines plugin requires Rails 2.3.2 or later!"
-+  unless Rails::VERSION::MAJOR >= 2 && Rails::VERSION::MINOR >= 2 && Rails::VERSION::TINY >= 0
-+    raise "This version of the engines plugin requires Rails 2.2.0 or later!"
-   end
- end
- 
-diff --git a/vendor/plugins/engines/init.rb b/vendor/plugins/engines/init.rb
-index 2841816..df94526 100644
---- a/vendor/plugins/engines/init.rb
-+++ b/vendor/plugins/engines/init.rb
-@@ -1,5 +1,5 @@
- # Only call Engines.init once, in the after_initialize block so that Rails
- # plugin reloading works when turned on
- config.after_initialize do
--  Engines.init(initializer) if defined? :Engines
--end
-\ No newline at end of file
-+  Engines.init if defined? :Engines
-+end
-diff --git a/vendor/plugins/engines/lib/engines.rb b/vendor/plugins/engines/lib/engines.rb
-index d601710..cb97e47 100644
---- a/vendor/plugins/engines/lib/engines.rb
-+++ b/vendor/plugins/engines/lib/engines.rb
-@@ -43,7 +43,7 @@ module Engines
-   
-   # List of extensions to load, can be changed in init.rb before calling Engines.init
-   mattr_accessor :rails_extensions
--  self.rails_extensions = %w(asset_helpers form_tag_helpers migrations dependencies)
-+  self.rails_extensions = %w(action_mailer asset_helpers form_tag_helpers routing migrations dependencies)
-   
-   # The name of the public directory to mirror public engine assets into.
-   # Defaults to <tt>RAILS_ROOT/public/plugin_assets</tt>.
-@@ -68,7 +68,7 @@ module Engines
-   mattr_accessor :disable_application_code_loading
-   self.disable_application_code_loading = false
-   
--  # Set this to true if code should not be mixed (i.e. it will be loaded
-+  # Set this ti true if code should not be mixed (i.e. it will be loaded
-   # from the first valid path on $LOAD_PATH)
-   mattr_accessor :disable_code_mixing
-   self.disable_code_mixing = false
-@@ -81,7 +81,7 @@ module Engines
-   self.code_mixing_file_types = %w(controller helper)
-   
-   class << self
--    def init(initializer)
-+    def init
-       load_extensions
-       Engines::Assets.initialize_base_public_directory
-     end
-@@ -124,9 +124,9 @@ module Engines
-     # and that they are placed within plugin/app/things (the pluralized form of 'thing').
-     # 
-     # It's important to note that you'll also want to ensure that the "things" are
--    # on your load path by including them in Rails load path mechanism, e.g. in init.rb:
-+    # on your load path in your plugin's init.rb:
-     #
--    #  ActiveSupport::Dependencies.load_paths << File.join(File.dirname(__FILE__), 'app', 'things'))
-+    #   Rails.plugins[:my_plugin].code_paths << "app/things"
-     #
-     def mix_code_from(*types)
-       self.code_mixing_file_types += types.map { |x| x.to_s.singularize }
-diff --git a/vendor/plugins/engines/lib/engines/plugin.rb b/vendor/plugins/engines/lib/engines/plugin.rb
-index c52bbb0..488bcd4 100644
---- a/vendor/plugins/engines/lib/engines/plugin.rb
-+++ b/vendor/plugins/engines/lib/engines/plugin.rb
-@@ -4,9 +4,23 @@
- #
- #   Engines.plugins[:plugin_name]
- #
-+# If this plugin contains paths in directories other than <tt>app/controllers</tt>,
-+# <tt>app/helpers</tt>, <tt>app/models</tt> and <tt>components</tt>, authors can
-+# declare this by adding extra paths to #code_paths:
-+#
-+#    Rails.plugin[:my_plugin].code_paths << "app/sweepers" << "vendor/my_lib"
-+#
- # Other properties of the Plugin instance can also be set.
- module Engines
-   class Plugin < Rails::Plugin    
-+    # Plugins can add code paths to this attribute in init.rb if they 
-+    # need plugin directories to be added to the load path, i.e.
-+    #
-+    #   plugin.code_paths << 'app/other_classes'
-+    #
-+    # Defaults to ["app/controllers", "app/helpers", "app/models", "components"]
-+    attr_accessor :code_paths
-+
-     # Plugins can add paths to this attribute in init.rb if they need
-     # controllers loaded from additional locations. 
-     attr_accessor :controller_paths
-@@ -18,6 +32,16 @@ module Engines
-     attr_accessor :public_directory   
-     
-     protected
-+  
-+      # The default set of code paths which will be added to $LOAD_PATH
-+      # and Dependencies.load_paths
-+      def default_code_paths
-+        # lib will actually be removed from the load paths when we call
-+        # uniq! in #inject_into_load_paths, but it's important to keep it
-+        # around (for the documentation tasks, for instance).
-+        %w(app/controllers app/helpers app/models components lib)
-+      end
-+    
-       # The default set of code paths which will be added to the routing system
-       def default_controller_paths
-         %w(app/controllers components)
-@@ -34,23 +58,41 @@ module Engines
-   
-     def initialize(directory)
-       super directory
-+      @code_paths = default_code_paths
-       @controller_paths = default_controller_paths
-       @public_directory = default_public_directory
-     end
-   
-+    # Returns a list of paths this plugin wishes to make available in $LOAD_PATH
-+    #
-+    # Overwrites the correspondend method in the superclass  
-+    def load_paths
-+      report_nonexistant_or_empty_plugin! unless valid?
-+      select_existing_paths :code_paths
-+    end
-+    
-     # Extends the superclass' load method to additionally mirror public assets
-     def load(initializer)
-       return if loaded?
-       super initializer
-+      add_plugin_view_paths
-       add_plugin_locale_paths
-       Assets.mirror_files_for(self)
-     end    
-   
--    # select those paths that actually exist in the plugin's directory
-+    # for code_paths and controller_paths select those paths that actually 
-+    # exist in the plugin's directory
-     def select_existing_paths(name)
-       Engines.select_existing_paths(self.send(name).map { |p| File.join(directory, p) })
-     end    
- 
-+    def add_plugin_view_paths
-+      view_path = File.join(directory, 'app', 'views')
-+      if File.exist?(view_path)
-+        ActionController::Base.prepend_view_path(view_path) # push it just underneath the app
-+      end
-+    end
-+
-     def add_plugin_locale_paths
-       locale_path = File.join(directory, 'locales')
-       return unless File.exists?(locale_path)
-@@ -70,6 +112,11 @@ module Engines
-       "#{File.basename(Engines.public_directory)}/#{name}"
-     end
-     
-+    # The path to this plugin's routes file
-+    def routes_path
-+      File.join(directory, "routes.rb")
-+    end
-+
-     # The directory containing this plugin's migrations (<tt>plugin/db/migrate</tt>)
-     def migration_directory
-       File.join(self.directory, 'db', 'migrate')
-diff --git a/vendor/plugins/engines/lib/engines/plugin/loader.rb b/vendor/plugins/engines/lib/engines/plugin/loader.rb
-index e316e47..a5be596 100644
---- a/vendor/plugins/engines/lib/engines/plugin/loader.rb
-+++ b/vendor/plugins/engines/lib/engines/plugin/loader.rb
-@@ -5,7 +5,14 @@ module Engines
-         def register_plugin_as_loaded(plugin)
-           super plugin
-           Engines.plugins << plugin
-+          register_to_routing(plugin)
-         end    
-+        
-+        # Registers the plugin's controller_paths for the routing system. 
-+        def register_to_routing(plugin)
-+          initializer.configuration.controller_paths += plugin.select_existing_paths(:controller_paths)
-+          initializer.configuration.controller_paths.uniq!
-+        end
-     end
-   end
- end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/lib/engines/rails_extensions/action_mailer.rb b/vendor/plugins/engines/lib/engines/rails_extensions/action_mailer.rb
-new file mode 100644
-index 0000000..32198d8
---- /dev/null
-+++ b/vendor/plugins/engines/lib/engines/rails_extensions/action_mailer.rb
-@@ -0,0 +1,82 @@
-+# The way ActionMailer is coded in terms of finding templates is very restrictive, to the point
-+# where all templates for rendering must exist under the single base path. This is difficult to
-+# work around without re-coding significant parts of the action mailer code.
-+#
-+# ---
-+#
-+# The MailTemplates module overrides two (private) methods from ActionMailer to enable mail 
-+# templates within plugins:
-+#
-+# [+template_path+]             which now produces the contents of #template_paths
-+# [+initialize_template_class+] which now find the first matching template and creates 
-+#                               an ActionVew::Base instance with the correct view_paths
-+#
-+# Ideally ActionMailer would use the same template-location logic as ActionView, and the same
-+# view paths as ActionController::Base.view_paths, but it currently does not.
-+module Engines::RailsExtensions::ActionMailer
-+  def self.included(base) #:nodoc:
-+    base.class_eval do
-+      alias_method_chain :template_path, :engine_additions
-+      alias_method_chain :initialize_template_class, :engine_additions
-+    end
-+  end
-+
-+  private
-+  
-+    #--
-+    # ActionMailer::Base#create uses two mechanisms to determine the proper template file(s)
-+    # to load. Firstly, it searches within the template_root for files that much the explicit
-+    # (or implicit) part encodings (like signup.text.plain.erb for the signup action). 
-+    # This is how implicit multipart emails are built, by the way.
-+    #
-+    # Secondly, it then creates an ActionMailer::Base instance with it's view_paths parameter
-+    # set to the template_root, so that ActionMailer will then take over rendering the
-+    # templates.
-+    #
-+    # Ideally, ActionMailer would pass the same set of view paths as it gets in a normal
-+    # request (i.e. ActionController::Base.view_paths), so that all possible view paths
-+    # were searched. However, this seems to introduce some problems with helper modules.
-+    #
-+    # So instead, and because we have to fool these two independent parts of ActionMailer,
-+    # we fudge with the mechanisms it uses to find the templates (via template_paths, and
-+    # template_path_with_engine_additions), and then intercept the creation of the ActionView
-+    # instance so we can set the view_paths (in initialize_template_class_with_engine_additions).
-+    #++
-+  
-+    # Returns all possible template paths for the current mailer, including those
-+    # within the loaded plugins.
-+    def template_paths
-+      paths = Engines.plugins.by_precedence.map { |p| "#{p.directory}/app/views/#{mailer_name}" }
-+      paths.unshift(template_path_without_engine_additions) unless Engines.disable_application_view_loading
-+      paths
-+    end
-+
-+    # Return something that Dir[] can glob against. This method is called in 
-+    # ActionMailer::Base#create! and used as part of an argument to Dir. We can
-+    # take advantage of this by using some of the features of Dir.glob to search
-+    # multiple paths for matching files.
-+    def template_path_with_engine_additions
-+      "{#{template_paths.join(",")}}"
-+    end
-+
-+    # Return an instance of ActionView::Base with the view paths set to all paths
-+    # in ActionController::Base.view_paths (i.e. including all plugin view paths)
-+    def initialize_template_class_with_engine_additions(assigns)
-+      # I'd like to just return this, but I get problems finding methods in helper
-+      # modules if the method implemention from the regular class is not called
-+      # 
-+      # ActionView::Base.new(ActionController::Base.view_paths.dup, assigns, self)
-+      renderer = initialize_template_class_without_engine_additions(assigns)
-+      renderer.view_paths.unshift(*ActionController::Base.view_paths.dup)
-+      renderer
-+    end
-+end
-+
-+# We don't need to do this if ActionMailer hasn't been loaded.
-+if Object.const_defined?(:ActionMailer) 
-+  module ::ActionMailer #:nodoc:
-+    class Base #:nodoc:
-+      include Engines::RailsExtensions::ActionMailer
-+    end
-+  end
-+end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb b/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb
-new file mode 100644
-index 0000000..aed85ff
---- /dev/null
-+++ b/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb
-@@ -0,0 +1,83 @@
-+# Effective use of Rails' routes can help create a tidy and elegant set of URLs,
-+# and is a significant part of creating an external API for your web application.
-+# 
-+# When developing plugins which contain controllers, it seems obvious that including
-+# the corresponding routes would be extremely useful. This is particularly true
-+# when exposing RESTful resources using the new REST-ian features of Rails.
-+#
-+# == Including routes in your plugin
-+#
-+# The engines plugin makes it possible to include a set of routes within your plugin
-+# very simply, as it turns out. Include a <tt>routes.rb</tt> file like the one below 
-+# at the root of your plugin (along-side <tt>init.rb</tt> and <tt>lib/</tt>):
-+# 
-+#   connect "/login", :controller => "account", :action => "login"
-+#
-+#   # add a named route
-+#   logout "/logout", :controller => "account", :action => "logout"
-+#
-+#   # some restful stuff
-+#   resources :things do |t|
-+#     t.resources :other_things
-+#   end
-+# 
-+# Everywhere in a normal <tt>RAILS_ROOT/config/routes.rb</tt> file 
-+# where you might have <tt>map.connect</tt>, you just use <tt>connect</tt> in your 
-+# plugin's <tt>routes.rb</tt>.
-+# 
-+# === Hooking it up in your application
-+#
-+# While it would be possible to have each plugin's routes automagically included into
-+# the application's route set, to do so would actually be a stunningly bad idea. Route
-+# priority is the key issue here. You, the application developer, needs to be in complete
-+# control when it comes to specifying the priority of routes in your application, since 
-+# the ordering of your routes directly affects how Rails will interpret incoming requests.
-+# 
-+# To add plugin routes into your application's <tt>routes.rb</tt> file, you need to explicitly 
-+# map them in using the Engines::RailsExtensions::Routing#from_plugin method:
-+# 
-+#   ApplicationController::Routing::Routes.draw do |map|
-+#
-+#     map.connect "/app_stuff", :controller => "application_thing" # etc...
-+#
-+#     # This line includes the routes from the given plugin at this point, giving you
-+#     # control over the priority of your application routes 
-+#     map.from_plugin :your_plugin
-+#
-+#     map.connect ":controller/:action/:id"
-+#   end
-+# 
-+# By including routes in plugins which have controllers, you can now share in a simple way 
-+# a compact and elegant URL scheme which corresponds to those controllers.
-+#
-+# ---
-+#
-+# The Engines::RailsExtensions::Routing module defines extensions to Rails' 
-+# routing (ActionController::Routing) mechanism such that routes can be loaded 
-+# from a given plugin.
-+#
-+# The key method is Engines::RailsExtensions::Routing#from_plugin, which can be called 
-+# within your application's <tt>config/routes.rb</tt> file to load plugin routes at that point.
-+#
-+module Engines::RailsExtensions::Routing
-+  # Loads the set of routes from within a plugin and evaluates them at this
-+  # point within an application's main <tt>routes.rb</tt> file.
-+  #
-+  # Plugin routes are loaded from <tt><plugin_root>/routes.rb</tt>.
-+  def from_plugin(name)
-+    map = self # to make 'map' available within the plugin route file
-+    routes_path = Engines.plugins[name].routes_path
-+    eval(IO.read(routes_path), binding, routes_path) if File.file?(routes_path)
-+  end
-+end
-+
-+  
-+module ::ActionController #:nodoc:
-+  module Routing #:nodoc:
-+    class RouteSet #:nodoc:
-+      class Mapper #:nodoc:
-+        include Engines::RailsExtensions::Routing
-+      end
-+    end
-+  end
-+end
-diff --git a/vendor/plugins/engines/lib/engines/testing.rb b/vendor/plugins/engines/lib/engines/testing.rb
-index c411f83..f7833c3 100644
---- a/vendor/plugins/engines/lib/engines/testing.rb
-+++ b/vendor/plugins/engines/lib/engines/testing.rb
-@@ -67,14 +67,10 @@ module Engines::Testing
-   # This method is called by the engines-supplied plugin testing rake tasks
-   def self.setup_plugin_fixtures(plugins = Engines.plugins.by_precedence)
-     
--    # First, clear the directory
--    Dir.glob("#{self.temporary_fixtures_directory}/*.yml").each{|fixture| File.delete(fixture)}
--    
-     # Copy all plugin fixtures, and then the application fixtures, into this directory
-     plugins.each do |plugin| 
-       plugin_fixtures_directory =  File.join(plugin.directory, "test", "fixtures")
--      plugin_app_directory =  File.join(plugin.directory, "app")
--      if File.directory?(plugin_app_directory) && File.directory?(plugin_fixtures_directory)
-+      if File.directory?(plugin_fixtures_directory)
-         Engines.mirror_files_from(plugin_fixtures_directory, self.temporary_fixtures_directory)
-       end
-     end
-@@ -88,14 +84,4 @@ module Engines::Testing
-     ActiveSupport::TestCase.fixture_path = self.temporary_fixtures_directory
-     $LOAD_PATH.unshift self.temporary_fixtures_directory
-   end
--  
--  # overridden test should be in test/{unit,functional,integration}/{plugin_name}/{test_name}
--  def self.override_tests_from_app
--    filename = caller.first.split(":").first
--    plugin_name = filename.split("/")[-4]
--    test_kind = filename.split("/")[-2]
--    override_file = File.expand_path(File.join(File.dirname(filename), "..", "..", "..", "..", "..", "test", 
--                                               test_kind, plugin_name, File.basename(filename)))
--    load(override_file) if File.exist?(override_file)
--  end
- end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/tasks/engines.rake b/vendor/plugins/engines/tasks/engines.rake
-index 48e3170..0ffd7e6 100644
---- a/vendor/plugins/engines/tasks/engines.rake
-+++ b/vendor/plugins/engines/tasks/engines.rake
-@@ -118,10 +118,10 @@ namespace :db do
-     end
-     
-     desc 'Migrate a specified plugin.'
--    task(:plugin => :environment) do
--      name = ENV['NAME']
-+    task({:plugin => :environment}, :name, :version) do |task, args|
-+      name = args[:name] || ENV['NAME']
-       if plugin = Engines.plugins[name]
--        version = ENV['VERSION']
-+        version = args[:version] || ENV['VERSION']
-         puts "Migrating #{plugin.name} to " + (version ? "version #{version}" : 'latest version') + " ..."
-         plugin.migrate(version ? version.to_i : nil)
-       else
-@@ -152,8 +152,8 @@ end
- 
- # this is just a modification of the original task in railties/lib/tasks/documentation.rake, 
- # because the default task doesn't support subdirectories like <plugin>/app or
--# <plugin>/component. These tasks now include every file under a plugin's load paths (see
--# Plugin#load_paths).
-+# <plugin>/component. These tasks now include every file under a plugin's code paths (see
-+# Plugin#code_paths).
- namespace :doc do
- 
-   plugins = FileList['vendor/plugins/**'].collect { |plugin| File.basename(plugin) }
-@@ -172,9 +172,9 @@ namespace :doc do
-         options << '--line-numbers' << '--inline-source'
-         options << '-T html'
- 
--        # Include every file in the plugin's load_paths (see Plugin#load_paths)
-+        # Include every file in the plugin's code_paths (see Plugin#code_paths)
-         if Engines.plugins[plugin]
--          files.include("#{plugin_base}/{#{Engines.plugins[plugin].load_paths.join(",")}}/**/*.rb")
-+          files.include("#{plugin_base}/{#{Engines.plugins[plugin].code_paths.join(",")}}/**/*.rb")
-         end
-         if File.exists?("#{plugin_base}/README")
-           files.include("#{plugin_base}/README")    
-@@ -217,34 +217,6 @@ Report any issues on http://dev.rails-engines.org. Thanks!
- -~===============( ... as you were ... )============================~-}
-   end
-   
--  namespace :engines do
--    
--    def engine_plugins
--      Dir["vendor/plugins/*"].select { |f| File.directory?(File.join(f, "app")) }.map { |f| File.basename(f) }.join(",")
--    end
--    
--    desc "Run tests from within engines plugins (plugins with an 'app' directory)"
--    task :all => [:units, :functionals, :integration]
--    
--    desc "Run unit tests from within engines plugins (plugins with an 'app' directory)"
--    Rake::TestTask.new(:units => "test:plugins:setup_plugin_fixtures") do |t|
--      t.pattern = "vendor/plugins/{#{ENV['PLUGIN'] || engine_plugins}}/test/unit/**/*_test.rb"
--      t.verbose = true
--    end
--
--    desc "Run functional tests from within engines plugins (plugins with an 'app' directory)"
--    Rake::TestTask.new(:functionals => "test:plugins:setup_plugin_fixtures") do |t|
--      t.pattern = "vendor/plugins/{#{ENV['PLUGIN'] || engine_plugins}}/test/functional/**/*_test.rb"
--      t.verbose = true
--    end
--
--    desc "Run integration tests from within engines plugins (plugins with an 'app' directory)"
--    Rake::TestTask.new(:integration => "test:plugins:setup_plugin_fixtures") do |t|
--      t.pattern = "vendor/plugins/{#{ENV['PLUGIN'] || engine_plugins}}/test/integration/**/*_test.rb"
--      t.verbose = true
--    end
--  end
--  
-   namespace :plugins do
- 
-     desc "Run the plugin tests in vendor/plugins/**/test (or specify with PLUGIN=name)"
-diff --git a/vendor/plugins/engines/test/app/controllers/app_and_plugin_controller.rb b/vendor/plugins/engines/test/app/controllers/app_and_plugin_controller.rb
-index 90b13ff..e69de29 100644
---- a/vendor/plugins/engines/test/app/controllers/app_and_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/app/controllers/app_and_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class AppAndPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from app'
--  end
--end
-diff --git a/vendor/plugins/engines/test/app/controllers/namespace/app_and_plugin_controller.rb b/vendor/plugins/engines/test/app/controllers/namespace/app_and_plugin_controller.rb
-index 05f9049..e69de29 100644
---- a/vendor/plugins/engines/test/app/controllers/namespace/app_and_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/app/controllers/namespace/app_and_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class Namespace::AppAndPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from app'
--  end
--end
-diff --git a/vendor/plugins/engines/test/app/helpers/mail_helper.rb b/vendor/plugins/engines/test/app/helpers/mail_helper.rb
-index 9e081e7..e69de29 100644
---- a/vendor/plugins/engines/test/app/helpers/mail_helper.rb
-+++ b/vendor/plugins/engines/test/app/helpers/mail_helper.rb
-@@ -1,5 +0,0 @@
--module MailHelper
--  def do_something_helpful(var)
--    var.to_s.reverse
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/models/app_and_plugin_model.rb b/vendor/plugins/engines/test/app/models/app_and_plugin_model.rb
-index f0fe903..e69de29 100644
---- a/vendor/plugins/engines/test/app/models/app_and_plugin_model.rb
-+++ b/vendor/plugins/engines/test/app/models/app_and_plugin_model.rb
-@@ -1,3 +0,0 @@
--class AppAndPluginModel < ActiveRecord::Base
--  def self.report_location; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/models/notify_mail.rb b/vendor/plugins/engines/test/app/models/notify_mail.rb
-index 899fc1a..e69de29 100644
---- a/vendor/plugins/engines/test/app/models/notify_mail.rb
-+++ b/vendor/plugins/engines/test/app/models/notify_mail.rb
-@@ -1,26 +0,0 @@
--class NotifyMail < ActionMailer::Base
--
--  helper :mail
--  
--  def signup(txt)
--    body(:name => txt)
--  end
--  
--  def multipart
--    recipients 'some_address at email.com'
--    subject    'multi part email'
--    from       "another_user at email.com"
--    content_type 'multipart/alternative'
--    
--    part :content_type => "text/html", :body => render_message("multipart_html", {})
--    part "text/plain" do |p|
--      p.body = render_message("multipart_plain", {})
--    end
--  end
--  
--  def implicit_multipart
--    recipients 'some_address at email.com'
--    subject    'multi part email'
--    from       "another_user at email.com"
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/things/thing.rb b/vendor/plugins/engines/test/app/things/thing.rb
-index ae6fbbf..e69de29 100644
---- a/vendor/plugins/engines/test/app/things/thing.rb
-+++ b/vendor/plugins/engines/test/app/things/thing.rb
-@@ -1,3 +0,0 @@
--class Thing
--  def self.from_app; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/app_and_plugin/a_view.html.erb b/vendor/plugins/engines/test/app/views/app_and_plugin/a_view.html.erb
-index 03e2bf8..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/app_and_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/app/views/app_and_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %> (from app)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/a_view.html.erb b/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/a_view.html.erb
-index 03e2bf8..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %> (from app)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.html.erb b/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.html.erb
-index 042b5c4..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.html.erb
-+++ b/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.html.erb
-@@ -1 +0,0 @@
--the implicit html part of the email <%= do_something_helpful("semaj") %>
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.plain.erb b/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.plain.erb
-index 552acc1..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.plain.erb
-+++ b/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.plain.erb
-@@ -1 +0,0 @@
--the implicit plaintext part of the email
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/notify_mail/multipart_html.html.erb b/vendor/plugins/engines/test/app/views/notify_mail/multipart_html.html.erb
-index 135488b..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/notify_mail/multipart_html.html.erb
-+++ b/vendor/plugins/engines/test/app/views/notify_mail/multipart_html.html.erb
-@@ -1 +0,0 @@
--the html part of the email <%= do_something_helpful("semaj") %>
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/notify_mail/multipart_plain.html.erb b/vendor/plugins/engines/test/app/views/notify_mail/multipart_plain.html.erb
-index e005046..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/notify_mail/multipart_plain.html.erb
-+++ b/vendor/plugins/engines/test/app/views/notify_mail/multipart_plain.html.erb
-@@ -1 +0,0 @@
--the plaintext part of the email
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/notify_mail/signup.text.plain.erb b/vendor/plugins/engines/test/app/views/notify_mail/signup.text.plain.erb
-index 5aaf46e..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/notify_mail/signup.text.plain.erb
-+++ b/vendor/plugins/engines/test/app/views/notify_mail/signup.text.plain.erb
-@@ -1,5 +0,0 @@
--Signup template from application
--
--Here's a local variable set in the Mail object: <%= @name %>.
--
--And here's a method called in a mail helper: <%= do_something_helpful(@name) %>
-diff --git a/vendor/plugins/engines/test/app/views/plugin_mail/mail_from_plugin_with_application_template.text.plain.erb b/vendor/plugins/engines/test/app/views/plugin_mail/mail_from_plugin_with_application_template.text.plain.erb
-index 67a6b8f..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/plugin_mail/mail_from_plugin_with_application_template.text.plain.erb
-+++ b/vendor/plugins/engines/test/app/views/plugin_mail/mail_from_plugin_with_application_template.text.plain.erb
-@@ -1 +0,0 @@
--<%= @note %> (from application)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb b/vendor/plugins/engines/test/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
-index 284e450..e69de29 100644
---- a/vendor/plugins/engines/test/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
-+++ b/vendor/plugins/engines/test/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
-@@ -1 +0,0 @@
--plugin mail template loaded from application
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/functional/controller_loading_test.rb b/vendor/plugins/engines/test/functional/controller_loading_test.rb
-index d51bc00..e69de29 100644
---- a/vendor/plugins/engines/test/functional/controller_loading_test.rb
-+++ b/vendor/plugins/engines/test/functional/controller_loading_test.rb
-@@ -1,51 +0,0 @@
--# Tests in this file ensure that:
--#
--# * plugin controller actions are found
--# * actions defined in application controllers take precedence over those in plugins
--# * actions in controllers in subsequently loaded plugins take precendence over those in previously loaded plugins
--# * this works for actions in namespaced controllers accordingly
--
--require File.dirname(__FILE__) + '/../test_helper'
--
--class ControllerLoadingTest < ActionController::TestCase
--  def setup
--    @request    = ActionController::TestRequest.new
--    @response   = ActionController::TestResponse.new
--  end
--
--  # plugin controller actions should be found
--
--	def test_WITH_an_action_defined_only_in_a_plugin_IT_should_use_this_action
--	  get_action_on_controller :an_action, :alpha_plugin
--    assert_response_body 'rendered in AlphaPluginController#an_action'
--  end
--  
--	def test_WITH_an_action_defined_only_in_a_namespaced_plugin_controller_IT_should_use_this_action
--	  get_action_on_controller :an_action, :alpha_plugin, :namespace
--    assert_response_body 'rendered in Namespace::AlphaPluginController#an_action'
--  end
--
--  # app takes precedence over plugins
--
--  def test_WITH_an_action_defined_in_both_app_and_plugin_IT_should_use_the_one_in_app
--	  get_action_on_controller :an_action, :app_and_plugin
--    assert_response_body 'rendered in AppAndPluginController#an_action (from app)'
--  end
--  
--  def test_WITH_an_action_defined_in_namespaced_controllers_in_both_app_and_plugin_IT_should_use_the_one_in_app
--	  get_action_on_controller :an_action, :app_and_plugin, :namespace
--    assert_response_body 'rendered in Namespace::AppAndPluginController#an_action (from app)'
--  end
--
--  # subsequently loaded plugins take precendence over previously loaded plugins
--
--  def test_WITH_an_action_defined_in_two_plugin_controllers_IT_should_use_the_latter_of_both
--	  get_action_on_controller :an_action, :shared_plugin
--    assert_response_body 'rendered in SharedPluginController#an_action (from beta_plugin)'
--  end
--  
--  def test_WITH_an_action_defined_in_two_namespaced_plugin_controllers_IT_should_use_the_latter_of_both
--	  get_action_on_controller :an_action, :shared_plugin, :namespace
--    assert_response_body 'rendered in Namespace::SharedPluginController#an_action (from beta_plugin)'
--  end
--end
-diff --git a/vendor/plugins/engines/test/functional/exception_notification_compatibility_test.rb b/vendor/plugins/engines/test/functional/exception_notification_compatibility_test.rb
-index 3093306..e69de29 100644
---- a/vendor/plugins/engines/test/functional/exception_notification_compatibility_test.rb
-+++ b/vendor/plugins/engines/test/functional/exception_notification_compatibility_test.rb
-@@ -1,29 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class ExceptionNotificationCompatibilityTest < ActionController::TestCase
--  ExceptionNotifier.exception_recipients = %w(joe at schmoe.com bill at schmoe.com)
--  class SimpleController < ApplicationController
--    include ExceptionNotifiable
--    local_addresses.clear
--    consider_all_requests_local = false
--    def index
--      begin
--        raise "Fail!"
--      rescue Exception => e
--        rescue_action_in_public(e)
--      end
--    end
--  end
--  
--  def setup
--    @controller = SimpleController.new
--    @request    = ActionController::TestRequest.new
--    @response   = ActionController::TestResponse.new
--  end
--  
--  def test_should_work
--    assert_nothing_raised do
--      get :index
--    end
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/functional/locale_loading_test.rb b/vendor/plugins/engines/test/functional/locale_loading_test.rb
-index 21c8c7f..e69de29 100644
---- a/vendor/plugins/engines/test/functional/locale_loading_test.rb
-+++ b/vendor/plugins/engines/test/functional/locale_loading_test.rb
-@@ -1,26 +0,0 @@
--# Tests in this file ensure that:
--#
--# * translations in the application take precedence over those in plugins
--# * translations in subsequently loaded plugins take precendence over those in previously loaded plugins
--
--require File.dirname(__FILE__) + '/../test_helper'
--
--class LocaleLoadingTest < ActionController::TestCase
--  def setup
--    @request    = ActionController::TestRequest.new
--    @response   = ActionController::TestResponse.new
--  end
--
--  # app takes precedence over plugins
--	
--  def test_WITH_a_translation_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app
--    assert_equal I18n.t('hello'), 'Hello world'
--  end
--	
--  # subsequently loaded plugins take precendence over previously loaded plugins
--	
--  def test_WITH_a_translation_defined_in_two_plugins_IT_should_find_the_latter_of_both
--    assert_equal I18n.t('plugin'), 'beta'
--  end
--end
--	
-diff --git a/vendor/plugins/engines/test/functional/routes_test.rb b/vendor/plugins/engines/test/functional/routes_test.rb
-index 733dd39..e69de29 100644
---- a/vendor/plugins/engines/test/functional/routes_test.rb
-+++ b/vendor/plugins/engines/test/functional/routes_test.rb
-@@ -1,29 +0,0 @@
--# Tests in this file ensure that:
--#
--# * Routes from plugins can be routed to
--# * Named routes can be defined within a plugin
--
--require File.dirname(__FILE__) + '/../test_helper'
--
--class RoutesTest < ActionController::TestCase
--  tests TestRoutingController
--  
--	def test_WITH_a_route_defined_in_a_plugin_IT_should_route_it
--	  path = '/routes/an_action'
--    opts = {:controller => 'test_routing', :action => 'an_action'}
--    assert_routing path, opts
--    assert_recognizes opts, path # not sure what exactly the difference is, but it won't hurt either
--  end
--
--	def test_WITH_a_route_for_a_namespaced_controller_defined_in_a_plugin_IT_should_route_it
--	  path = 'somespace/routes/an_action'
--    opts = {:controller => 'namespace/test_routing', :action => 'an_action'}
--    assert_routing path, opts
--    assert_recognizes opts, path
--  end
--  
--  def test_should_properly_generate_named_routes
--    get :test_named_routes_from_plugin
--    assert_response_body '/somespace/routes'
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/functional/view_helpers_test.rb b/vendor/plugins/engines/test/functional/view_helpers_test.rb
-index 5448ffe..e69de29 100644
---- a/vendor/plugins/engines/test/functional/view_helpers_test.rb
-+++ b/vendor/plugins/engines/test/functional/view_helpers_test.rb
-@@ -1,37 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class ViewHelpersTest < ActionController::TestCase
--  tests AssetsController
--  
--  def setup
--    get :index
--  end
--  
--  def test_plugin_javascript_helpers
--    base_selector = "script[type='text/javascript']"
--    js_dir = "/plugin_assets/test_assets/javascripts"
--    assert_select "#{base_selector}[src='#{js_dir}/file.1.js']"
--    assert_select "#{base_selector}[src='#{js_dir}/file2.js']"
--  end
--
--  def test_plugin_stylesheet_helpers
--    base_selector = "link[media='screen'][rel='stylesheet'][type='text/css']"
--    css_dir = "/plugin_assets/test_assets/stylesheets"
--    assert_select "#{base_selector}[href='#{css_dir}/file.1.css']"
--    assert_select "#{base_selector}[href='#{css_dir}/file2.css']"
--  end
--
--  def test_plugin_image_helpers
--    assert_select "img[src='/plugin_assets/test_assets/images/image.png'][alt='Image']"
--  end
--
--  def test_plugin_layouts
--    get :index
--    assert_select "div[id='assets_layout']"
--  end  
--
--  def test_plugin_image_submit_helpers
--    assert_select "input[src='/plugin_assets/test_assets/images/image.png'][type='image']"
--  end
--
--end
-diff --git a/vendor/plugins/engines/test/functional/view_loading_test.rb b/vendor/plugins/engines/test/functional/view_loading_test.rb
-index 28d4754..e69de29 100644
---- a/vendor/plugins/engines/test/functional/view_loading_test.rb
-+++ b/vendor/plugins/engines/test/functional/view_loading_test.rb
-@@ -1,60 +0,0 @@
--# Tests in this file ensure that:
--#
--# * plugin views are found
--# * views in the application take precedence over those in plugins
--# * views in subsequently loaded plugins take precendence over those in previously loaded plugins
--# * this works for namespaced views accordingly
--
--require File.dirname(__FILE__) + '/../test_helper'
--
--class ViewLoadingTest < ActionController::TestCase
--  def setup
--    @request    = ActionController::TestRequest.new
--    @response   = ActionController::TestResponse.new
--  end
--
--  # plugin views should be found
--
-- 	def test_WITH_a_view_defined_only_in_a_plugin_IT_should_find_the_view
--	  get_action_on_controller :a_view, :alpha_plugin
--    assert_response_body 'alpha_plugin/a_view'
--  end
--	
--	def test_WITH_a_namespaced_view_defined_only_in_a_plugin_IT_should_find_the_view
--	  get_action_on_controller :a_view, :alpha_plugin, :namespace
--    assert_response_body 'namespace/alpha_plugin/a_view'
--  end
--
--  # app takes precedence over plugins
--	
--	def test_WITH_a_view_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app
--	  get_action_on_controller :a_view, :app_and_plugin
--    assert_response_body 'app_and_plugin/a_view (from app)'
--  end
--	
--	def test_WITH_a_namespaced_view_defined_in_both_app_and_plugin_IT_should_find_the_one_in_app
--	  get_action_on_controller :a_view, :app_and_plugin, :namespace
--    assert_response_body 'namespace/app_and_plugin/a_view (from app)'
--  end
--
--  # subsequently loaded plugins take precendence over previously loaded plugins
--	
--	def test_WITH_a_view_defined_in_two_plugins_IT_should_find_the_latter_of_both
--	  get_action_on_controller :a_view, :shared_plugin
--    assert_response_body 'shared_plugin/a_view (from beta_plugin)'
--  end
--	
--	def test_WITH_a_namespaced_view_defined_in_two_plugins_IT_should_find_the_latter_of_both
--	  get_action_on_controller :a_view, :shared_plugin, :namespace
--    assert_response_body 'namespace/shared_plugin/a_view (from beta_plugin)'
--  end
--  
--  # layouts loaded from plugins
--
--  def test_should_be_able_to_load_a_layout_from_a_plugin
--    get_action_on_controller :action_with_layout, :alpha_plugin
--    assert_response_body 'rendered in AlphaPluginController#action_with_layout (with plugin layout)'
--  end
--	
--end
--	
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/lib/app_and_plugin_lib_model.rb b/vendor/plugins/engines/test/lib/app_and_plugin_lib_model.rb
-index 6ffe178..e69de29 100644
---- a/vendor/plugins/engines/test/lib/app_and_plugin_lib_model.rb
-+++ b/vendor/plugins/engines/test/lib/app_and_plugin_lib_model.rb
-@@ -1,3 +0,0 @@
--class AppAndPluginLibModel < ActiveRecord::Base
--  def self.report_location; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/lib/engines_test_helper.rb b/vendor/plugins/engines/test/lib/engines_test_helper.rb
-index 47bd2bb..e69de29 100644
---- a/vendor/plugins/engines/test/lib/engines_test_helper.rb
-+++ b/vendor/plugins/engines/test/lib/engines_test_helper.rb
-@@ -1,42 +0,0 @@
--module TestHelper
--  def self.report_location(path)
--    [RAILS_ROOT + '/', 'vendor/plugins/'].each { |part| path.sub! part, ''}
--    path = path.split('/')
--    location, subject = path.first, path.last
--    if subject.sub! '.rb', ''
--      subject = subject.classify
--    else 
--      subject.sub! '.html.erb', ''
--    end
--    "#{subject} (from #{location})"
--  end
--  
--  def self.view_path_for path
--    [RAILS_ROOT + '/', 'vendor/plugins/', '.html.erb'].each { |part| path.sub! part, ''}
--    parts = path.split('/')
--    parts[(parts.index('views')+1)..-1].join('/')
--  end
--end
--
--class Test::Unit::TestCase
--  # Add more helper methods to be used by all tests here...  
--  def get_action_on_controller(*args)
--    action = args.shift
--    with_controller *args
--    get action
--  end
--  
--  def with_controller(controller, namespace = nil)
--    classname = controller.to_s.classify + 'Controller'
--    classname = namespace.to_s.classify + '::' + classname unless namespace.nil?
--    @controller = classname.constantize.new
--  end
--  
--  def assert_response_body(expected)
--    assert_equal expected, @response.body
--  end
--end
--
--# Because we're testing this behaviour, we actually want these features on!
--Engines.disable_application_view_loading = false
--Engines.disable_application_code_loading = false
-diff --git a/vendor/plugins/engines/test/lib/render_information.rb b/vendor/plugins/engines/test/lib/render_information.rb
-index 0deb5d9..e69de29 100644
---- a/vendor/plugins/engines/test/lib/render_information.rb
-+++ b/vendor/plugins/engines/test/lib/render_information.rb
-@@ -1,7 +0,0 @@
--module RenderInformation
--  def render_class_and_action(note = nil, options={})
--    text = "rendered in #{self.class.name}##{params[:action]}"
--    text += " (#{note})" unless note.nil?
--    render options.update(:text => text)
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/alpha_plugin_controller.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/alpha_plugin_controller.rb
-index 736d59b..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/alpha_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/alpha_plugin_controller.rb
-@@ -1,8 +0,0 @@
--class AlphaPluginController < ApplicationController
--  def an_action
--    render_class_and_action
--  end
--  def action_with_layout
--    render_class_and_action(nil, :layout => "plugin_layout")
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/app_and_plugin_controller.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/app_and_plugin_controller.rb
-index c41d6ed..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/app_and_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/app_and_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class AppAndPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from alpha_plugin'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/alpha_plugin_controller.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/alpha_plugin_controller.rb
-index 5edf81b..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/alpha_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/alpha_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class Namespace::AlphaPluginController < ApplicationController
--  def an_action
--    render_class_and_action
--  end  
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/app_and_plugin_controller.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/app_and_plugin_controller.rb
-index 7431a36..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/app_and_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/app_and_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class Namespace::AppAndPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from alpha_plugin'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/shared_plugin_controller.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/shared_plugin_controller.rb
-index fb162bc..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/shared_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/shared_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class Namespace::SharedPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from alpha_plugin'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/shared_plugin_controller.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/shared_plugin_controller.rb
-index 00539bb..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/shared_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/shared_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class SharedEngineController < ApplicationController
--  def an_action
--    render_class_and_action 'from alpha_engine'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/alpha_plugin_model.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/alpha_plugin_model.rb
-index cde71b8..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/alpha_plugin_model.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/alpha_plugin_model.rb
-@@ -1,3 +0,0 @@
--class AlphaPluginModel < ActiveRecord::Base
--  def self.report_location; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/app_and_plugin_model.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/app_and_plugin_model.rb
-index 92e6e62..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/app_and_plugin_model.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/app_and_plugin_model.rb
-@@ -1,7 +0,0 @@
--class AppAndPluginModel < ActiveRecord::Base
--  def self.report_location; TestHelper::report_location(__FILE__); end
--
--  def defined_only_in_alpha_plugin_version
--    # should not be defined as the model in app/models takes precedence
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/shared_plugin_model.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/shared_plugin_model.rb
-index e2ef43d..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/shared_plugin_model.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/shared_plugin_model.rb
-@@ -1,3 +0,0 @@
--class SharedPluginModel < ActiveRecord::Base  
--  def self.report_location; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/a_view.html.erb
-index 1ad6945..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %>
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/a_view.html.erb
-index 791a6fa..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %> (from a_view)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/plugin_layout.erb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/plugin_layout.erb
-index 878e07c..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/plugin_layout.erb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/plugin_layout.erb
-@@ -1 +0,0 @@
--<%= yield %> (with plugin layout)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/a_view.html.erb
-index 1ad6945..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %>
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/a_view.html.erb
-index 1ad6945..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %>
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/a_view.html.erb
-index f144ab3..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %> (from alpha_plugin)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/a_view.html.erb
-index f144ab3..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %> (from alpha_plugin)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/alpha_plugin_lib_model.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/alpha_plugin_lib_model.rb
-index 0ce4f91..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/alpha_plugin_lib_model.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/alpha_plugin_lib_model.rb
-@@ -1,3 +0,0 @@
--class AlphaPluginLibModel < ActiveRecord::Base
--  def self.report_location; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/app_and_plugin_lib_model.rb b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/app_and_plugin_lib_model.rb
-index 645a70c..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/app_and_plugin_lib_model.rb
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/app_and_plugin_lib_model.rb
-@@ -1,7 +0,0 @@
--class AppAndPluginLibModel < ActiveRecord::Base
--  def self.report_location; TestHelper::report_location(__FILE__); end
--
--  def defined_only_in_alpha_plugin_version
--    # should not be defined
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/alpha_plugin/locales/en.yml b/vendor/plugins/engines/test/plugins/alpha_plugin/locales/en.yml
-index 76d39d3..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/alpha_plugin/locales/en.yml
-+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/locales/en.yml
-@@ -1,3 +0,0 @@
--en:
--  hello: "Hello from alfa"
--  plugin: "alfa"
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/app_and_plugin_controller.rb b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/app_and_plugin_controller.rb
-index 2e77989..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/app_and_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/app_and_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class AppAndPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from beta_plugin'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/shared_plugin_controller.rb b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/shared_plugin_controller.rb
-index 971c7d5..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/shared_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/shared_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class Namespace::SharedPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from beta_plugin'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/shared_plugin_controller.rb b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/shared_plugin_controller.rb
-index ddd9dbe..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/shared_plugin_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/shared_plugin_controller.rb
-@@ -1,5 +0,0 @@
--class SharedPluginController < ApplicationController
--  def an_action
--    render_class_and_action 'from beta_plugin'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/app/models/shared_plugin_model.rb b/vendor/plugins/engines/test/plugins/beta_plugin/app/models/shared_plugin_model.rb
-index bfde227..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/app/models/shared_plugin_model.rb
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/models/shared_plugin_model.rb
-@@ -1,3 +0,0 @@
--class SharedPluginModel < ActiveRecord::Base
--  def self.report_location; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/a_view.html.erb
-index 77b5a15..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %> (from beta_plugin)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/a_view.html.erb b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/a_view.html.erb
-index 77b5a15..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/a_view.html.erb
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/a_view.html.erb
-@@ -1 +0,0 @@
--<%= TestHelper.view_path_for __FILE__ %> (from beta_plugin)
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/init.rb b/vendor/plugins/engines/test/plugins/beta_plugin/init.rb
-index b4c4b0e..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/init.rb
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/init.rb
-@@ -1 +0,0 @@
--# just here so that Rails recognizes this as a plugin
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/beta_plugin/locales/en.yml b/vendor/plugins/engines/test/plugins/beta_plugin/locales/en.yml
-index f49279c..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/beta_plugin/locales/en.yml
-+++ b/vendor/plugins/engines/test/plugins/beta_plugin/locales/en.yml
-@@ -1,3 +0,0 @@
--en:
--  hello: "Hello from beta"
--  plugin: "beta"
-diff --git a/vendor/plugins/engines/test/plugins/test_assets/app/controllers/assets_controller.rb b/vendor/plugins/engines/test/plugins/test_assets/app/controllers/assets_controller.rb
-index db5de2e..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_assets/app/controllers/assets_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/test_assets/app/controllers/assets_controller.rb
-@@ -1,2 +0,0 @@
--class AssetsController < ApplicationController
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/index.html.erb b/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/index.html.erb
-index 8340f76..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/index.html.erb
-+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/index.html.erb
-@@ -1,4 +0,0 @@
--<%= image_tag 'image.png', :plugin => 'test_assets' %>
--<%= javascript_include_tag 'file.1.js', 'file2', :plugin => "test_assets" %>
--<%= stylesheet_link_tag 'file.1.css', 'file2', :plugin => "test_assets" %>
--<%= image_submit_tag 'image.png', :plugin => "test_assets" %>
-diff --git a/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/assets.html.erb b/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/assets.html.erb
-index b7da375..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/assets.html.erb
-+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/assets.html.erb
-@@ -1,3 +0,0 @@
--<div id="assets_layout">
--	<%= yield %>
--</div>
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/thing.rb b/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/thing.rb
-index 535d988..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/thing.rb
-+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/thing.rb
-@@ -1,3 +0,0 @@
--class Thing
--  def self.from_plugin; TestHelper::report_location(__FILE__); end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_code_mixing/init.rb b/vendor/plugins/engines/test/plugins/test_code_mixing/init.rb
-index b4c4b0e..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_code_mixing/init.rb
-+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/init.rb
-@@ -1 +0,0 @@
--# just here so that Rails recognizes this as a plugin
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/001_create_tests.rb b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/001_create_tests.rb
-index 804a0cd..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/001_create_tests.rb
-+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/001_create_tests.rb
-@@ -1,11 +0,0 @@
--class CreateTests < ActiveRecord::Migration
--  def self.up
--    create_table 'tests' do |t|
--      t.column 'name', :string
--    end
--  end
--
--  def self.down
--    drop_table 'tests'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/002_create_others.rb b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/002_create_others.rb
-index 756aca6..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/002_create_others.rb
-+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/002_create_others.rb
-@@ -1,11 +0,0 @@
--class CreateOthers < ActiveRecord::Migration
--  def self.up
--    create_table 'others' do |t|
--      t.column 'name', :string
--    end
--  end
--
--  def self.down
--    drop_table 'others'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/003_create_extras.rb b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/003_create_extras.rb
-index fb5b6c2..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/003_create_extras.rb
-+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/003_create_extras.rb
-@@ -1,11 +0,0 @@
--class CreateExtras < ActiveRecord::Migration
--  def self.up
--    create_table 'extras' do |t|
--      t.column 'name', :string
--    end
--  end
--
--  def self.down
--    drop_table 'extras'
--  end
--end
-diff --git a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/plugin_mail.rb b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/plugin_mail.rb
-index 4f36616..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/plugin_mail.rb
-+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/plugin_mail.rb
-@@ -1,26 +0,0 @@
--class PluginMail < ActionMailer::Base
--  def mail_from_plugin(note=nil)
--    body(:note => note)
--  end
--  
--  def mail_from_plugin_with_application_template(note=nil)
--    body(:note => note)
--  end
--  
--  def multipart_from_plugin
--    content_type 'multipart/alternative'
--    part :content_type => "text/html", :body => render_message("multipart_from_plugin_html", {})
--    part "text/plain" do |p|
--      p.body = render_message("multipart_from_plugin_plain", {})
--    end
--  end
--  
--  def multipart_from_plugin_with_application_template
--    content_type 'multipart/alternative'
--    part :content_type => "text/html", :body => render_message("multipart_from_plugin_with_application_template_html", {})
--    part "text/plain" do |p|
--      p.body = render_message("multipart_from_plugin_with_application_template_plain", {})
--    end
--  end  
--  
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/mail_from_plugin.erb b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/mail_from_plugin.erb
-index 2b49606..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/mail_from_plugin.erb
-+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/mail_from_plugin.erb
-@@ -1 +0,0 @@
--<%= @note %>
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_html.html.erb b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_html.html.erb
-index 46291d8..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_html.html.erb
-+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_html.html.erb
-@@ -1 +0,0 @@
--html template
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_plain.html.erb b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_plain.html.erb
-index f690dba..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_plain.html.erb
-+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_plain.html.erb
-@@ -1 +0,0 @@
--plain template
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_html.html.erb b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_html.html.erb
-index 795f0d5..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_html.html.erb
-+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_html.html.erb
-@@ -1 +0,0 @@
--template from plugin
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
-index 795f0d5..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
-+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
-@@ -1 +0,0 @@
--template from plugin
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/test_routing_controller.rb b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/test_routing_controller.rb
-index 29d7bdb..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/test_routing_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/test_routing_controller.rb
-@@ -1,5 +0,0 @@
--class Namespace::TestRoutingController < ApplicationController
--  def routed_action
--    render_class_and_action
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/test_routing_controller.rb b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/test_routing_controller.rb
-index ac3164a..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/test_routing_controller.rb
-+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/test_routing_controller.rb
-@@ -1,9 +0,0 @@
--class TestRoutingController < ApplicationController
--  def routed_action
--    render_class_and_action
--  end
--  
--  def test_named_routes_from_plugin
--    render :text => plugin_route_path(:action => "index")
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_routing/config/routes.rb b/vendor/plugins/engines/test/plugins/test_routing/config/routes.rb
-index dbc49f9..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_routing/config/routes.rb
-+++ b/vendor/plugins/engines/test/plugins/test_routing/config/routes.rb
-@@ -1,4 +0,0 @@
--ActionController::Routing::Routes.draw do |map|
--  map.connect 'routes/:action', :controller => "test_routing"
--  map.plugin_route 'somespace/routes/:action', :controller => "namespace/test_routing"
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_testing/app/README.txt b/vendor/plugins/engines/test/plugins/test_testing/app/README.txt
-index 784e4fe..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_testing/app/README.txt
-+++ b/vendor/plugins/engines/test/plugins/test_testing/app/README.txt
-@@ -1 +0,0 @@
--Fixtures are only copied from plugins with an +app+ directory, but git needs this directory to be non-empty
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/plugins/test_testing/test/unit/override_test.rb b/vendor/plugins/engines/test/plugins/test_testing/test/unit/override_test.rb
-index 4c4c42a..e69de29 100644
---- a/vendor/plugins/engines/test/plugins/test_testing/test/unit/override_test.rb
-+++ b/vendor/plugins/engines/test/plugins/test_testing/test/unit/override_test.rb
-@@ -1,13 +0,0 @@
--require File.expand_path(File.join(File.dirname(__FILE__), *%w[.. .. .. .. .. test test_helper]))
--
--class OverrideTest < ActiveSupport::TestCase
--  def test_overrides_from_the_application_should_work
--    flunk "this test should be overridden by the app"
--  end
--  
--  def test_tests_within_the_plugin_should_still_run
--    assert true, "non-overridden plugin tests should still run"
--  end
--end
--
--Engines::Testing.override_tests_from_app
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/action_mailer_test.rb b/vendor/plugins/engines/test/unit/action_mailer_test.rb
-index fc3e756..e69de29 100644
---- a/vendor/plugins/engines/test/unit/action_mailer_test.rb
-+++ b/vendor/plugins/engines/test/unit/action_mailer_test.rb
-@@ -1,54 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class ActionMailerWithinApplicationTest < Test::Unit::TestCase
--  
--  def test_normal_implicit_template
--    m = NotifyMail.create_signup("hello")
--    assert m.body =~ /^Signup template from application/
--  end
--  
--  def test_action_mailer_can_get_helper
--    m = NotifyMail.create_signup('James')
--    assert m.body =~ /James/
--    assert m.body =~ /semaJ/ # from the helper
--  end
--  
--  def test_multipart_mails_with_explicit_templates
--    m = NotifyMail.create_multipart
--    assert_equal 2, m.parts.length
--    assert_equal 'the html part of the email james', m.parts[0].body
--    assert_equal 'the plaintext part of the email', m.parts[1].body
--  end
--  
--  def test_multipart_mails_with_implicit_templates
--    m = NotifyMail.create_implicit_multipart
--    assert_equal 2, m.parts.length
--    assert_equal 'the implicit plaintext part of the email', m.parts[0].body    
--    assert_equal 'the implicit html part of the email james', m.parts[1].body
--  end
--end
--
--
--class ActionMailerWithinPluginsTest < Test::Unit::TestCase  
--  def test_should_be_able_to_create_mails_from_plugin
--    m = PluginMail.create_mail_from_plugin("from_plugin")
--    assert_equal "from_plugin", m.body
--  end
--  
--  def test_should_be_able_to_overload_views_within_the_application
--    m = PluginMail.create_mail_from_plugin_with_application_template("from_plugin")
--    assert_equal "from_plugin (from application)", m.body    
--  end
--  
--  def test_should_be_able_to_create_a_multipart_mail_from_within_plugin
--    m = PluginMail.create_multipart_from_plugin
--    assert_equal 2, m.parts.length
--    assert_equal 'html template', m.parts[0].body
--    assert_equal 'plain template', m.parts[1].body
--  end
--  
--  def test_plugin_mailer_template_overriding
--    m = PluginMail.create_multipart_from_plugin_with_application_template
--    assert_equal 'plugin mail template loaded from application', m.parts[1].body
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/arbitrary_code_mixing_test.rb b/vendor/plugins/engines/test/unit/arbitrary_code_mixing_test.rb
-index 4b862f3..e69de29 100644
---- a/vendor/plugins/engines/test/unit/arbitrary_code_mixing_test.rb
-+++ b/vendor/plugins/engines/test/unit/arbitrary_code_mixing_test.rb
-@@ -1,41 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class ArbitraryCodeMixingTest < Test::Unit::TestCase  
--  def setup
--    Engines.code_mixing_file_types = %w(controller helper)
--  end
--  
--  def test_should_allow_setting_of_different_code_mixing_file_types
--    assert_nothing_raised {
--      Engines.mix_code_from :things
--    }
--  end
--
--  def test_should_add_new_types_to_existing_code_mixing_file_types
--    Engines.mix_code_from :things
--    assert_equal ["controller", "helper", "thing"], Engines.code_mixing_file_types
--    Engines.mix_code_from :other
--    assert_equal ["controller", "helper", "thing", "other"], Engines.code_mixing_file_types
--  end
--  
--  def test_should_allow_setting_of_multiple_types_at_once
--    Engines.mix_code_from :things, :other
--    assert_equal ["controller", "helper", "thing", "other"], Engines.code_mixing_file_types
--  end
--   
--  def test_should_singularize_elements_to_be_mixed
--    # this is the only test using mocha, so let's try to work around it
--    # also, this seems to be already tested with the :things in the tests above
--    # arg = stub(:to_s => stub(:singularize => "element")) 
--    Engines.mix_code_from :elements
--    assert Engines.code_mixing_file_types.include?("element")
--  end
--  
--  # TODO doesn't seem to work as expected?
--  
--  # def test_should_successfully_mix_custom_types
--  #   Engines.mix_code_from :things    
--  #   assert_equal 'Thing (from app)', Thing.from_app
--  #   assert_equal 'Thing (from test_code_mixing)', Thing.from_plugin
--  # end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/assets_test.rb b/vendor/plugins/engines/test/unit/assets_test.rb
-index 3332c53..e69de29 100644
---- a/vendor/plugins/engines/test/unit/assets_test.rb
-+++ b/vendor/plugins/engines/test/unit/assets_test.rb
-@@ -1,52 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class AssetsTest < Test::Unit::TestCase  
--  def setup
--    Engines::Assets.mirror_files_for Engines.plugins[:test_assets]
--  end
--  
--  def teardown
--    FileUtils.rm_r(Engines.public_directory) if File.exist?(Engines.public_directory)
--  end
--  
--  def test_engines_has_created_base_public_file
--    assert File.exist?(Engines.public_directory)
--  end
--  
--  def test_engines_has_created_README_in_public_directory
--    assert File.exist?(File.join(Engines.public_directory, 'README'))
--  end
--  
--  def test_public_files_have_been_copied_from_test_assets_plugin
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets'))
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets', 'file.txt'))
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets', 'subfolder'))
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets', 'subfolder', 'file_in_subfolder.txt'))
--  end
--  
--  def test_engines_has_not_created_duplicated_file_structure
--    assert !File.exists?(File.join(Engines.public_directory, "test_assets", RAILS_ROOT))
--  end
--  
--  def test_public_files_have_been_copied_from_test_assets_with_assets_dir_plugin
--    Engines::Assets.mirror_files_for Engines.plugins[:test_assets_with_assets_directory]
--
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets_with_assets_directory'))
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets_with_assets_directory', 'file.txt'))
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets_with_assets_directory', 'subfolder'))
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets_with_assets_directory', 'subfolder', 'file_in_subfolder.txt'))
--  end
--  
--  def test_public_files_have_been_copied_from_test_assets_with_no_subdirectory_plugin
--    Engines::Assets.mirror_files_for Engines.plugins[:test_assets_with_no_subdirectory]
--
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets_with_no_subdirectory'))
--    assert File.exist?(File.join(Engines.public_directory, 'test_assets_with_no_subdirectory', 'file.txt'))    
--  end
--  
--  def test_public_files_have_NOT_been_copied_from_plugins_without_public_or_asset_directories
--    Engines::Assets.mirror_files_for Engines.plugins[:alpha_plugin]
--    
--    assert !File.exist?(File.join(Engines.public_directory, 'alpha_plugin'))
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/backwards_compat_test.rb b/vendor/plugins/engines/test/unit/backwards_compat_test.rb
-index 4fa3698..e69de29 100644
---- a/vendor/plugins/engines/test/unit/backwards_compat_test.rb
-+++ b/vendor/plugins/engines/test/unit/backwards_compat_test.rb
-@@ -1,8 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class BackwardsCompatibilityTest < Test::Unit::TestCase
--  def test_rails_module_plugin_method_should_delegate_to_engines_plugins
--    assert_nothing_raised { Rails.plugins }
--    assert_equal Engines.plugins, Rails.plugins 
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/load_path_test.rb b/vendor/plugins/engines/test/unit/load_path_test.rb
-index c26d331..e69de29 100644
---- a/vendor/plugins/engines/test/unit/load_path_test.rb
-+++ b/vendor/plugins/engines/test/unit/load_path_test.rb
-@@ -1,58 +0,0 @@
--# Tests in this file ensure that:
--#
--# * the application /app/[controllers|helpers|models] and /lib 
--#   paths preceed the corresponding plugin paths
--# * the plugin paths are added to $LOAD_PATH in the order in which plugins are 
--#   loaded
--
--require File.dirname(__FILE__) + '/../test_helper'
--
--class LoadPathTest < Test::Unit::TestCase
--  def setup
--    @load_path = expand_paths($LOAD_PATH)
--  end
--  
--  # Not sure if these test actually make sense as this now essentially tests
--  # Rails core functionality. On the other hand Engines relies on this to some
--  # extend so this will choke if something important changes in Rails.
--  
--  # the application app/... and lib/ directories should appear
--  # before any plugin directories
--  
--  def test_application_app_libs_should_precede_all_plugin_app_libs
--    types = %w(app/controllers app/helpers app/models lib)
--    types.each do |t|
--      app_index = load_path_index(File.join(RAILS_ROOT, t))
--      assert_not_nil app_index, "#{t} is missing in $LOAD_PATH"
--      Engines.plugins.each do |plugin|
--        first_plugin_index = load_path_index(File.join(plugin.directory, t))
--        assert(app_index < first_plugin_index) unless first_plugin_index.nil?
--      end
--    end
--  end
--  
--  # the engine directories should appear in the proper order based on
--  # the order they were started  
--  
--  def test_plugin_dirs_should_appear_in_reverse_plugin_loading_order
--    app_paths = %w(app/controllers/ app app/models app/helpers lib)
--    app_paths.map { |p| File.join(RAILS_ROOT, p)}
--    plugin_paths = Engines.plugins.reverse.collect { |plugin| plugin.load_paths.reverse }.flatten    
--    
--    expected_paths = expand_paths(app_paths + plugin_paths)    
--    # only look at those paths that are also present in expected_paths so
--    # the only difference would be in the order of the paths
--    actual_paths = @load_path & expected_paths 
--    
--    assert_equal expected_paths, actual_paths
--  end
--  
--  protected    
--    def expand_paths(paths)
--      paths.collect { |p| File.expand_path(p) }
--    end
--    
--    def load_path_index(dir)
--      @load_path.index(File.expand_path(dir))
--    end  
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/migration_test.rb b/vendor/plugins/engines/test/unit/migration_test.rb
-index eae7fe7..e69de29 100644
---- a/vendor/plugins/engines/test/unit/migration_test.rb
-+++ b/vendor/plugins/engines/test/unit/migration_test.rb
-@@ -1,63 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--require 'rails_generator'
--require 'rails_generator/scripts/generate'
--
--class MigrationsTest < Test::Unit::TestCase
--  
--  @@migration_dir = "#{RAILS_ROOT}/db/migrate"
--
--  def setup
--    ActiveRecord::Migration.verbose = false
--    Engines.plugins[:test_migration].migrate(0)
--  end
--  
--  def teardown
--    FileUtils.rm_r(@@migration_dir) if File.exist?(@@migration_dir)
--  end
--  
--  def test_engine_migrations_can_run_down
--    assert !table_exists?('tests'), ActiveRecord::Base.connection.tables.inspect
--    assert !table_exists?('others'), ActiveRecord::Base.connection.tables.inspect
--    assert !table_exists?('extras'), ActiveRecord::Base.connection.tables.inspect
--  end
--    
--  def test_engine_migrations_can_run_up
--    Engines.plugins[:test_migration].migrate(3)
--    assert table_exists?('tests')
--    assert table_exists?('others')
--    assert table_exists?('extras')
--  end
--  
--  def test_engine_migrations_can_upgrade_incrementally
--    Engines.plugins[:test_migration].migrate(1)
--    assert table_exists?('tests')
--    assert !table_exists?('others')
--    assert !table_exists?('extras')
--    assert_equal 1, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
--    
--    
--    Engines.plugins[:test_migration].migrate(2)
--    assert table_exists?('others')
--    assert_equal 2, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
--    
--    
--    Engines.plugins[:test_migration].migrate(3)
--    assert table_exists?('extras')
--    assert_equal 3, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
--  end
--    
--  def test_generator_creates_plugin_migration_file
--    Rails::Generator::Scripts::Generate.new.run(['plugin_migration', 'test_migration'], :quiet => true)
--    assert migration_file, "migration file is missing"
--  end
--  
--  private
--  
--  def table_exists?(table)
--    ActiveRecord::Base.connection.tables.include?(table)
--  end
--  
--  def migration_file
--    Dir["#{@@migration_dir}/*test_migration_to_version_3.rb"][0]
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/model_and_lib_test.rb b/vendor/plugins/engines/test/unit/model_and_lib_test.rb
-index e5aa773..e69de29 100644
---- a/vendor/plugins/engines/test/unit/model_and_lib_test.rb
-+++ b/vendor/plugins/engines/test/unit/model_and_lib_test.rb
-@@ -1,37 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class ModelAndLibTest < Test::Unit::TestCase
--
-- 	def test_WITH_a_model_defined_only_in_a_plugin_IT_should_load_the_model
-- 	  assert_equal 'AlphaPluginModel (from alpha_plugin)', AlphaPluginModel.report_location
--  end
--  
--  def test_WITH_a_model_defined_only_in_a_plugin_lib_dir_IT_should_load_the_model
-- 	  assert_equal 'AlphaPluginLibModel (from alpha_plugin)', AlphaPluginLibModel.report_location
--  end
--
--  # app takes precedence over plugins
--	
--	def test_WITH_a_model_defined_in_both_app_and_plugin_IT_should_load_the_one_in_app
-- 	  assert_equal 'AppAndPluginModel (from app)',	AppAndPluginModel.report_location  
-- 	  assert_raises(NoMethodError) { AppAndPluginLibModel.defined_only_in_alpha_engine_version }
--  end
--	
--	def test_WITH_a_model_defined_in_both_app_and_plugin_lib_dirs_IT_should_load_the_one_in_app
-- 	  assert_equal 'AppAndPluginLibModel (from lib)', AppAndPluginLibModel.report_location
-- 	  assert_raises(NoMethodError) { AppAndPluginLibModel.defined_only_in_alpha_engine_version }
--  end
--
--  # subsequently loaded plugins take precendence over previously loaded plugins
--	
--  # TODO
--  #
--  # this does work when we rely on $LOAD_PATH while it won't work when we use
--  # Dependency constant autoloading. This somewhat confusing difference has
--  # been there since at least Rails 1.2.x. See http://www.ruby-forum.com/topic/134529
--  
--  def test_WITH_a_model_defined_in_two_plugins_IT_should_load_the_latter_of_both
--    require 'shared_plugin_model'
--    assert_equal SharedPluginModel.report_location, 'SharedPluginModel (from beta_plugin)'
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/plugins_test.rb b/vendor/plugins/engines/test/unit/plugins_test.rb
-index f8627bc..e69de29 100644
---- a/vendor/plugins/engines/test/unit/plugins_test.rb
-+++ b/vendor/plugins/engines/test/unit/plugins_test.rb
-@@ -1,11 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class PluginsTest < Test::Unit::TestCase
--  
--  def test_should_allow_access_to_plugins_by_strings_or_symbols
--    p = Engines.plugins["alpha_plugin"]
--    q = Engines.plugins[:alpha_plugin]
--    assert_kind_of Engines::Plugin, p
--    assert_equal p, q
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/test_testing/override_test.rb b/vendor/plugins/engines/test/unit/test_testing/override_test.rb
-index ea58a51..e69de29 100644
---- a/vendor/plugins/engines/test/unit/test_testing/override_test.rb
-+++ b/vendor/plugins/engines/test/unit/test_testing/override_test.rb
-@@ -1,7 +0,0 @@
--require File.join(File.dirname(__FILE__), *%w[.. .. test_helper])
--
--class OverrideTest < ActiveSupport::TestCase
--  def test_overrides_from_the_application_should_work
--    assert true, "overriding plugin tests from the application should work"
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/engines/test/unit/testing_test.rb b/vendor/plugins/engines/test/unit/testing_test.rb
-index c0c37ed..e69de29 100644
---- a/vendor/plugins/engines/test/unit/testing_test.rb
-+++ b/vendor/plugins/engines/test/unit/testing_test.rb
-@@ -1,19 +0,0 @@
--require File.dirname(__FILE__) + '/../test_helper'
--
--class TestingTest < Test::Unit::TestCase
--  def setup
--    Engines::Testing.set_fixture_path
--    @filename = File.join(Engines::Testing.temporary_fixtures_directory, 'testing_fixtures.yml')
--    File.delete(@filename) if File.exists?(@filename)
--  end
--  
--  def teardown
--    File.delete(@filename) if File.exists?(@filename)
--  end
--
--  def test_should_copy_fixtures_files_to_tmp_directory
--    assert !File.exists?(@filename)
--    Engines::Testing.setup_plugin_fixtures
--    assert File.exists?(@filename)
--  end
--end
-\ No newline at end of file
-diff --git a/vendor/plugins/prepend_engine_views/init.rb b/vendor/plugins/prepend_engine_views/init.rb
-index cbf0e89..e69de29 100644
---- a/vendor/plugins/prepend_engine_views/init.rb
-+++ b/vendor/plugins/prepend_engine_views/init.rb
-@@ -1,21 +0,0 @@
--module PrependEngineViews
--  def self.included(base)
--    base.send(:include, InstanceMethods)
--    base.class_eval do
--      alias_method_chain :add_engine_view_paths, :prepend
--    end
--  end
--
--  module InstanceMethods
--    # Patch Rails so engine's views are prepended to the view_path,
--    # thereby letting plugins override application views
--    def add_engine_view_paths_with_prepend
--      paths = ActionView::PathSet.new(engines.collect(&:view_path))
--      ActionController::Base.view_paths.unshift(*paths)
--      ActionMailer::Base.view_paths.unshift(*paths) if configuration.frameworks.include?(:action_mailer)
--    end
--  end
--end
--
--Rails::Plugin::Loader.send :include, PrependEngineViews
--

Added: trunk/redmine/debian/patches/revert_rails_2.3.patch
===================================================================
--- trunk/redmine/debian/patches/revert_rails_2.3.patch	                        (rev 0)
+++ trunk/redmine/debian/patches/revert_rails_2.3.patch	2009-11-23 00:21:25 UTC (rev 4378)
@@ -0,0 +1,417 @@
+diff --git a/app/controllers/application.rb b/app/controllers/application.rb
+new file mode 120000
+index 0000000..7c7952a
+--- /dev/null
++++ b/app/controllers/application.rb
+@@ -0,0 +1 @@
++application_controller.rb
+\ No newline at end of file
+diff --git a/app/models/enumeration.rb b/app/models/enumeration.rb
+index 4836229..1b69fb4 100644
+--- a/app/models/enumeration.rb
++++ b/app/models/enumeration.rb
+@@ -16,8 +16,6 @@
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ 
+ class Enumeration < ActiveRecord::Base
+-  default_scope :order => "#{Enumeration.table_name}.position ASC"
+-  
+   belongs_to :project
+   
+   acts_as_list :scope => 'type = \'#{type}\''
+@@ -60,8 +58,8 @@ class Enumeration < ActiveRecord::Base
+   end
+   # End backwards compatiblity named_scopes
+ 
+-  named_scope :shared, :conditions => { :project_id => nil }
+-  named_scope :active, :conditions => { :active => true }
++  named_scope :shared, :conditions => { :project_id => nil }, :order => "#{Enumeration.table_name}.position ASC"
++  named_scope :active, :conditions => { :active => true }, :order => "#{Enumeration.table_name}.position ASC"
+ 
+   def self.default
+     # Creates a fake default scope so Enumeration.default will check
+diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
+index cda556f..5eeb89c 100644
+--- a/app/models/mail_handler.rb
++++ b/app/models/mail_handler.rb
+@@ -87,7 +87,7 @@ class MailHandler < ActionMailer::Base
+     if headers.detect {|h| h.to_s =~ MESSAGE_ID_RE}
+       klass, object_id = $1, $2.to_i
+       method_name = "receive_#{klass}_reply"
+-      if self.class.private_instance_methods.collect(&:to_s).include?(method_name)
++      if self.class.private_instance_methods.include?(method_name)
+         send method_name, object_id
+       else
+         # ignoring it
+@@ -126,8 +126,7 @@ class MailHandler < ActionMailer::Base
+     if status && issue.new_statuses_allowed_to(user).include?(status)
+       issue.status = status
+     end
+-    issue.subject = email.subject.chomp
+-    issue.subject = issue.subject.toutf8 if issue.subject.respond_to?(:toutf8)
++    issue.subject = email.subject.chomp.toutf8
+     if issue.subject.blank?
+       issue.subject = '(no subject)'
+     end
+diff --git a/app/models/mailer.rb b/app/models/mailer.rb
+index 3d5231d..fbe76ac 100644
+--- a/app/models/mailer.rb
++++ b/app/models/mailer.rb
+@@ -16,7 +16,6 @@
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ 
+ class Mailer < ActionMailer::Base
+-  layout 'mailer'
+   helper :application
+   helper :issues
+   helper :custom_fields
+@@ -46,7 +45,6 @@ class Mailer < ActionMailer::Base
+     subject "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}"
+     body :issue => issue,
+          :issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
+-    render_multipart('issue_add', body)
+   end
+ 
+   # Builds a tmail object used to email recipients of the edited issue.
+@@ -73,8 +71,6 @@ class Mailer < ActionMailer::Base
+     body :issue => issue,
+          :journal => journal,
+          :issue_url => url_for(:controller => 'issues', :action => 'show', :id => issue)
+-
+-    render_multipart('issue_edit', body)
+   end
+ 
+   def reminder(user, issues, days)
+@@ -84,7 +80,6 @@ class Mailer < ActionMailer::Base
+     body :issues => issues,
+          :days => days,
+          :issues_url => url_for(:controller => 'issues', :action => 'index', :set_filter => 1, :assigned_to_id => user.id, :sort_key => 'due_date', :sort_order => 'asc')
+-    render_multipart('reminder', body)
+   end
+ 
+   # Builds a tmail object used to email users belonging to the added document's project.
+@@ -98,7 +93,6 @@ class Mailer < ActionMailer::Base
+     subject "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
+     body :document => document,
+          :document_url => url_for(:controller => 'documents', :action => 'show', :id => document)
+-    render_multipart('document_added', body)
+   end
+ 
+   # Builds a tmail object used to email recipients of a project when an attachements are added.
+@@ -127,7 +121,6 @@ class Mailer < ActionMailer::Base
+     body :attachments => attachments,
+          :added_to => added_to,
+          :added_to_url => added_to_url
+-    render_multipart('attachments_added', body)
+   end
+   
+   # Builds a tmail object used to email recipients of a news' project when a news item is added.
+@@ -142,7 +135,6 @@ class Mailer < ActionMailer::Base
+     subject "[#{news.project.name}] #{l(:label_news)}: #{news.title}"
+     body :news => news,
+          :news_url => url_for(:controller => 'news', :action => 'show', :id => news)
+-    render_multipart('news_added', body)
+   end
+ 
+   # Builds a tmail object used to email the specified recipients of the specified message that was posted. 
+@@ -159,7 +151,6 @@ class Mailer < ActionMailer::Base
+     subject "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] #{message.subject}"
+     body :message => message,
+          :message_url => url_for(:controller => 'messages', :action => 'show', :board_id => message.board_id, :id => message.root)
+-    render_multipart('message_posted', body)
+   end
+   
+   # Builds a tmail object used to email the recipients of a project of the specified wiki content was added. 
+@@ -176,7 +167,6 @@ class Mailer < ActionMailer::Base
+     subject "[#{wiki_content.project.name}] #{l(:mail_subject_wiki_content_added, :page => wiki_content.page.pretty_title)}"
+     body :wiki_content => wiki_content,
+          :wiki_content_url => url_for(:controller => 'wiki', :action => 'index', :id => wiki_content.project, :page => wiki_content.page.title)
+-    render_multipart('wiki_content_added', body)
+   end
+   
+   # Builds a tmail object used to email the recipients of a project of the specified wiki content was updated. 
+@@ -194,7 +184,6 @@ class Mailer < ActionMailer::Base
+     body :wiki_content => wiki_content,
+          :wiki_content_url => url_for(:controller => 'wiki', :action => 'index', :id => wiki_content.project, :page => wiki_content.page.title),
+          :wiki_diff_url => url_for(:controller => 'wiki', :action => 'diff', :id => wiki_content.project, :page => wiki_content.page.title, :version => wiki_content.version)
+-    render_multipart('wiki_content_updated', body)
+   end
+ 
+   # Builds a tmail object used to email the specified user their account information.
+@@ -209,7 +198,6 @@ class Mailer < ActionMailer::Base
+     body :user => user,
+          :password => password,
+          :login_url => url_for(:controller => 'account', :action => 'login')
+-    render_multipart('account_information', body)
+   end
+ 
+   # Builds a tmail object used to email all active administrators of an account activation request.
+@@ -223,7 +211,6 @@ class Mailer < ActionMailer::Base
+     subject l(:mail_subject_account_activation_request, Setting.app_title)
+     body :user => user,
+          :url => url_for(:controller => 'users', :action => 'index', :status => User::STATUS_REGISTERED, :sort_key => 'created_on', :sort_order => 'desc')
+-    render_multipart('account_activation_request', body)
+   end
+ 
+   # Builds a tmail object used to email the specified user that their account was activated by an administrator.
+@@ -237,7 +224,6 @@ class Mailer < ActionMailer::Base
+     subject l(:mail_subject_register, Setting.app_title)
+     body :user => user,
+          :login_url => url_for(:controller => 'account', :action => 'login')
+-    render_multipart('account_activated', body)
+   end
+ 
+   def lost_password(token)
+@@ -246,7 +232,6 @@ class Mailer < ActionMailer::Base
+     subject l(:mail_subject_lost_password, Setting.app_title)
+     body :token => token,
+          :url => url_for(:controller => 'account', :action => 'lost_password', :token => token.value)
+-    render_multipart('lost_password', body)
+   end
+ 
+   def register(token)
+@@ -255,7 +240,6 @@ class Mailer < ActionMailer::Base
+     subject l(:mail_subject_register, Setting.app_title)
+     body :token => token,
+          :url => url_for(:controller => 'account', :action => 'activate', :token => token.value)
+-    render_multipart('register', body)
+   end
+ 
+   def test(user)
+@@ -263,7 +247,6 @@ class Mailer < ActionMailer::Base
+     recipients user.mail
+     subject 'Redmine test'
+     body :url => url_for(:controller => 'welcome')
+-    render_multipart('test', body)
+   end
+ 
+   # Overrides default deliver! method to prevent from sending an email
+@@ -344,22 +327,26 @@ class Mailer < ActionMailer::Base
+     super
+   end
+ 
+-  # Rails 2.3 has problems rendering implicit multipart messages with
+-  # layouts so this method will wrap an multipart messages with
+-  # explicit parts.
+-  #
+-  # https://rails.lighthouseapp.com/projects/8994/tickets/2338-actionmailer-mailer-views-and-content-type
+-  # https://rails.lighthouseapp.com/projects/8994/tickets/1799-actionmailer-doesnt-set-template_format-when-rendering-layouts
+-  
+-  def render_multipart(method_name, body)
++  # Renders a message with the corresponding layout
++  def render_message(method_name, body)
++    layout = method_name.to_s.match(%r{text\.html\.(rhtml|rxml)}) ? 'layout.text.html.rhtml' : 'layout.text.plain.rhtml'
++    body[:content_for_layout] = render(:file => method_name, :body => body)
++    ActionView::Base.new(template_root, body, self).render(:file => "mailer/#{layout}", :use_full_path => true)
++  end
++
++  # for the case of plain text only
++  def body(*params)
++    value = super(*params)
+     if Setting.plain_text_mail?
+-      content_type "text/plain"
+-      body render(:file => "#{method_name}.text.plain.rhtml", :body => body, :layout => 'mailer.text.plain.erb')
+-    else
+-      content_type "multipart/alternative"
+-      part :content_type => "text/plain", :body => render(:file => "#{method_name}.text.plain.rhtml", :body => body, :layout => 'mailer.text.plain.erb')
+-      part :content_type => "text/html", :body => render_message("#{method_name}.text.html.rhtml", body)
++      templates = Dir.glob("#{template_path}/#{@template}.text.plain.{rhtml,erb}")
++      unless String === @body or templates.empty?
++        template = File.basename(templates.first)
++        @body[:content_for_layout] = render(:file => template, :body => @body)
++        @body = ActionView::Base.new(template_root, @body, self).render(:file => "mailer/layout.text.plain.rhtml", :use_full_path => true)
++        return @body
++      end
+     end
++    return value
+   end
+ 
+   # Makes partial rendering work with Rails 1.2 (retro-compatibility)
+diff --git a/app/views/mailer/layout.text.html.rhtml b/app/views/mailer/layout.text.html.rhtml
+new file mode 120000
+index 0000000..8f6ab49
+--- /dev/null
++++ b/app/views/mailer/layout.text.html.rhtml
+@@ -0,0 +1 @@
++../layouts/mailer.text.html.erb
+\ No newline at end of file
+diff --git a/app/views/mailer/layout.text.plain.rhtml b/app/views/mailer/layout.text.plain.rhtml
+new file mode 120000
+index 0000000..36645de
+--- /dev/null
++++ b/app/views/mailer/layout.text.plain.rhtml
+@@ -0,0 +1 @@
++../layouts/mailer.text.plain.erb
+\ No newline at end of file
+diff --git a/config/environment.rb b/config/environment.rb
+index e6d4259..936a296 100644
+--- a/config/environment.rb
++++ b/config/environment.rb
+@@ -5,7 +5,7 @@
+ # ENV['RAILS_ENV'] ||= 'production'
+ 
+ # Specifies gem version of Rails to use when vendor/rails is not present
+-RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION
++RAILS_GEM_VERSION = '2.2.3' unless defined? RAILS_GEM_VERSION
+ 
+ # Bootstrap the Rails environment, frameworks, and default configuration
+ require File.join(File.dirname(__FILE__), 'boot')
+diff --git a/lib/SVG/Graph/Graph.rb b/lib/SVG/Graph/Graph.rb
+index 497bb7c..c188ae5 100644
+--- a/lib/SVG/Graph/Graph.rb
++++ b/lib/SVG/Graph/Graph.rb
+@@ -150,7 +150,7 @@ module SVG
+           :add_popups           =>false,
+         })
+ 
+-				set_defaults if respond_to? :set_defaults
++				set_defaults if methods.include? "set_defaults"
+ 
+         init_with config
+       end
+@@ -195,7 +195,7 @@ module SVG
+       def burn
+         raise "No data available" unless @data.size > 0
+         
+-        calculations if respond_to? :calculations
++        calculations if methods.include? 'calculations'
+ 
+         start_svg
+         calculate_graph_dimensions
+@@ -355,7 +355,7 @@ module SVG
+       # by subclasses.
+       def init_with config
+         config.each { |key, value|
+-          self.send((key.to_s+"=").to_sym, value ) if respond_to? key.to_sym
++          self.send( key.to_s+"=", value ) if methods.include? key.to_s
+         }
+       end
+ 
+diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb
+index 0adf207..973ee46 100644
+--- a/lib/redcloth3.rb
++++ b/lib/redcloth3.rb
+@@ -577,7 +577,7 @@ class RedCloth3 < String
+         end
+     end
+     
+-    QUOTES_RE = /(^>+([^\n]*?)(\n|$))+/m
++    QUOTES_RE = /(^>+([^\n]*?)\n?)+/m
+     QUOTES_CONTENT_RE = /^([> ]+)(.*)$/m
+     
+     def block_textile_quotes( text )
+diff --git a/lib/redmine/unified_diff.rb b/lib/redmine/unified_diff.rb
+index 09fbfcf..43f033f 100644
+--- a/lib/redmine/unified_diff.rb
++++ b/lib/redmine/unified_diff.rb
+@@ -20,7 +20,6 @@ module Redmine
+   class UnifiedDiff < Array  
+     def initialize(diff, options={})
+       options.assert_valid_keys(:type, :max_lines)
+-      diff = diff.split("\n") if diff.is_a?(String)
+       diff_type = options[:type] || 'inline'
+       
+       lines = 0
+diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
+index 7356b13..2c70799 100644
+--- a/test/functional/issues_controller_test.rb
++++ b/test/functional/issues_controller_test.rb
+@@ -177,7 +177,7 @@ class IssuesControllerTest < ActionController::TestCase
+     assert_template 'index.rhtml'
+     assert_not_nil assigns(:issues)
+     count_by_group = assigns(:issue_count_by_group)
+-    assert_kind_of Hash, count_by_group
++    assert_kind_of OrderedHash, count_by_group
+     assert_kind_of Tracker, count_by_group.keys.first
+     assert_not_nil count_by_group[Tracker.find(1)]
+   end
+@@ -188,7 +188,7 @@ class IssuesControllerTest < ActionController::TestCase
+     assert_template 'index.rhtml'
+     assert_not_nil assigns(:issues)
+     count_by_group = assigns(:issue_count_by_group)
+-    assert_kind_of Hash, count_by_group
++    assert_kind_of OrderedHash, count_by_group
+     assert_kind_of String, count_by_group.keys.first
+     assert_not_nil count_by_group['MySQL']
+   end
+diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
+index b8ff4f0..18a1cb8 100644
+--- a/test/unit/mailer_test.rb
++++ b/test/unit/mailer_test.rb
+@@ -141,7 +141,7 @@ class MailerTest < ActiveSupport::TestCase
+     mail = ActionMailer::Base.deliveries.last
+     assert_not_nil mail
+     assert_equal Mailer.message_id_for(journal), mail.message_id
+-    assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
++    assert_equal Mailer.message_id_for(journal.issue), mail.references.to_s
+   end
+   
+   def test_message_posted_message_id
+@@ -161,7 +161,7 @@ class MailerTest < ActiveSupport::TestCase
+     mail = ActionMailer::Base.deliveries.last
+     assert_not_nil mail
+     assert_equal Mailer.message_id_for(message), mail.message_id
+-    assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
++    assert_equal Mailer.message_id_for(message.parent), mail.references.to_s
+   end
+   
+   # test mailer methods for each language
+diff --git a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb
+index 6be3c5e..fb67341 100644
+--- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb
++++ b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb
+@@ -166,7 +166,7 @@ module CollectiveIdea #:nodoc:
+           # Don't rebuild a valid tree.
+           return true if valid?
+           
+-          scope = lambda{|node|}
++          scope = lambda{}
+           if acts_as_nested_set_options[:scope]
+             scope = lambda{|node| 
+               scope_column_names.inject(""){|str, column_name|
+diff --git a/vendor/plugins/engines/boot.rb b/vendor/plugins/engines/boot.rb
+index 7dd90d1..c153353 100644
+--- a/vendor/plugins/engines/boot.rb
++++ b/vendor/plugins/engines/boot.rb
+@@ -1,6 +1,6 @@
+ begin
+   require 'rails/version'
+-  unless Rails::VERSION::MAJOR >= 2 && Rails::VERSION::MINOR >= 3 && Rails::VERSION::TINY >= 2
++  unless Rails::VERSION::MAJOR >= 2 && Rails::VERSION::MINOR >= 2 && Rails::VERSION::TINY >= 3
+     raise "This version of the engines plugin requires Rails 2.3.2 or later!"
+   end
+ end
+@@ -14,4 +14,4 @@ require File.join(File.dirname(__FILE__), 'lib/engines')
+   :default_plugin_loader => Engines::Plugin::Loader,
+   :default_plugins => [:engines, :all] }.each do |name, default|    
+   Rails::Configuration.send(:define_method, name) { default }
+-end
+\ No newline at end of file
++end
+diff --git a/vendor/plugins/prepend_engine_views/init.rb b/vendor/plugins/prepend_engine_views/init.rb
+deleted file mode 100644
+index cbf0e89..0000000
+--- a/vendor/plugins/prepend_engine_views/init.rb
++++ /dev/null
+@@ -1,21 +0,0 @@
+-module PrependEngineViews
+-  def self.included(base)
+-    base.send(:include, InstanceMethods)
+-    base.class_eval do
+-      alias_method_chain :add_engine_view_paths, :prepend
+-    end
+-  end
+-
+-  module InstanceMethods
+-    # Patch Rails so engine's views are prepended to the view_path,
+-    # thereby letting plugins override application views
+-    def add_engine_view_paths_with_prepend
+-      paths = ActionView::PathSet.new(engines.collect(&:view_path))
+-      ActionController::Base.view_paths.unshift(*paths)
+-      ActionMailer::Base.view_paths.unshift(*paths) if configuration.frameworks.include?(:action_mailer)
+-    end
+-  end
+-end
+-
+-Rails::Plugin::Loader.send :include, PrependEngineViews
+-

Modified: trunk/redmine/debian/patches/series
===================================================================
--- trunk/redmine/debian/patches/series	2009-11-23 00:21:21 UTC (rev 4377)
+++ trunk/redmine/debian/patches/series	2009-11-23 00:21:25 UTC (rev 4378)
@@ -1,4 +1,4 @@
 version.patch
-rails22.patch
+revert_rails_2.3.patch
 01_paths.patch
 02_session_path.patch

Modified: trunk/redmine/debian/patches/version.patch
===================================================================
--- trunk/redmine/debian/patches/version.patch	2009-11-23 00:21:21 UTC (rev 4377)
+++ trunk/redmine/debian/patches/version.patch	2009-11-23 00:21:25 UTC (rev 4378)
@@ -7,7 +7,7 @@
    module VERSION #:nodoc:
      MAJOR = 0
 -    MINOR = 8
--    TINY  = 5
+-    TINY  = 7
 +    MINOR = 9
 +    TINY  = 0
      




More information about the Pkg-ruby-extras-commits mailing list