Class: PluginTestEnvironment
- Inherits:
-
Object
- Object
- PluginTestEnvironment
- Defined in:
- lib/plugin_test_environment.rb
Class Attribute Summary collapse
-
.plugin_path ⇒ Object
Returns the value of attribute plugin_path.
Class Method Summary collapse
- .find_plugin_dir_by_caller ⇒ Object
- .fixture_path ⇒ Object
-
.init_env(plugin_dir, use_standard_migration = true) ⇒ Object
initializes the test environment.
- .init_environment(rails_version) ⇒ Object
- .initialize_engines ⇒ Object
- .initialize_engines_environment(plugin_dir, options = {:use_standard_migration => true}) ⇒ Object
-
.initialize_environment(plugin_dir, options = {:use_standard_migration => true}) ⇒ Object
initializes the test environment.
- .initialize_fixtures ⇒ Object
- .latest_rails_version ⇒ Object
- .load_nested_plugins ⇒ Object
- .log_path ⇒ Object
- .plugin_migration ⇒ Object
- .rails_root_dir(rails_version) ⇒ Object
- .remove_environment_for_rails_version(version) ⇒ Object
- .set_app_load_paths(config) ⇒ Object
- .set_app_view_path ⇒ Object
- .set_nested_plugin_load_paths(config) ⇒ Object
- .set_nested_plugin_view_paths ⇒ Object
- .test_helper_base_dir ⇒ Object
Class Attribute Details
.plugin_path ⇒ Object
Returns the value of attribute plugin_path.
4 5 6 |
# File 'lib/plugin_test_environment.rb', line 4 def plugin_path @plugin_path end |
Class Method Details
.find_plugin_dir_by_caller ⇒ Object
190 191 192 193 |
# File 'lib/plugin_test_environment.rb', line 190 def self.find_plugin_dir_by_caller # 1 = two levels up => Where the env is initialized File.dirname(caller[1].split(":").first) end |
.fixture_path ⇒ Object
164 165 166 167 168 169 170 |
# File 'lib/plugin_test_environment.rb', line 164 def self.fixture_path if File.exists?(PluginTestEnvironment.plugin_path + '/test/fixtures') PluginTestEnvironment.plugin_path + '/test/fixtures' else File.dirname(__FILE__) + "/../fixtures/" end end |
.init_env(plugin_dir, use_standard_migration = true) ⇒ Object
initializes the test environment
deprecated - use PluginTestEnvironment#initialize_environment instead
159 160 161 162 |
# File 'lib/plugin_test_environment.rb', line 159 def self.init_env(plugin_dir, use_standard_migration = true) puts "This method is deprecated please use PluginTestEnvironment#initialize_environment instead" initialize_environment(plugin_dir, :use_standard_migration => use_standard_migration) end |
.init_environment(rails_version) ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/plugin_test_environment.rb', line 63 def self.init_environment(rails_version) target_directory = File.join(test_helper_base_dir, rails_version) FileUtils.mkdir_p target_directory system("rails _#{rails_version}_ #{File.expand_path(target_directory)}") FileUtils.cp_r File.dirname(__FILE__) + '/../rails_root_fixtures/app/models', target_directory + '/app' FileUtils.cp_r File.dirname(__FILE__) + '/../rails_root_fixtures/db/migrate', target_directory + '/db' FileUtils.cp_r File.dirname(__FILE__) + '/../rails_root_fixtures/vendor/plugins/plugin_to_test', target_directory + '/vendor/plugins/' FileUtils.cp File.dirname(__FILE__) + '/../rails_root_fixtures/config/database.yml', target_directory + '/config/database.yml' end |
.initialize_engines ⇒ Object
93 94 95 96 |
# File 'lib/plugin_test_environment.rb', line 93 def self.initialize_engines require "#{self.plugin_path}/vendor/plugins/engines/boot" Engines.use_plugin_asset_directory = false end |
.initialize_engines_environment(plugin_dir, options = {:use_standard_migration => true}) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/plugin_test_environment.rb', line 78 def self.initialize_engines_environment(plugin_dir, = {:use_standard_migration => true}) initialize_environment(plugin_dir, .merge(:skip_fixtures => true)) do |config| initialize_engines set_app_load_paths(config) set_nested_plugin_load_paths(config) yield config if block_given? end set_app_view_path load_nested_plugins set_nested_plugin_view_paths initialize_fixtures unless [:skip_fixtures] end |
.initialize_environment(plugin_dir, options = {:use_standard_migration => true}) ⇒ Object
initializes the test environment
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/plugin_test_environment.rb', line 10 def self.initialize_environment(plugin_dir, = {:use_standard_migration => true}) if plugin_dir.nil? plugin_dir ||= find_plugin_dir_by_caller else if plugin_dir.is_a?(Hash) = plugin_dir plugin_dir = find_plugin_dir_by_caller end end self.plugin_path = File.join(plugin_dir, '..') require rails_root_dir([:rails_version]) + '/config/boot.rb' require File.dirname(__FILE__) + '/silent_logger' Rails::Initializer.run do |config| config.logger = SilentLogger.new config.log_level = :debug config.cache_classes = false config.whiny_nils = true config.load_paths << "#{File.dirname(__FILE__)}/../../../lib/" yield config if block_given? end require rails_root_dir([:rails_version]) + '/config/environment.rb' Test::Unit::TestCase.class_eval do cattr_accessor :rails_root self.rails_root = PluginTestEnvironment.plugin_path end initialize_fixtures unless [:skip_fixtures] ActiveRecord::Migrator.migrate("#{RAILS_ROOT}/db/migrate") if [:use_standard_migration] plugin_migration end |
.initialize_fixtures ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/plugin_test_environment.rb', line 136 def self.initialize_fixtures require 'test_help' Test::Unit::TestCase.fixture_path = PluginTestEnvironment.fixture_path $LOAD_PATH.unshift(Test::Unit::TestCase.fixture_path) Test::Unit::TestCase.class_eval do def create_fixtures(*table_names) if block_given? Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names) { yield } else Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names) end end self.use_transactional_fixtures = false self.use_instantiated_fixtures = false end end |
.latest_rails_version ⇒ Object
59 60 61 |
# File 'lib/plugin_test_environment.rb', line 59 def self.latest_rails_version Gem.cache.find_name(/^rails$/).map { |g| g.version.version }.last end |
.load_nested_plugins ⇒ Object
120 121 122 123 124 |
# File 'lib/plugin_test_environment.rb', line 120 def self.load_nested_plugins Dir.glob("#{self.plugin_path}/vendor/plugins/*/init.rb").each do |plugin| require plugin end end |
.log_path ⇒ Object
172 173 174 |
# File 'lib/plugin_test_environment.rb', line 172 def self.log_path PluginTestEnvironment.plugin_path + '/test/log' end |
.plugin_migration ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/plugin_test_environment.rb', line 176 def self.plugin_migration custom_migration = "#{PluginTestEnvironment.plugin_path}/test/migration.rb" if File.exists?(custom_migration) self.const_set(:Migration, Class.new(ActiveRecord::Migration)) Migration.class_eval do def self.setup(&block) self.class.send(:define_method, :up, &block) end end require custom_migration Migration.up end end |
.rails_root_dir(rails_version) ⇒ Object
49 50 51 52 53 |
# File 'lib/plugin_test_environment.rb', line 49 def self.rails_root_dir(rails_version) rails_dir = File.join(test_helper_base_dir, "#{rails_version || latest_rails_version}/") init_environment(rails_version || latest_rails_version) unless File.exists?(rails_dir) rails_dir end |
.remove_environment_for_rails_version(version) ⇒ Object
73 74 75 76 |
# File 'lib/plugin_test_environment.rb', line 73 def self.remove_environment_for_rails_version(version) dir = File.join(test_helper_base_dir, version) FileUtils.rm_r(dir) if File.exists?(dir) end |
.set_app_load_paths(config) ⇒ Object
98 99 100 101 102 |
# File 'lib/plugin_test_environment.rb', line 98 def self.set_app_load_paths(config) Dir["#{self.plugin_path}/app/**"].each do |path| config.load_paths << path end end |
.set_app_view_path ⇒ Object
113 114 115 116 117 118 |
# File 'lib/plugin_test_environment.rb', line 113 def self.set_app_view_path view_path = File.join(self.plugin_path, 'app', 'views') if File.exist?(view_path) ActionController::Base.view_paths.insert(1, view_path) end end |
.set_nested_plugin_load_paths(config) ⇒ Object
104 105 106 107 108 109 110 111 |
# File 'lib/plugin_test_environment.rb', line 104 def self.set_nested_plugin_load_paths(config) Dir["#{self.plugin_path}/vendor/plugins/*/init.rb"].each do |plugin| nested_plugin_dir = File.dirname(plugin) Dir["#{nested_plugin_dir}/lib", "#{nested_plugin_dir}/app/**"].each do |path| config.load_paths << path end end end |
.set_nested_plugin_view_paths ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/plugin_test_environment.rb', line 126 def self.set_nested_plugin_view_paths Dir.glob("#{self.plugin_path}/vendor/plugins/*/init.rb").each do |plugin| nested_plugin_dir = File.dirname(plugin) view_path = File.join(nested_plugin_dir, 'app', 'views') if File.exist?(view_path) ActionController::Base.view_paths.insert(1, view_path) end end end |
.test_helper_base_dir ⇒ Object
55 56 57 |
# File 'lib/plugin_test_environment.rb', line 55 def self.test_helper_base_dir File.join(ENV['HOME'], ".dry_plugin_test_helper") end |