aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-02-17 19:28:13 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-02-17 19:28:13 +0000
commitbc574a86ac3b19108341af9deb2d23609d44d5c0 (patch)
tree366dda7bce4fc06881ff08aaae595c186734fc18
parentea3faf3df9c13b8e4b0a6553da676099e92abc4f (diff)
downloadrails-bc574a86ac3b19108341af9deb2d23609d44d5c0.tar.gz
rails-bc574a86ac3b19108341af9deb2d23609d44d5c0.tar.bz2
rails-bc574a86ac3b19108341af9deb2d23609d44d5c0.zip
Skip Active Record tests in Action Pack if the SQLite database cant be brought up
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@652 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/test/abstract_unit.rb1
-rw-r--r--actionpack/test/controller/active_record_assertions_test.rb210
-rwxr-xr-xactiverecord/test/abstract_unit.rb1
-rw-r--r--activerecord/test/connections/native_sqlite/connection.rb5
-rw-r--r--activerecord/test/connections/native_sqlite3/connection.rb6
5 files changed, 119 insertions, 104 deletions
diff --git a/actionpack/test/abstract_unit.rb b/actionpack/test/abstract_unit.rb
index 0fcb5e852d..3d61559ee3 100644
--- a/actionpack/test/abstract_unit.rb
+++ b/actionpack/test/abstract_unit.rb
@@ -1,4 +1,5 @@
$:.unshift(File.dirname(__FILE__) + '/../lib')
+$:.unshift(File.dirname(__FILE__) + '/../../activesupport/lib')
require 'test/unit'
require 'action_controller'
diff --git a/actionpack/test/controller/active_record_assertions_test.rb b/actionpack/test/controller/active_record_assertions_test.rb
index 2a005b8586..49db40c5a2 100644
--- a/actionpack/test/controller/active_record_assertions_test.rb
+++ b/actionpack/test/controller/active_record_assertions_test.rb
@@ -1,120 +1,128 @@
path_to_ar = File.dirname(__FILE__) + '/../../../activerecord'
if Object.const_defined?("ActiveRecord") || File.exist?(path_to_ar)
-# This test is very different than the others. It requires ActiveRecord to
-# run. There's a bunch of stuff we are assuming here:
-#
-# 1. activerecord exists as a sibling directory to actionpack
-# (i.e., actionpack/../activerecord)
-# 2. you've created the appropriate database to run the active_record unit tests
-# 3. you set the appropriate database connection below
-
-driver_to_use = 'native_sqlite'
-
-$: << path_to_ar + '/lib/'
-$: << path_to_ar + '/test/'
-require 'active_record' unless Object.const_defined?("ActiveRecord")
-require "connections/#{driver_to_use}/connection"
-require 'fixtures/company'
-
-# -----------------------------------------------------------------------------
-
-# add some validation rules to trip up the assertions
-class Company
- protected
- def validate
- errors.add_on_empty('name')
- errors.add('rating', 'rating should not be 2') if rating == 2
- errors.add_to_base('oh oh') if rating == 3
- end
-end
+
+ # This test is very different than the others. It requires ActiveRecord to
+ # run. There's a bunch of stuff we are assuming here:
+ #
+ # 1. activerecord exists as a sibling directory to actionpack
+ # (i.e., actionpack/../activerecord)
+ # 2. you've created the appropriate database to run the active_record unit tests
+ # 3. you set the appropriate database connection below
-# -----------------------------------------------------------------------------
+ begin
-require File.dirname(__FILE__) + '/../abstract_unit'
+ driver_to_use = 'native_sqlite'
-# a controller class to handle the AR assertions
-class ActiveRecordAssertionsController < ActionController::Base
- # fail with 1 bad column
- def nasty_columns_1
- @company = Company.new
- @company.name = "B"
- @company.rating = 2
- render_text "snicker...."
- end
+ $: << path_to_ar + '/lib/'
+ $: << path_to_ar + '/test/'
+ require 'active_record' unless Object.const_defined?("ActiveRecord")
+ require "connections/#{driver_to_use}/connection"
+ require 'fixtures/company'
+
+ # -----------------------------------------------------------------------------
+
+ # add some validation rules to trip up the assertions
+ class Company
+ protected
+ def validate
+ errors.add_on_empty('name')
+ errors.add('rating', 'rating should not be 2') if rating == 2
+ errors.add_to_base('oh oh') if rating == 3
+ end
+ end
+
+ # -----------------------------------------------------------------------------
+
+ require File.dirname(__FILE__) + '/../abstract_unit'
+
+ # a controller class to handle the AR assertions
+ class ActiveRecordAssertionsController < ActionController::Base
+ # fail with 1 bad column
+ def nasty_columns_1
+ @company = Company.new
+ @company.name = "B"
+ @company.rating = 2
+ render_text "snicker...."
+ end
- # fail with 2 bad column
- def nasty_columns_2
- @company = Company.new
- @company.name = ""
- @company.rating = 2
- render_text "double snicker...."
- end
+ # fail with 2 bad column
+ def nasty_columns_2
+ @company = Company.new
+ @company.name = ""
+ @company.rating = 2
+ render_text "double snicker...."
+ end
- # this will pass validation
- def good_company
- @company = Company.new
- @company.name = "A"
- @company.rating = 69
- render_text "Goodness Gracious!"
- end
+ # this will pass validation
+ def good_company
+ @company = Company.new
+ @company.name = "A"
+ @company.rating = 69
+ render_text "Goodness Gracious!"
+ end
- # this will fail validation
- def bad_company
- @company = Company.new
- render_text "Who's Bad?"
- end
+ # this will fail validation
+ def bad_company
+ @company = Company.new
+ render_text "Who's Bad?"
+ end
- # the safety dance......
- def rescue_action(e) raise; end
-end
+ # the safety dance......
+ def rescue_action(e) raise; end
+ end
-# -----------------------------------------------------------------------------
+ # -----------------------------------------------------------------------------
-ActiveRecordAssertionsController.template_root = File.dirname(__FILE__) + "/../fixtures/"
+ ActiveRecordAssertionsController.template_root = File.dirname(__FILE__) + "/../fixtures/"
-# The test case to try the AR assertions
-class ActiveRecordAssertionsControllerTest < Test::Unit::TestCase
- # set it up
- def setup
- @request = ActionController::TestRequest.new
- @response = ActionController::TestResponse.new
- @controller = ActiveRecordAssertionsController.new
- end
+ # The test case to try the AR assertions
+ class ActiveRecordAssertionsControllerTest < Test::Unit::TestCase
+ # set it up
+ def setup
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ @controller = ActiveRecordAssertionsController.new
+ end
- # test for 1 bad apple column
- def test_some_invalid_columns
- process :nasty_columns_1
- assert_success
- assert_invalid_record 'company'
- assert_invalid_column_on_record 'company', 'rating'
- assert_valid_column_on_record 'company', 'name'
- assert_valid_column_on_record 'company', ['name','id']
- end
+ # test for 1 bad apple column
+ def test_some_invalid_columns
+ process :nasty_columns_1
+ assert_success
+ assert_invalid_record 'company'
+ assert_invalid_column_on_record 'company', 'rating'
+ assert_valid_column_on_record 'company', 'name'
+ assert_valid_column_on_record 'company', ['name','id']
+ end
- # test for 2 bad apples columns
- def test_all_invalid_columns
- process :nasty_columns_2
- assert_success
- assert_invalid_record 'company'
- assert_invalid_column_on_record 'company', 'rating'
- assert_invalid_column_on_record 'company', 'name'
- assert_invalid_column_on_record 'company', ['name','rating']
- end
+ # test for 2 bad apples columns
+ def test_all_invalid_columns
+ process :nasty_columns_2
+ assert_success
+ assert_invalid_record 'company'
+ assert_invalid_column_on_record 'company', 'rating'
+ assert_invalid_column_on_record 'company', 'name'
+ assert_invalid_column_on_record 'company', ['name','rating']
+ end
- # ensure we have no problems with an ActiveRecord
- def test_valid_record
- process :good_company
- assert_success
- assert_valid_record 'company'
- end
+ # ensure we have no problems with an ActiveRecord
+ def test_valid_record
+ process :good_company
+ assert_success
+ assert_valid_record 'company'
+ end
- # ensure we have problems with an ActiveRecord
- def test_invalid_record
- process :bad_company
- assert_success
- assert_invalid_record 'company'
+ # ensure we have problems with an ActiveRecord
+ def test_invalid_record
+ process :bad_company
+ assert_success
+ assert_invalid_record 'company'
+ end
+ end
+
+ rescue SqliteError => e
+ puts "Skipping active record based tests"
+ puts e.message
end
-end
-end \ No newline at end of file
+end
diff --git a/activerecord/test/abstract_unit.rb b/activerecord/test/abstract_unit.rb
index dbab4b0e80..c798383e6d 100755
--- a/activerecord/test/abstract_unit.rb
+++ b/activerecord/test/abstract_unit.rb
@@ -1,4 +1,5 @@
$:.unshift(File.dirname(__FILE__) + '/../lib')
+$:.unshift(File.dirname(__FILE__) + '/../../activesupport/lib')
require 'test/unit'
require 'active_record'
diff --git a/activerecord/test/connections/native_sqlite/connection.rb b/activerecord/test/connections/native_sqlite/connection.rb
index db688bdb70..e702006bc2 100644
--- a/activerecord/test/connections/native_sqlite/connection.rb
+++ b/activerecord/test/connections/native_sqlite/connection.rb
@@ -3,6 +3,9 @@ require 'fixtures/course'
require 'logger'
ActiveRecord::Base.logger = Logger.new("debug.log")
+class SqliteError < StandardError
+end
+
BASE_DIR = File.expand_path(File.dirname(__FILE__) + '/../../fixtures')
sqlite_test_db = "#{BASE_DIR}/fixture_database.sqlite"
sqlite_test_db2 = "#{BASE_DIR}/fixture_database_2.sqlite"
@@ -12,7 +15,7 @@ def make_connection(clazz, db_file, db_definitions_file)
puts "SQLite database not found at #{db_file}. Rebuilding it."
sqlite_command = "sqlite #{db_file} 'create table a (a integer); drop table a;'"
puts "Executing '#{sqlite_command}'"
- `#{sqlite_command}`
+ raise SqliteError.new("Seems that there is no sqlite executable available") unless system(sqlite_command)
clazz.establish_connection(
:adapter => "sqlite",
:dbfile => db_file)
diff --git a/activerecord/test/connections/native_sqlite3/connection.rb b/activerecord/test/connections/native_sqlite3/connection.rb
index 573d942716..640a2b97f5 100644
--- a/activerecord/test/connections/native_sqlite3/connection.rb
+++ b/activerecord/test/connections/native_sqlite3/connection.rb
@@ -2,7 +2,9 @@ print "Using native SQLite3\n"
require 'fixtures/course'
require 'logger'
ActiveRecord::Base.logger = Logger.new("debug.log")
-ActiveRecord::Base.logger.level = Logger::DEBUG
+
+class SqliteError < StandardError
+end
BASE_DIR = File.expand_path(File.dirname(__FILE__) + '/../../fixtures')
sqlite_test_db = "#{BASE_DIR}/fixture_database.sqlite3"
@@ -13,7 +15,7 @@ def make_connection(clazz, db_file, db_definitions_file)
puts "SQLite3 database not found at #{db_file}. Rebuilding it."
sqlite_command = "sqlite3 #{db_file} 'create table a (a integer); drop table a;'"
puts "Executing '#{sqlite_command}'"
- `#{sqlite_command}`
+ raise SqliteError.new("Seems that there is no sqlite3 executable available") unless system(sqlite_command)
clazz.establish_connection(
:adapter => "sqlite3",
:dbfile => db_file)