diff options
Diffstat (limited to 'actionpack/test/active_record_unit.rb')
-rw-r--r-- | actionpack/test/active_record_unit.rb | 71 |
1 files changed, 43 insertions, 28 deletions
diff --git a/actionpack/test/active_record_unit.rb b/actionpack/test/active_record_unit.rb index 3ab9b6a50e..1a17977ff5 100644 --- a/actionpack/test/active_record_unit.rb +++ b/actionpack/test/active_record_unit.rb @@ -33,41 +33,52 @@ $stderr.flush # Define the rest of the connector class ActiveRecordTestConnector - def self.setup - unless self.connected || !self.able_to_connect - setup_connection - load_schema - self.connected = true + class << self + def setup + unless self.connected || !self.able_to_connect + setup_connection + load_schema + require_fixture_models + self.connected = true + end + rescue Object => e + $stderr.puts "\nSkipping ActiveRecord assertion tests: #{e}" + #$stderr.puts " #{e.backtrace.join("\n ")}\n" + self.able_to_connect = false end - rescue Object => e - $stderr.puts "\nSkipping ActiveRecord assertion tests: #{e}" - #$stderr.puts " #{e.backtrace.join("\n ")}\n" - self.able_to_connect = false - end - private + private + + def setup_connection + if Object.const_defined?(:ActiveRecord) + begin + connection_options = {:adapter => 'sqlite3', :dbfile => ':memory:'} + ActiveRecord::Base.establish_connection(connection_options) + ActiveRecord::Base.configurations = { 'sqlite3_ar_integration' => connection_options } + ActiveRecord::Base.connection + rescue Object + $stderr.puts 'SQLite 3 unavailable; falling to SQLite 2.' + connection_options = {:adapter => 'sqlite', :dbfile => ':memory:'} + ActiveRecord::Base.establish_connection(connection_options) + ActiveRecord::Base.configurations = { 'sqlite2_ar_integration' => connection_options } + ActiveRecord::Base.connection + end - def self.setup_connection - if Object.const_defined?(:ActiveRecord) - begin - ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :dbfile => ':memory:') - ActiveRecord::Base.connection - rescue Object - $stderr.puts 'SQLite 3 unavailable; falling to SQLite 2.' - ActiveRecord::Base.establish_connection(:adapter => 'sqlite', :dbfile => ':memory:') - ActiveRecord::Base.connection + Object.send(:const_set, :QUOTED_TYPE, ActiveRecord::Base.connection.quote_column_name('type')) unless Object.const_defined?(:QUOTED_TYPE) + else + raise "Couldn't locate ActiveRecord." end + end - Object.send(:const_set, :QUOTED_TYPE, ActiveRecord::Base.connection.quote_column_name('type')) unless Object.const_defined?(:QUOTED_TYPE) - else - raise "Couldn't locate ActiveRecord." + # Load actionpack sqlite tables + def load_schema + File.read(File.dirname(__FILE__) + "/fixtures/db_definitions/sqlite.sql").split(';').each do |sql| + ActiveRecord::Base.connection.execute(sql) unless sql.blank? + end end - end - # Load actionpack sqlite tables - def self.load_schema - File.read(File.dirname(__FILE__) + "/fixtures/db_definitions/sqlite.sql").split(';').each do |sql| - ActiveRecord::Base.connection.execute(sql) unless sql.blank? + def require_fixture_models + Dir.glob(File.dirname(__FILE__) + "/fixtures/*.rb").each {|f| require f} end end end @@ -80,6 +91,10 @@ class ActiveRecordTestCase < Test::Unit::TestCase self.use_transactional_fixtures = false end + def self.fixtures(*args) + super if ActiveRecordTestConnector.connected + end + def setup abort_tests unless ActiveRecordTestConnector.connected end |