mirror of https://github.com/rails/rails
In a number of places in the tests, we only need to turn off transactional fixtures when the DB does not support savepoints. This speeds the test run up by about 8-9% on my computer, when running rake test_sqlite3_mem :)
This commit is contained in:
parent
29452abb84
commit
4e19ec566c
|
@ -13,7 +13,8 @@ require 'models/book'
|
|||
require 'models/citation'
|
||||
|
||||
class AssociationsJoinModelTest < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
fixtures :posts, :authors, :categories, :categorizations, :comments, :tags, :taggings, :author_favorites, :vertices, :items, :books,
|
||||
# Reload edges table from fixtures as otherwise repeated test was failing
|
||||
:edges
|
||||
|
|
|
@ -572,7 +572,7 @@ class TestDefaultAutosaveAssociationOnNewRecord < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
class TestDestroyAsPartOfAutosaveAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.create(:catchphrase => "Don' botharrr talkin' like one, savvy?")
|
||||
|
@ -797,7 +797,7 @@ class TestDestroyAsPartOfAutosaveAssociation < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.create(:catchphrase => "Don' botharrr talkin' like one, savvy?")
|
||||
|
@ -917,7 +917,7 @@ class TestAutosaveAssociationOnAHasOneAssociation < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationOnABelongsToAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@ship = Ship.create(:name => 'Nights Dirty Lightning')
|
||||
|
@ -1164,7 +1164,7 @@ module AutosaveAssociationOnACollectionAssociationTests
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@association_name = :birds
|
||||
|
@ -1178,7 +1178,7 @@ class TestAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationOnAHasAndBelongsToManyAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@association_name = :parrots
|
||||
|
@ -1193,7 +1193,7 @@ class TestAutosaveAssociationOnAHasAndBelongsToManyAssociation < ActiveRecord::T
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationValidationsOnAHasManyAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.create(:catchphrase => "Don' botharrr talkin' like one, savvy?")
|
||||
|
@ -1209,7 +1209,7 @@ class TestAutosaveAssociationValidationsOnAHasManyAssociation < ActiveRecord::Te
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationValidationsOnAHasOneAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.create(:catchphrase => "Don' botharrr talkin' like one, savvy?")
|
||||
|
@ -1230,7 +1230,7 @@ class TestAutosaveAssociationValidationsOnAHasOneAssociation < ActiveRecord::Tes
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationValidationsOnABelongsToAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.create(:catchphrase => "Don' botharrr talkin' like one, savvy?")
|
||||
|
@ -1250,7 +1250,7 @@ class TestAutosaveAssociationValidationsOnABelongsToAssociation < ActiveRecord::
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationValidationsOnAHABTMAssociation < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.create(:catchphrase => "Don' botharrr talkin' like one, savvy?")
|
||||
|
@ -1272,7 +1272,7 @@ class TestAutosaveAssociationValidationsOnAHABTMAssociation < ActiveRecord::Test
|
|||
end
|
||||
|
||||
class TestAutosaveAssociationValidationMethodsGeneration < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.new
|
||||
|
|
|
@ -31,6 +31,10 @@ def in_memory_db?
|
|||
ActiveRecord::Base.connection_pool.spec.config[:database] == ":memory:"
|
||||
end
|
||||
|
||||
def supports_savepoints?
|
||||
ActiveRecord::Base.connection.supports_savepoints?
|
||||
end
|
||||
|
||||
def with_env_tz(new_tz = 'US/Eastern')
|
||||
old_tz, ENV['TZ'] = ENV['TZ'], new_tz
|
||||
yield
|
||||
|
|
|
@ -19,11 +19,6 @@ end
|
|||
class OptimisticLockingTest < ActiveRecord::TestCase
|
||||
fixtures :people, :legacy_things, :references
|
||||
|
||||
# need to disable transactional fixtures, because otherwise the sqlite3
|
||||
# adapter (at least) chokes when we try and change the schema in the middle
|
||||
# of a test (see test_increment_counter_*).
|
||||
self.use_transactional_fixtures = false
|
||||
|
||||
def test_lock_existing
|
||||
p1 = Person.find(1)
|
||||
p2 = Person.find(1)
|
||||
|
@ -152,6 +147,33 @@ class OptimisticLockingTest < ActiveRecord::TestCase
|
|||
assert_equal "unchangeable name", p.first_name
|
||||
end
|
||||
|
||||
def test_quote_table_name
|
||||
ref = references(:michael_magician)
|
||||
ref.favourite = !ref.favourite
|
||||
assert ref.save
|
||||
end
|
||||
|
||||
# Useful for partial updates, don't only update the lock_version if there
|
||||
# is nothing else being updated.
|
||||
def test_update_without_attributes_does_not_only_update_lock_version
|
||||
assert_nothing_raised do
|
||||
p1 = Person.create!(:first_name => 'anika')
|
||||
lock_version = p1.lock_version
|
||||
p1.save
|
||||
p1.reload
|
||||
assert_equal lock_version, p1.lock_version
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class OptimisticLockingWithSchemaChangeTest < ActiveRecord::TestCase
|
||||
fixtures :people, :legacy_things, :references
|
||||
|
||||
# need to disable transactional fixtures, because otherwise the sqlite3
|
||||
# adapter (at least) chokes when we try and change the schema in the middle
|
||||
# of a test (see test_increment_counter_*).
|
||||
self.use_transactional_fixtures = false
|
||||
|
||||
{ :lock_version => Person, :custom_lock_version => LegacyThing }.each do |name, model|
|
||||
define_method("test_increment_counter_updates_#{name}") do
|
||||
counter_test model, 1 do |id|
|
||||
|
@ -198,24 +220,6 @@ class OptimisticLockingTest < ActiveRecord::TestCase
|
|||
assert_raises(ActiveRecord::RecordNotFound) { LegacyThing.find(t.id) }
|
||||
end
|
||||
|
||||
def test_quote_table_name
|
||||
ref = references(:michael_magician)
|
||||
ref.favourite = !ref.favourite
|
||||
assert ref.save
|
||||
end
|
||||
|
||||
# Useful for partial updates, don't only update the lock_version if there
|
||||
# is nothing else being updated.
|
||||
def test_update_without_attributes_does_not_only_update_lock_version
|
||||
assert_nothing_raised do
|
||||
p1 = Person.create!(:first_name => 'anika')
|
||||
lock_version = p1.lock_version
|
||||
p1.save
|
||||
p1.reload
|
||||
assert_equal lock_version, p1.lock_version
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def add_counter_column_to(model, col='test_count')
|
||||
|
@ -254,11 +258,11 @@ end
|
|||
|
||||
unless current_adapter?(:SybaseAdapter, :OpenBaseAdapter) || in_memory_db?
|
||||
class PessimisticLockingTest < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
fixtures :people, :readers
|
||||
|
||||
def setup
|
||||
Person.connection_pool.clear_reloadable_connections
|
||||
Person.connection_pool.clear_reloadable_connections!
|
||||
# Avoid introspection queries during tests.
|
||||
Person.columns; Reader.columns
|
||||
end
|
||||
|
|
|
@ -14,7 +14,7 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|||
class Reminder < ActiveRecord::Base; end
|
||||
|
||||
class ActiveRecord::Migration
|
||||
class <<self
|
||||
class << self
|
||||
attr_accessor :message_count
|
||||
end
|
||||
|
||||
|
@ -2083,4 +2083,3 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ require 'models/bird'
|
|||
require_dependency 'models/course'
|
||||
|
||||
class MultipleDbTest < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@courses = create_fixtures("courses") { Course.retrieve_connection }
|
||||
|
|
|
@ -859,7 +859,7 @@ class TestNestedAttributesWithNonStandardPrimaryKeys < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
class TestHasOneAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@pirate = Pirate.create!(:catchphrase => "My baby takes tha mornin' train!")
|
||||
|
@ -899,7 +899,7 @@ class TestHasOneAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRe
|
|||
end
|
||||
|
||||
class TestHasManyAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@ship = Ship.create!(:name => "The good ship Dollypop")
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'active_record/session_store'
|
|||
module ActiveRecord
|
||||
class SessionStore
|
||||
class SessionTest < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints? && ActiveRecord::Base.connection.supports_ddl_transactions?
|
||||
|
||||
def setup
|
||||
super
|
||||
|
|
|
@ -4,7 +4,7 @@ class TestRecord < ActiveRecord::Base
|
|||
end
|
||||
|
||||
class TestUnconnectedAdapter < ActiveRecord::TestCase
|
||||
self.use_transactional_fixtures = false
|
||||
self.use_transactional_fixtures = false unless supports_savepoints?
|
||||
|
||||
def setup
|
||||
@underlying = ActiveRecord::Base.connection
|
||||
|
|
Loading…
Reference in New Issue