+<%= hidden_field_tag 'settings[default_projects_public]', 0 %>
+<%= check_box_tag 'settings[default_projects_public]', 1, Setting.default_projects_public? %>
+
+<%= hidden_field_tag 'settings[sequential_project_identifiers]', 0 %>
+<%= check_box_tag 'settings[sequential_project_identifiers]', 1, Setting.sequential_project_identifiers? %>
+
diff --git a/app/views/settings/_repositories.rhtml b/app/views/settings/_repositories.rhtml
index a20fc5131..4f07f053a 100644
--- a/app/views/settings/_repositories.rhtml
+++ b/app/views/settings/_repositories.rhtml
@@ -2,10 +2,14 @@
-<%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %><%= hidden_field_tag 'settings[autofetch_changesets]', 0 %>
+<%= hidden_field_tag 'settings[autofetch_changesets]', 0 %>
+<%= check_box_tag 'settings[autofetch_changesets]', 1, Setting.autofetch_changesets? %>
+
-<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %>
+<%= hidden_field_tag 'settings[sys_api_enabled]', 0 %>
+<%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %>
+
<% REDMINE_SUPPORTED_SCM.each do |scm| -%>
diff --git a/config/boot.rb b/config/boot.rb
index 67cc517f2..dd5e3b691 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.expand_path("#{File.dirname(__FILE__)}/..") unless defined?(RAILS_ROOT)
+RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
module Rails
class << self
@@ -44,6 +44,7 @@ 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
@@ -81,8 +82,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 f98968bcb..d173db412 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.2.2' unless defined? RAILS_GEM_VERSION
+RAILS_GEM_VERSION = '2.3.4' 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 f4ae06cd6..94d40faaf 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
+ full_messages << attr_name + ' ' + message.to_s
end
end
end
diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb
new file mode 100644
index 000000000..c2169ed01
--- /dev/null
+++ b/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# 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
new file mode 100644
index 000000000..d531b8bb8
--- /dev/null
+++ b/config/initializers/inflections.rb
@@ -0,0 +1,10 @@
+# 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 e83c5d893..a66a86bf3 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -59,6 +59,22 @@ 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 c03b5aecc..0a5536bdc 100644
--- a/config/locales/bs.yml
+++ b/config/locales/bs.yml
@@ -83,9 +83,16 @@ 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 45f4a644f..7315b1cd6 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -59,6 +59,22 @@ 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 087da5fbe..59e1b95f9 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -59,6 +59,22 @@ 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 ec0386ab5..2453ec9ab 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -85,7 +85,16 @@ da:
# separator:
delimiter: ""
precision: 1
- storage_units: [Bytes, KB, MB, GB, TB]
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Byte"
+ other: "Bytes"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
percentage:
format:
# separator:
diff --git a/config/locales/de.yml b/config/locales/de.yml
index da3e8935c..da700a6e4 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -83,6 +83,16 @@ 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 8e20ed5c0..479b440d4 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -63,6 +63,22 @@ 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 190a6d797..0b30843e9 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -59,6 +59,23 @@ 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 af21eeff3..fd1a6405d 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -47,6 +47,16 @@ 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 2a67e7243..b0e00b00c 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -61,7 +61,16 @@ fi:
format:
delimiter: ""
precision: 1
- storage_units: [Tavua, KB, MB, GB, TB]
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Tavua"
+ other: "Tavua"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
datetime:
distance_in_words:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 7eb0f062b..e6231e8ef 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -84,7 +84,16 @@ fr:
human:
format:
precision: 2
- storage_units: [ Octet, ko, Mo, Go, To ]
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "Octet"
+ other: "Octet"
+ kb: "ko"
+ mb: "Mo"
+ gb: "Go"
+ tb: "To"
support:
array:
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 55bcd0b44..f8aab4b1e 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -33,6 +33,16 @@ 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 423ebfbd5..8124ddac0 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -76,6 +76,17 @@ 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 4d4500546..58fa75049 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -90,7 +90,16 @@
format:
delimiter: ""
precision: 1
- storage_units: [bájt, KB, MB, GB, TB]
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "bájt"
+ other: "bájt"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
support:
array:
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 5cb022fbe..64d5daf86 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -74,6 +74,17 @@ 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 0bc521fc3..107f84a33 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -96,6 +96,16 @@ ja:
format:
delimiter: ""
precision: 1
+ 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/ko.yml b/config/locales/ko.yml
index e2e01cb99..7b06e4ac7 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -116,7 +116,16 @@ ko:
# separator:
delimiter: ""
precision: 1
- storage_units: [Bytes, KB, MB, GB, TB]
+ 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/lt.yml b/config/locales/lt.yml
index 050fc1ce1..2c27f50cd 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -28,7 +28,16 @@ lt:
format:
delimiter: ""
precision: 1
- storage_units: [baitai, KB, MB, GB, TB]
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "baitai"
+ other: "baitai"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
datetime:
distance_in_words:
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 4f858aba8..a53f76720 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -59,6 +59,22 @@ 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 82b9d3252..fddcc2f94 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -67,6 +67,18 @@
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 77850cae0..d7e4849b3 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -21,7 +21,16 @@ pl:
format:
delimiter: ""
precision: 1
- storage_units: [B, KB, MB, GB, TB]
+ storage_units:
+ format: "%n %u"
+ units:
+ byte:
+ one: "B"
+ other: "B"
+ kb: "KB"
+ mb: "MB"
+ gb: "GB"
+ tb: "TB"
date:
formats:
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 578c4fa4e..23e571819 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -93,6 +93,16 @@ 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 20b5b5330..1c444f674 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -83,6 +83,16 @@ 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 dde7dace3..04eb98548 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -57,6 +57,22 @@ 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 feb870d3e..6f3a641dc 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -59,6 +59,22 @@ 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 d7434b99f..6881ac9c5 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -59,6 +59,22 @@ 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 c8aa7c26c..1edc4e1f0 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -81,6 +81,17 @@
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 d007017f3..f17c64d09 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -47,7 +47,16 @@ sv:
# separator:
delimiter: ""
# precision: 1
- storage_units: [Byte, KB, MB, GB, TB]
+ 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/th.yml b/config/locales/th.yml
index 49d55940d..98d3c3c2b 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -59,6 +59,22 @@ 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 f7f57b134..d721eeb8f 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -92,6 +92,16 @@ 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 dbb085d6e..8209cc4fc 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -59,6 +59,22 @@ 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 383d1953f..69524197f 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -49,7 +49,16 @@ vi:
# separator:
delimiter: ""
precision: 1
- storage_units: [Bytes, KB, MB, GB, TB]
+ 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/zh-TW.yml b/config/locales/zh-TW.yml
index 4068b3c88..e9199c3d5 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -86,8 +86,9 @@
precision: 1
# 儲存單位輸出格式.
# %u 是儲存單位, %n 是數值 (預設值: 2 MB)
+ storage_units:
format: "%n %u"
- storage_units:
+ units:
byte:
one: "位元組 (B)"
other: "位元組 (B)"
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index b55462284..a064828b4 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -86,7 +86,16 @@ zh:
format:
delimiter: ""
precision: 1
- storage_units: [Bytes, KB, MB, GB, TB]
+ 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/routes.rb b/config/routes.rb
index 5357fc30f..3b790af14 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -6,11 +6,6 @@ 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/tabular_form_builder.rb b/lib/tabular_form_builder.rb
index 5bf690bd4..8728266ba 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 fb23e6bb7..8184fa312 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 < Test::Unit::TestCase
+class AccountControllerTest < ActionController::TestCase
fixtures :users, :roles
def setup
diff --git a/test/functional/admin_controller_test.rb b/test/functional/admin_controller_test.rb
index 32965de4c..47091c42f 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 < Test::Unit::TestCase
+class AdminControllerTest < ActionController::TestCase
fixtures :projects, :users, :roles
def setup
diff --git a/test/functional/application_controller_test.rb b/test/functional/application_controller_test.rb
index 0232b6a4d..7e221c252 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'
+require 'application_controller'
# Re-raise errors caught by the controller.
class ApplicationController; def rescue_action(e) raise e end; end
-class ApplicationControllerTest < Test::Unit::TestCase
+class ApplicationControllerTest < ActionController::TestCase
include Redmine::I18n
def setup
diff --git a/test/functional/attachments_controller_test.rb b/test/functional/attachments_controller_test.rb
index 3a4b89785..bf57349fe 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 < Test::Unit::TestCase
+class AttachmentsControllerTest < ActionController::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 eb9a50ea5..254ee9385 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 < Test::Unit::TestCase
+class BoardsControllerTest < ActionController::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 10af23563..5b27446bd 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 < Test::Unit::TestCase
+class CustomFieldsControllerTest < ActionController::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 c0fe0957e..11c706596 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 < Test::Unit::TestCase
+class DocumentsControllerTest < ActionController::TestCase
fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :documents, :enumerations
def setup
diff --git a/test/functional/enumerations_controller_test.rb b/test/functional/enumerations_controller_test.rb
index afbe23aaa..8c66186f1 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 < Test::Unit::TestCase
+class EnumerationsControllerTest < ActionController::TestCase
fixtures :enumerations, :issues, :users
def setup
diff --git a/test/functional/groups_controller_test.rb b/test/functional/groups_controller_test.rb
index ac61db425..91fc42c34 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 < Test::Unit::TestCase
+class GroupsControllerTest < ActionController::TestCase
fixtures :projects, :users, :members, :member_roles
def setup
diff --git a/test/functional/issue_categories_controller_test.rb b/test/functional/issue_categories_controller_test.rb
index ffb87339d..3d1dd069a 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 < Test::Unit::TestCase
+class IssueCategoriesControllerTest < ActionController::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 a23f64a96..85661749f 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 < Test::Unit::TestCase
+class IssueRelationsControllerTest < ActionController::TestCase
fixtures :projects,
:users,
:roles,
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index 95e75b43b..0d282c127 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 < Test::Unit::TestCase
+class IssuesControllerTest < ActionController::TestCase
fixtures :projects,
:users,
:roles,
@@ -42,7 +42,8 @@ class IssuesControllerTest < Test::Unit::TestCase
:custom_fields_trackers,
:time_entries,
:journals,
- :journal_details
+ :journal_details,
+ :queries
def setup
@controller = IssuesController.new
@@ -452,14 +453,16 @@ class IssuesControllerTest < Test::Unit::TestCase
def test_post_new
@request.session[:user_id] = 2
- 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_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
issue = Issue.find_by_subject('This is the test_new issue')
assert_not_nil issue
@@ -483,12 +486,14 @@ class IssuesControllerTest < Test::Unit::TestCase
def test_post_new_without_custom_fields_param
@request.session[:user_id] = 2
- 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'
+ 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
end
def test_post_new_with_required_custom_field_and_without_custom_fields_param
@@ -536,14 +541,16 @@ class IssuesControllerTest < Test::Unit::TestCase
def test_post_new_should_send_a_notification
ActionMailer::Base.deliveries.clear
@request.session[:user_id] = 2
- 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_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
assert_equal 1, ActionMailer::Base.deliveries.size
end
diff --git a/test/functional/journals_controller_test.rb b/test/functional/journals_controller_test.rb
index ae112ab6f..0a11bab3e 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 < Test::Unit::TestCase
+class JournalsControllerTest < ActionController::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 e99f99a2c..8365f3170 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 < Test::Unit::TestCase
+class MailHandlerControllerTest < ActionController::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 91f36abec..bc5f92e88 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 < Test::Unit::TestCase
+class MembersControllerTest < ActionController::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 70061aca3..2522f0a87 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 < Test::Unit::TestCase
+class MessagesControllerTest < ActionController::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 997340096..8862466e7 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 < Test::Unit::TestCase
+class MyControllerTest < ActionController::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 cea35ca4a..427d75b75 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 < Test::Unit::TestCase
+class NewsControllerTest < ActionController::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 0560a54b6..81b501ea5 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 < Test::Unit::TestCase
+class ProjectsControllerTest < ActionController::TestCase
fixtures :projects, :versions, :users, :roles, :members, :member_roles, :issues, :journals, :journal_details,
:trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations, :boards, :messages,
:attachments
diff --git a/test/functional/queries_controller_test.rb b/test/functional/queries_controller_test.rb
index 8edde44aa..af2a86e11 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 < Test::Unit::TestCase
+class QueriesControllerTest < ActionController::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 < Test::Unit::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', :query_id => q
+ assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
assert q.is_public?
assert q.has_default_columns?
assert q.valid?
@@ -88,7 +88,7 @@ class QueriesControllerTest < Test::Unit::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', :query_id => q
+ assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook', :query_id => q
assert !q.is_public?
assert q.has_default_columns?
assert q.valid?
@@ -104,7 +104,7 @@ class QueriesControllerTest < Test::Unit::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', :query_id => q
+ assert_redirected_to :controller => 'issues', :action => 'index', :project_id => nil, :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 125b175c6..ab33b3035 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 < Test::Unit::TestCase
+class ReportsControllerTest < ActionController::TestCase
fixtures :all
def setup
diff --git a/test/functional/repositories_bazaar_controller_test.rb b/test/functional/repositories_bazaar_controller_test.rb
index 98aa2369f..18841d54e 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 < Test::Unit::TestCase
+class RepositoriesBazaarControllerTest < ActionController::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 d51a42976..d786c2e21 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 < Test::Unit::TestCase
+class RepositoriesControllerTest < ActionController::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 c728bf362..f3d4ecfe1 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 < Test::Unit::TestCase
+class RepositoriesCvsControllerTest < ActionController::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 3f841e9a1..b605ff82b 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 < Test::Unit::TestCase
+class RepositoriesDarcsControllerTest < ActionController::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 6c2502f51..37c6fb848 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 < Test::Unit::TestCase
+class RepositoriesGitControllerTest < ActionController::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 ec2526550..f2639ee92 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 < Test::Unit::TestCase
+class RepositoriesMercurialControllerTest < ActionController::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 fe1b3dbe5..865bae35c 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 < Test::Unit::TestCase
+class RepositoriesSubversionControllerTest < ActionController::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 61e9bd6df..200408837 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 < Test::Unit::TestCase
+class RolesControllerTest < ActionController::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 4f79081ae..b062468a6 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 < Test::Unit::TestCase
+class SearchControllerTest < ActionController::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 0e919a741..1e0c48f0e 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 < Test::Unit::TestCase
+class SettingsControllerTest < ActionController::TestCase
fixtures :users
def setup
diff --git a/test/functional/sys_controller_test.rb b/test/functional/sys_controller_test.rb
index db9dd2aa3..59b1d2af6 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 < Test::Unit::TestCase
+class SysControllerTest < ActionController::TestCase
fixtures :projects, :repositories
def setup
diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb
index df80f5d5a..371fded18 100644
--- a/test/functional/timelog_controller_test.rb
+++ b/test/functional/timelog_controller_test.rb
@@ -21,7 +21,7 @@ require 'timelog_controller'
# Re-raise errors caught by the controller.
class TimelogController; def rescue_action(e) raise e end; end
-class TimelogControllerTest < Test::Unit::TestCase
+class TimelogControllerTest < ActionController::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 e2109ba6f..ec412245a 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 < Test::Unit::TestCase
+class TrackersControllerTest < ActionController::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 5f62b1549..df87462a8 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 < Test::Unit::TestCase
+class UsersControllerTest < ActionController::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 3d212def3..4343b887a 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 < Test::Unit::TestCase
+class VersionsControllerTest < ActionController::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 275599f9b..3b48767b9 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 < Test::Unit::TestCase
+class WatchersControllerTest < ActionController::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 0376fd857..5fef176ab 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 < Test::Unit::TestCase
+class WelcomeControllerTest < ActionController::TestCase
fixtures :projects, :news
def setup
diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb
index 9d104c527..cf247db80 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 < Test::Unit::TestCase
+class WikiControllerTest < ActionController::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 7a5634f1d..dc7df4d95 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 < Test::Unit::TestCase
+class WikisControllerTest < ActionController::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 d6078bbb9..19187b7fe 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 < Test::Unit::TestCase
+class WorkflowsControllerTest < ActionController::TestCase
fixtures :roles, :trackers, :workflows
def setup
diff --git a/test/helper_testcase.rb b/test/helper_testcase.rb
index aba6784a0..1ce9d8661 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 < Test::Unit::TestCase
+class HelperTestCase < ActiveSupport::TestCase
# Add other helpers here if you need them
include ActionView::Helpers::ActiveRecordHelper
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 88117e540..fba2987d3 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -21,7 +21,7 @@ require 'test_help'
require File.expand_path(File.dirname(__FILE__) + '/helper_testcase')
require File.join(RAILS_ROOT,'test', 'mocks', 'open_id_authentication_mock.rb')
-class Test::Unit::TestCase
+class ActiveSupport::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
@@ -55,7 +55,7 @@ class Test::Unit::TestCase
end
def test_uploaded_file(name, mime)
- ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + "/files/#{name}", mime)
+ ActionController::TestUploadedFile.new(ActiveSupport::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 0b1773dd2..86a07e6a5 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 < Test::Unit::TestCase
+class ActivityTest < ActiveSupport::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 ae92991f8..75a7a3c90 100644
--- a/test/unit/attachment_test.rb
+++ b/test/unit/attachment_test.rb
@@ -17,7 +17,7 @@
require File.dirname(__FILE__) + '/../test_helper'
-class AttachmentTest < Test::Unit::TestCase
+class AttachmentTest < ActiveSupport::TestCase
fixtures :issues, :users
def setup
diff --git a/test/unit/auth_source_ldap_test.rb b/test/unit/auth_source_ldap_test.rb
index 30abd5dd8..d0f7a6edf 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 < Test::Unit::TestCase
+class AuthSourceLdapTest < ActiveSupport::TestCase
def setup
end
diff --git a/test/unit/board_test.rb b/test/unit/board_test.rb
index 3ba4b2d97..569c4620a 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 < Test::Unit::TestCase
+class BoardTest < ActiveSupport::TestCase
fixtures :projects, :boards, :messages
def setup
diff --git a/test/unit/calendar_test.rb b/test/unit/calendar_test.rb
index 98d856921..05e1d0bad 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 < Test::Unit::TestCase
+class CalendarTest < ActiveSupport::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 51d8b7452..9af53a3ca 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 < Test::Unit::TestCase
+class ChangesetTest < ActiveSupport::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 c07ee8273..0a62148c3 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 < Test::Unit::TestCase
+class CommentTest < ActiveSupport::TestCase
fixtures :users, :news, :comments
def setup
diff --git a/test/unit/custom_field_test.rb b/test/unit/custom_field_test.rb
index 2f17d99cf..513c6fb2e 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 < Test::Unit::TestCase
+class CustomFieldTest < ActiveSupport::TestCase
fixtures :custom_fields
def test_create
diff --git a/test/unit/custom_value_test.rb b/test/unit/custom_value_test.rb
index 11578ae6b..08492ef58 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 < Test::Unit::TestCase
+class CustomValueTest < ActiveSupport::TestCase
fixtures :custom_fields
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 457f885ee..a63d205c1 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 < Test::Unit::TestCase
+class DefaultDataTest < ActiveSupport::TestCase
include Redmine::I18n
fixtures :roles
diff --git a/test/unit/document_category_test.rb b/test/unit/document_category_test.rb
index 6fa93a371..8b814432c 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 < Test::Unit::TestCase
+class DocumentCategoryTest < ActiveSupport::TestCase
fixtures :enumerations, :documents
def test_should_be_an_enumeration
diff --git a/test/unit/document_test.rb b/test/unit/document_test.rb
index 1950f8558..02ae94dd0 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 < Test::Unit::TestCase
+class DocumentTest < ActiveSupport::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 3daec434f..5e662ebc7 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 < Test::Unit::TestCase
+class EnabledModuleTest < ActiveSupport::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 14ea5e25c..4dc6e15c3 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 < Test::Unit::TestCase
+class EnumerationTest < ActiveSupport::TestCase
fixtures :enumerations, :issues
def setup
diff --git a/test/unit/filesystem_adapter_test.rb b/test/unit/filesystem_adapter_test.rb
index 720d1e92c..26e97bda6 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 < Test::Unit::TestCase
+class FilesystemAdapterTest < ActiveSupport::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 50bded062..9ab25c154 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 < Test::Unit::TestCase
+class GitAdapterTest < ActiveSupport::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 79b9d4180..4b26f8f2c 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 < Test::Unit::TestCase
+class GroupTest < ActiveSupport::TestCase
fixtures :all
def test_create
diff --git a/test/unit/issue_category_test.rb b/test/unit/issue_category_test.rb
index a6edb3c7b..ebb9f0f13 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 < Test::Unit::TestCase
+class IssueCategoryTest < ActiveSupport::TestCase
fixtures :issue_categories, :issues
def setup
diff --git a/test/unit/issue_priority_test.rb b/test/unit/issue_priority_test.rb
index e2da1e82d..6574bf38c 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 < Test::Unit::TestCase
+class IssuePriorityTest < ActiveSupport::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 aebe74cb6..042f30e32 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 < Test::Unit::TestCase
+class IssueStatusTest < ActiveSupport::TestCase
fixtures :issue_statuses, :issues
def test_create
diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb
index a6710edc0..147d31f8c 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 < Test::Unit::TestCase
+class IssueTest < ActiveSupport::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 147af4aae..87273ad46 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 < Test::Unit::TestCase
+class JournalTest < ActiveSupport::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 5dd87d28c..dcc84c19f 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 < Test::Unit::TestCase
+class Redmine::AccessControlTest < ActiveSupport::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 9313a36c7..de74f1e57 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 < Test::Unit::TestCase
+class Redmine::Hook::ManagerTest < ActiveSupport::TestCase
fixtures :issues
diff --git a/test/unit/lib/redmine/i18n_test.rb b/test/unit/lib/redmine/i18n_test.rb
index 8b91359a9..35401f1c2 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 < Test::Unit::TestCase
+class Redmine::I18nTest < ActiveSupport::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 79d086944..2cf151841 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 < Test::Unit::TestCase
+class Redmine::MimeTypeTest < ActiveSupport::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 e6237c216..234da14ea 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 < Test::Unit::TestCase
+class Redmine::PluginTest < ActiveSupport::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 5e6ba1aef..5b26cde25 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 < Test::Unit::TestCase
+class Redmine::UnifiedDiffTest < ActiveSupport::TestCase
def setup
end
diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb
index 9a9d7d805..9b6c28ba3 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 < Test::Unit::TestCase
+class MailHandlerTest < ActiveSupport::TestCase
fixtures :users, :projects,
:enabled_modules,
:roles,
diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
index b1c39bb5e..5024a845b 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 < Test::Unit::TestCase
+class MailerTest < ActiveSupport::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
@@ -103,9 +103,19 @@ class MailerTest < Test::Unit::TestCase
journal = Journal.find(2)
Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
- assert !mail.body.include?('Bug #1: Can\'t print recipes')
+ assert_equal 1, mail.parts.size
+ assert !mail.encoded.include?('href')
end
-
+
+ def test_html_mail
+ Setting.plain_text_mail = 0
+ journal = Journal.find(2)
+ Mailer.deliver_issue_edit(journal)
+ mail = ActionMailer::Base.deliveries.last
+ assert_equal 2, mail.parts.size
+ assert mail.encoded.include?('href')
+ end
+
def test_issue_add_message_id
ActionMailer::Base.deliveries.clear
issue = Issue.find(1)
diff --git a/test/unit/member_test.rb b/test/unit/member_test.rb
index 66f1283ca..87e0086d2 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 < Test::Unit::TestCase
+class MemberTest < ActiveSupport::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 a2673ad42..f7b0d3c5b 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 < Test::Unit::TestCase
+ class MercurialAdapterTest < ActiveSupport::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 09857fbc9..5bce8a899 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 < Test::Unit::TestCase
+class MessageTest < ActiveSupport::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 a4fc89e90..e9d3880e5 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 < Test::Unit::TestCase
+class NewsTest < ActiveSupport::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 13c63a054..c40475e4c 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 < Test::Unit::TestCase
+class ProjectTest < ActiveSupport::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 73efa426f..f1f9397c6 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 < Test::Unit::TestCase
+class QueryTest < ActiveSupport::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 b7a3cf98e..c29e04ede 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 < Test::Unit::TestCase
+class RepositoryBazaarTest < ActiveSupport::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 47c407037..d240a6efd 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 < Test::Unit::TestCase
+class RepositoryCvsTest < ActiveSupport::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 0c8c9a143..b9ad95db6 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 < Test::Unit::TestCase
+class RepositoryDarcsTest < ActiveSupport::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 6b643f96f..7688dd4ee 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 < Test::Unit::TestCase
+class RepositoryFilesystemTest < ActiveSupport::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 382774305..5ebbb00c1 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 < Test::Unit::TestCase
+class RepositoryGitTest < ActiveSupport::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 0f993ac16..6ce3d5fa0 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 < Test::Unit::TestCase
+class RepositoryMercurialTest < ActiveSupport::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 b0eb88c01..17a0a42b0 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 < Test::Unit::TestCase
+class RepositorySubversionTest < ActiveSupport::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 497eeabfd..cc356ec1d 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 < Test::Unit::TestCase
+class RepositoryTest < ActiveSupport::TestCase
fixtures :projects,
:trackers,
:projects_trackers,
diff --git a/test/unit/role_test.rb b/test/unit/role_test.rb
index cab668c50..1e76dd887 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 < Test::Unit::TestCase
+class RoleTest < ActiveSupport::TestCase
fixtures :roles, :workflows
def test_copy_workflows
diff --git a/test/unit/search_test.rb b/test/unit/search_test.rb
index 46d769451..71ed7ad08 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 < Test::Unit::TestCase
+class SearchTest < ActiveSupport::TestCase
fixtures :users,
:members,
:member_roles,
diff --git a/test/unit/setting_test.rb b/test/unit/setting_test.rb
index 34d07c193..25ec41701 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 < Test::Unit::TestCase
+class SettingTest < ActiveSupport::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 9f208839a..ddef52df2 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 < Test::Unit::TestCase
+class SubversionAdapterTest < ActiveSupport::TestCase
if find_executable0('svn')
def test_client_version
diff --git a/test/unit/time_entry_activity_test.rb b/test/unit/time_entry_activity_test.rb
index f99c8ab4e..9422a91ab 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 < Test::Unit::TestCase
+class TimeEntryActivityTest < ActiveSupport::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 dd54fd1b2..7ac1c02a3 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 < Test::Unit::TestCase
+class TimeEntryTest < ActiveSupport::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 64ac85a39..42791e6a7 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 < Test::Unit::TestCase
+class TokenTest < ActiveSupport::TestCase
fixtures :tokens
def test_create
diff --git a/test/unit/tracker_test.rb b/test/unit/tracker_test.rb
index 6dab8890c..efc2aa7ed 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 < Test::Unit::TestCase
+class TrackerTest < ActiveSupport::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 cf6787b17..19dc63ff8 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 < Test::Unit::TestCase
+class UserPreferenceTest < ActiveSupport::TestCase
fixtures :users, :user_preferences
def test_create
diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
index 7080c0b5b..e685f53b6 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 < Test::Unit::TestCase
+class UserTest < ActiveSupport::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 6c5297fc4..7df857927 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 < Test::Unit::TestCase
+class VersionTest < ActiveSupport::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 9566e6a7c..f49365edf 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 < Test::Unit::TestCase
+class WatcherTest < ActiveSupport::TestCase
fixtures :issues, :users
def setup
diff --git a/test/unit/wiki_content_test.rb b/test/unit/wiki_content_test.rb
index f3f8bc041..372121bda 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 < Test::Unit::TestCase
+class WikiContentTest < ActiveSupport::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 df41a4a0a..1837edb18 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 < Test::Unit::TestCase
+class WikiPageTest < ActiveSupport::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 12f6b7d89..7e80638b2 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 < Test::Unit::TestCase
+class WikiRedirectTest < ActiveSupport::TestCase
fixtures :projects, :wikis
def setup
diff --git a/test/unit/wiki_test.rb b/test/unit/wiki_test.rb
index 23d4f442c..fd8a375e1 100644
--- a/test/unit/wiki_test.rb
+++ b/test/unit/wiki_test.rb
@@ -17,7 +17,7 @@
require File.dirname(__FILE__) + '/../test_helper'
-class WikiTest < Test::Unit::TestCase
+class WikiTest < ActiveSupport::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 b9640226c..6c621deeb 100644
--- a/vendor/plugins/engines/Rakefile
+++ b/vendor/plugins/engines/Rakefile
@@ -172,16 +172,29 @@ 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 "> Modifying default config files to load engines plugin"
+ puts "> Tweaking generated application to be suitable for testing"
+
+ # Replace the Rails plugin loader with the engines one.
insert_line("require File.join(File.dirname(__FILE__), '../vendor/plugins/engines/boot')",
:into => 'config/environment.rb',
:after => "require File.join(File.dirname(__FILE__), 'boot')")
-
- insert_line('map.from_plugin :test_routing', :into => 'config/routes.rb',
- :after => /\AActionController::Routing::Routes/)
-
+
+ # Add the engines test helper to handle fixtures & stuff.
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 619bd5a93..13f55ec97 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.1.0
\ No newline at end of file
+version: 2.3.2
\ No newline at end of file
diff --git a/vendor/plugins/engines/boot.rb b/vendor/plugins/engines/boot.rb
index f80f2b17b..1c55e2139 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 >= 2 && Rails::VERSION::TINY >= 0
- raise "This version of the engines plugin requires Rails 2.2.0 or later!"
+ 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!"
end
end
diff --git a/vendor/plugins/engines/init.rb b/vendor/plugins/engines/init.rb
index df9452632..28418166a 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 if defined? :Engines
-end
+ Engines.init(initializer) if defined? :Engines
+end
\ No newline at end of file
diff --git a/vendor/plugins/engines/lib/engines.rb b/vendor/plugins/engines/lib/engines.rb
index cb97e4702..d601710b0 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(action_mailer asset_helpers form_tag_helpers routing migrations dependencies)
+ self.rails_extensions = %w(asset_helpers form_tag_helpers migrations dependencies)
# The name of the public directory to mirror public engine assets into.
# Defaults to RAILS_ROOT/public/plugin_assets.
@@ -68,7 +68,7 @@ module Engines
mattr_accessor :disable_application_code_loading
self.disable_application_code_loading = false
- # Set this ti true if code should not be mixed (i.e. it will be loaded
+ # Set this to 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
+ def init(initializer)
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 in your plugin's init.rb:
+ # on your load path by including them in Rails load path mechanism, e.g. in init.rb:
#
- # Rails.plugins[:my_plugin].code_paths << "app/things"
+ # ActiveSupport::Dependencies.load_paths << File.join(File.dirname(__FILE__), '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 488bcd4bc..c52bbb0ce 100644
--- a/vendor/plugins/engines/lib/engines/plugin.rb
+++ b/vendor/plugins/engines/lib/engines/plugin.rb
@@ -4,23 +4,9 @@
#
# Engines.plugins[:plugin_name]
#
-# If this plugin contains paths in directories other than app/controllers,
-# app/helpers, app/models and components, 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
@@ -32,16 +18,6 @@ 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)
@@ -58,41 +34,23 @@ 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
- # for code_paths and controller_paths select those paths that actually
- # exist in the plugin's directory
+ # 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)
@@ -112,11 +70,6 @@ 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 (plugin/db/migrate)
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 a5be5967b..e316e4750 100644
--- a/vendor/plugins/engines/lib/engines/plugin/loader.rb
+++ b/vendor/plugins/engines/lib/engines/plugin/loader.rb
@@ -5,14 +5,7 @@ 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
deleted file mode 100644
index 32198d8e9..000000000
--- a/vendor/plugins/engines/lib/engines/rails_extensions/action_mailer.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-# 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
deleted file mode 100644
index aed85ffbc..000000000
--- a/vendor/plugins/engines/lib/engines/rails_extensions/routing.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-# 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 routes.rb file like the one below
-# at the root of your plugin (along-side init.rb and lib/):
-#
-# 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 RAILS_ROOT/config/routes.rb file
-# where you might have map.connect, you just use connect in your
-# plugin's routes.rb.
-#
-# === 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 routes.rb 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 config/routes.rb 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 routes.rb file.
- #
- # Plugin routes are loaded from /routes.rb.
- 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 f7833c385..c411f8335 100644
--- a/vendor/plugins/engines/lib/engines/testing.rb
+++ b/vendor/plugins/engines/lib/engines/testing.rb
@@ -67,10 +67,14 @@ 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")
- if File.directory?(plugin_fixtures_directory)
+ plugin_app_directory = File.join(plugin.directory, "app")
+ if File.directory?(plugin_app_directory) && File.directory?(plugin_fixtures_directory)
Engines.mirror_files_from(plugin_fixtures_directory, self.temporary_fixtures_directory)
end
end
@@ -84,4 +88,14 @@ 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 0ffd7e6e7..48e317066 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}, :name, :version) do |task, args|
- name = args[:name] || ENV['NAME']
+ task(:plugin => :environment) do
+ name = ENV['NAME']
if plugin = Engines.plugins[name]
- version = args[:version] || ENV['VERSION']
+ 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 /app or
-# /component. These tasks now include every file under a plugin's code paths (see
-# Plugin#code_paths).
+# /component. These tasks now include every file under a plugin's load paths (see
+# Plugin#load_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 code_paths (see Plugin#code_paths)
+ # Include every file in the plugin's load_paths (see Plugin#load_paths)
if Engines.plugins[plugin]
- files.include("#{plugin_base}/{#{Engines.plugins[plugin].code_paths.join(",")}}/**/*.rb")
+ files.include("#{plugin_base}/{#{Engines.plugins[plugin].load_paths.join(",")}}/**/*.rb")
end
if File.exists?("#{plugin_base}/README")
files.include("#{plugin_base}/README")
@@ -217,6 +217,34 @@ 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
new file mode 100644
index 000000000..90b13ff1f
--- /dev/null
+++ b/vendor/plugins/engines/test/app/controllers/app_and_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..05f9049e9
--- /dev/null
+++ b/vendor/plugins/engines/test/app/controllers/namespace/app_and_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..9e081e75f
--- /dev/null
+++ b/vendor/plugins/engines/test/app/helpers/mail_helper.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..f0fe903c4
--- /dev/null
+++ b/vendor/plugins/engines/test/app/models/app_and_plugin_model.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..899fc1a40
--- /dev/null
+++ b/vendor/plugins/engines/test/app/models/notify_mail.rb
@@ -0,0 +1,26 @@
+class NotifyMail < ActionMailer::Base
+
+ helper :mail
+
+ def signup(txt)
+ body(:name => txt)
+ end
+
+ def multipart
+ recipients 'some_address@email.com'
+ subject 'multi part email'
+ from "another_user@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@email.com'
+ subject 'multi part email'
+ from "another_user@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
new file mode 100644
index 000000000..ae6fbbf30
--- /dev/null
+++ b/vendor/plugins/engines/test/app/things/thing.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..03e2bf81d
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/app_and_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..03e2bf81d
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..042b5c4ef
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.html.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..552acc1ea
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.plain.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..135488b17
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/notify_mail/multipart_html.html.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..e0050461c
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/notify_mail/multipart_plain.html.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..5aaf46e97
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/notify_mail/signup.text.plain.erb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..67a6b8fa2
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/plugin_mail/mail_from_plugin_with_application_template.text.plain.erb
@@ -0,0 +1 @@
+<%= @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
new file mode 100644
index 000000000..284e450f6
--- /dev/null
+++ b/vendor/plugins/engines/test/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..d51bc0007
--- /dev/null
+++ b/vendor/plugins/engines/test/functional/controller_loading_test.rb
@@ -0,0 +1,51 @@
+# 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
new file mode 100644
index 000000000..309330659
--- /dev/null
+++ b/vendor/plugins/engines/test/functional/exception_notification_compatibility_test.rb
@@ -0,0 +1,29 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class ExceptionNotificationCompatibilityTest < ActionController::TestCase
+ ExceptionNotifier.exception_recipients = %w(joe@schmoe.com bill@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
new file mode 100644
index 000000000..21c8c7f94
--- /dev/null
+++ b/vendor/plugins/engines/test/functional/locale_loading_test.rb
@@ -0,0 +1,26 @@
+# 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
new file mode 100644
index 000000000..733dd39f5
--- /dev/null
+++ b/vendor/plugins/engines/test/functional/routes_test.rb
@@ -0,0 +1,29 @@
+# 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
new file mode 100644
index 000000000..5448ffeb7
--- /dev/null
+++ b/vendor/plugins/engines/test/functional/view_helpers_test.rb
@@ -0,0 +1,37 @@
+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
new file mode 100644
index 000000000..28d47546a
--- /dev/null
+++ b/vendor/plugins/engines/test/functional/view_loading_test.rb
@@ -0,0 +1,60 @@
+# 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
new file mode 100644
index 000000000..6ffe178a7
--- /dev/null
+++ b/vendor/plugins/engines/test/lib/app_and_plugin_lib_model.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..47bd2bbfd
--- /dev/null
+++ b/vendor/plugins/engines/test/lib/engines_test_helper.rb
@@ -0,0 +1,42 @@
+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
new file mode 100644
index 000000000..0deb5d9d3
--- /dev/null
+++ b/vendor/plugins/engines/test/lib/render_information.rb
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 000000000..736d59b83
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/alpha_plugin_controller.rb
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 000000000..c41d6edd1
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/app_and_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..5edf81b53
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/alpha_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..7431a36b6
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/app_and_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..fb162bcf6
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/shared_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..00539bb8c
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/shared_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..cde71b8d0
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/alpha_plugin_model.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..92e6e625f
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/app_and_plugin_model.rb
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 000000000..e2ef43db7
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/shared_plugin_model.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..1ad694584
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..791a6fab4
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..878e07c2c
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/plugin_layout.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..1ad694584
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..1ad694584
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..f144ab394
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..f144ab394
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..0ce4f91bb
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/alpha_plugin_lib_model.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..645a70c83
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/app_and_plugin_lib_model.rb
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 000000000..76d39d315
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/alpha_plugin/locales/en.yml
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..2e7798976
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/app_and_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..971c7d563
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/shared_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..ddd9dbede
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/shared_plugin_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..bfde227d1
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/models/shared_plugin_model.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..77b5a1538
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..77b5a1538
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/a_view.html.erb
@@ -0,0 +1 @@
+<%= 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
new file mode 100644
index 000000000..b4c4b0e1d
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/init.rb
@@ -0,0 +1 @@
+# 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
new file mode 100644
index 000000000..f49279cca
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/beta_plugin/locales/en.yml
@@ -0,0 +1,3 @@
+en:
+ hello: "Hello from beta"
+ plugin: "beta"
diff --git a/vendor/plugins/engines/test/plugins/not_a_plugin/public/should_not_be_copied.txt b/vendor/plugins/engines/test/plugins/not_a_plugin/public/should_not_be_copied.txt
new file mode 100644
index 000000000..e69de29bb
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
new file mode 100644
index 000000000..db5de2e6a
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/controllers/assets_controller.rb
@@ -0,0 +1,2 @@
+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
new file mode 100644
index 000000000..8340f76d1
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/index.html.erb
@@ -0,0 +1,4 @@
+<%= 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
new file mode 100644
index 000000000..b7da375e9
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/assets.html.erb
@@ -0,0 +1,3 @@
+
+ <%= yield %>
+
\ No newline at end of file
diff --git a/vendor/plugins/engines/test/plugins/test_assets/init.rb b/vendor/plugins/engines/test/plugins/test_assets/init.rb
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_assets/public/file.txt b/vendor/plugins/engines/test/plugins/test_assets/public/file.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/file_in_subfolder.txt b/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/file_in_subfolder.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/file.txt b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/file.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/file_in_subfolder.txt b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/file_in_subfolder.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/init.rb b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/init.rb
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/file.txt b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/file.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/init.rb b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/init.rb
new file mode 100644
index 000000000..e69de29bb
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
new file mode 100644
index 000000000..535d988e6
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/thing.rb
@@ -0,0 +1,3 @@
+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
new file mode 100644
index 000000000..b4c4b0e1d
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_code_mixing/init.rb
@@ -0,0 +1 @@
+# 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_load_path/init.rb b/vendor/plugins/engines/test/plugins/test_load_path/init.rb
new file mode 100644
index 000000000..e69de29bb
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
new file mode 100644
index 000000000..804a0cd2d
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/001_create_tests.rb
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 000000000..756aca653
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/002_create_others.rb
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 000000000..fb5b6c205
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/003_create_extras.rb
@@ -0,0 +1,11 @@
+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_migration/init.rb b/vendor/plugins/engines/test/plugins/test_migration/init.rb
new file mode 100644
index 000000000..e69de29bb
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
new file mode 100644
index 000000000..4f3661639
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/plugin_mail.rb
@@ -0,0 +1,26 @@
+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
new file mode 100644
index 000000000..2b4960625
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/mail_from_plugin.erb
@@ -0,0 +1 @@
+<%= @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
new file mode 100644
index 000000000..46291d8f0
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_html.html.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..f690dbaac
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_plain.html.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..795f0d508
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_html.html.erb
@@ -0,0 +1 @@
+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
new file mode 100644
index 000000000..795f0d508
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb
@@ -0,0 +1 @@
+template from plugin
\ No newline at end of file
diff --git a/vendor/plugins/engines/test/plugins/test_plugin_mailing/init.rb b/vendor/plugins/engines/test/plugins/test_plugin_mailing/init.rb
new file mode 100644
index 000000000..e69de29bb
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
new file mode 100644
index 000000000..29d7bdbd4
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/test_routing_controller.rb
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..ac3164a4f
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/test_routing_controller.rb
@@ -0,0 +1,9 @@
+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
new file mode 100644
index 000000000..dbc49f960
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_routing/config/routes.rb
@@ -0,0 +1,4 @@
+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_routing/init.rb b/vendor/plugins/engines/test/plugins/test_routing/init.rb
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_testing/app/README.txt b/vendor/plugins/engines/test/plugins/test_testing/app/README.txt
new file mode 100644
index 000000000..784e4fe28
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_testing/app/README.txt
@@ -0,0 +1 @@
+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/init.rb b/vendor/plugins/engines/test/plugins/test_testing/init.rb
new file mode 100644
index 000000000..e69de29bb
diff --git a/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/testing_fixtures.yml b/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/testing_fixtures.yml
new file mode 100644
index 000000000..e69de29bb
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
new file mode 100644
index 000000000..4c4c42a2c
--- /dev/null
+++ b/vendor/plugins/engines/test/plugins/test_testing/test/unit/override_test.rb
@@ -0,0 +1,13 @@
+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
new file mode 100644
index 000000000..fc3e75661
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/action_mailer_test.rb
@@ -0,0 +1,54 @@
+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
new file mode 100644
index 000000000..4b862f35b
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/arbitrary_code_mixing_test.rb
@@ -0,0 +1,41 @@
+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
new file mode 100644
index 000000000..3332c533e
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/assets_test.rb
@@ -0,0 +1,52 @@
+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
new file mode 100644
index 000000000..4fa3698f2
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/backwards_compat_test.rb
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 000000000..c26d331c3
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/load_path_test.rb
@@ -0,0 +1,58 @@
+# 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
new file mode 100644
index 000000000..eae7fe7d4
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/migration_test.rb
@@ -0,0 +1,63 @@
+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
new file mode 100644
index 000000000..e5aa773ba
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/model_and_lib_test.rb
@@ -0,0 +1,37 @@
+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
new file mode 100644
index 000000000..f8627bcee
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/plugins_test.rb
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 000000000..ea58a51c3
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/test_testing/override_test.rb
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 000000000..c0c37ed40
--- /dev/null
+++ b/vendor/plugins/engines/test/unit/testing_test.rb
@@ -0,0 +1,19 @@
+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
new file mode 100644
index 000000000..cbf0e89a9
--- /dev/null
+++ b/vendor/plugins/prepend_engine_views/init.rb
@@ -0,0 +1,21 @@
+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
+