Mercurial > hg > soundsoftware-site
diff vendor/plugins/engines/test/unit/load_path_test.rb @ 0:513646585e45
* Import Redmine trunk SVN rev 3859
author | Chris Cannam |
---|---|
date | Fri, 23 Jul 2010 15:52:44 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/plugins/engines/test/unit/load_path_test.rb Fri Jul 23 15:52:44 2010 +0100 @@ -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