diff options
-rw-r--r-- | activerecord/lib/active_record/railties/console_sandbox.rb | 3 | ||||
-rw-r--r-- | railties/test/application/console_test.rb | 18 |
2 files changed, 10 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/railties/console_sandbox.rb b/activerecord/lib/active_record/railties/console_sandbox.rb index 25a591aa43..604a220303 100644 --- a/activerecord/lib/active_record/railties/console_sandbox.rb +++ b/activerecord/lib/active_record/railties/console_sandbox.rb @@ -1,4 +1,5 @@ -ActiveRecord::Base.connection.begin_transaction +ActiveRecord::Base.connection.begin_transaction(joinable: false) + at_exit do ActiveRecord::Base.connection.rollback_transaction end diff --git a/railties/test/application/console_test.rb b/railties/test/application/console_test.rb index 588682d3d4..592bd73924 100644 --- a/railties/test/application/console_test.rb +++ b/railties/test/application/console_test.rb @@ -119,9 +119,11 @@ class FullStackConsoleTest < ActiveSupport::TestCase assert output.include?(expected), "#{expected.inspect} expected, but got:\n\n#{output}" end - def write_prompt(command) + def write_prompt(command, expected_output = nil) @master.puts command assert_output command + assert_output expected_output if expected_output + assert_output "> " end def kill(pid) @@ -143,21 +145,17 @@ class FullStackConsoleTest < ActiveSupport::TestCase def test_sandbox pid = spawn_console - write_prompt "Post.count" - assert_output "=> 0" - + write_prompt "Post.count", "=> 0" write_prompt "Post.create" - assert_output "=> " - - write_prompt "Post.count" - assert_output "=> 1" + write_prompt "Post.count", "=> 1" kill pid pid = spawn_console - write_prompt "Post.count" - assert_output "=> 0" + write_prompt "Post.count", "=> 0" + write_prompt "Post.transaction { Post.create; raise }" + write_prompt "Post.count", "=> 0" ensure kill pid end |