aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/adapters/mysql2
diff options
context:
space:
mode:
authorDylan Thacker-Smith <Dylan.Smith@shopify.com>2016-09-08 10:38:58 -0400
committerDylan Thacker-Smith <Dylan.Smith@shopify.com>2016-09-08 11:16:04 -0400
commit01adc45672672459c98880babb39ff5b357e1296 (patch)
tree31b2553b9664e1d7604659ef769b1782bd23e6fb /activerecord/test/cases/adapters/mysql2
parent087427e0d1f7baf804ae52e13dc55bfa78a50123 (diff)
downloadrails-01adc45672672459c98880babb39ff5b357e1296.tar.gz
rails-01adc45672672459c98880babb39ff5b357e1296.tar.bz2
rails-01adc45672672459c98880babb39ff5b357e1296.zip
activerecord/mysql2: Avoid setting @connection to nil, just close it
By doing `@connection = nil` that means that we need nil checks before it is used anywhere, but we weren't doing those checks. Instead, we get a NoMethodError after using a connection after it fails to reconnect. Neither of the other adapters set @connection to nil, just the mysql2 adapter. By just closing it, we avoid the need to check if we have a connection object and it will produce an appropriate exception when used.
Diffstat (limited to 'activerecord/test/cases/adapters/mysql2')
-rw-r--r--activerecord/test/cases/adapters/mysql2/connection_test.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/mysql2/connection_test.rb b/activerecord/test/cases/adapters/mysql2/connection_test.rb
index 9ede57d395..e014229650 100644
--- a/activerecord/test/cases/adapters/mysql2/connection_test.rb
+++ b/activerecord/test/cases/adapters/mysql2/connection_test.rb
@@ -63,6 +63,27 @@ class Mysql2ConnectionTest < ActiveRecord::Mysql2TestCase
assert @connection.active?
end
+ def test_execute_after_disconnect
+ @connection.disconnect!
+ error = assert_raise(ActiveRecord::StatementInvalid) do
+ @connection.execute("SELECT 1")
+ end
+ assert_match /closed MySQL connection/, error.message
+ end
+
+ def test_quote_after_disconnect
+ @connection.disconnect!
+ error = assert_raise(Mysql2::Error) do
+ @connection.quote("string")
+ end
+ assert_match /closed MySQL connection/, error.message
+ end
+
+ def test_active_after_disconnect
+ @connection.disconnect!
+ assert_equal false, @connection.active?
+ end
+
def test_mysql_connection_collation_is_configured
assert_equal "utf8_unicode_ci", @connection.show_variable("collation_connection")
assert_equal "utf8_general_ci", ARUnit2Model.connection.show_variable("collation_connection")