diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb b/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb index fc94cf9e4242aadd7289e679189c4e0f0ac8b99b..3c9338ac798636051edf5eefed83afded6734f30 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3/database_statements.rb @@ -75,7 +75,7 @@ def exec_delete(sql, name = "SQL", binds = []) alias :exec_update :exec_delete def begin_isolated_db_transaction(isolation) #:nodoc - raise ArgumentError, "SQLite3 only supports the `read_uncommitted` transaction isolation level" if isolation != :read_uncommitted + raise TransactionIsolationError, "SQLite3 only supports the `read_uncommitted` transaction isolation level" if isolation != :read_uncommitted raise StandardError, "You need to enable the shared-cache mode in SQLite mode before attempting to change the transaction isolation level" unless shared_cache? Thread.current.thread_variable_set("read_uncommitted", @connection.get_first_value("PRAGMA read_uncommitted")) diff --git a/activerecord/test/cases/adapters/sqlite3/transaction_test.rb b/activerecord/test/cases/adapters/sqlite3/transaction_test.rb index 5d65312d36282c95f93de00c96677d3d39231bb1..afe94f4114c39509c9315bc7594b9019d3588eb9 100644 --- a/activerecord/test/cases/adapters/sqlite3/transaction_test.rb +++ b/activerecord/test/cases/adapters/sqlite3/transaction_test.rb @@ -19,7 +19,7 @@ class SQLite3TransactionTest < ActiveRecord::SQLite3TestCase test "raises when trying to open a transaction in a isolation level other than `read_uncommitted`" do with_connection do |conn| - assert_raises(ArgumentError) do + assert_raises(ActiveRecord::TransactionIsolationError) do conn.transaction(requires_new: true, isolation: :something) do conn.transaction_manager.materialize_transactions end diff --git a/activerecord/test/cases/transaction_isolation_test.rb b/activerecord/test/cases/transaction_isolation_test.rb index 84fdb544ba31fa4ba51534434203dcea105b2a4c..7f59602eb5237928b788f5c4e7500fc6e3c23771 100644 --- a/activerecord/test/cases/transaction_isolation_test.rb +++ b/activerecord/test/cases/transaction_isolation_test.rb @@ -10,8 +10,6 @@ class Tag < ActiveRecord::Base end test "setting the isolation level raises an error" do - skip if current_adapter?(:SQLite3Adapter) - assert_raises(ActiveRecord::TransactionIsolationError) do Tag.transaction(isolation: :serializable) { Tag.connection.materialize_transactions } end diff --git a/activerecord/test/cases/transactions_test.rb b/activerecord/test/cases/transactions_test.rb index 1d210e3d156b8e8a8d2f41e3dac97844cc09e723..c6a8b920c15a923e9ad490cbb6860666c94ab5b4 100644 --- a/activerecord/test/cases/transactions_test.rb +++ b/activerecord/test/cases/transactions_test.rb @@ -1127,7 +1127,7 @@ def test_no_automatic_savepoint_for_inner_transaction end end if Topic.connection.supports_savepoints? -if ActiveRecord::Base.connection.supports_transaction_isolation? && !in_memory_db? +if ActiveRecord::Base.connection.supports_transaction_isolation? && !current_adapter?(:SQLite3Adapter) class ConcurrentTransactionTest < TransactionTest # This will cause transactions to overlap and fail unless they are performed on # separate database connections.