From 1f86371ae77ee7a01aa649e166cefb1b8bb1839e Mon Sep 17 00:00:00 2001 From: Charles Leifer Date: Wed, 6 Mar 2019 08:19:59 -0600 Subject: [PATCH] 3.9.2 Adds testcase for handling of connection server_version. Ensures that the connection is set-up and server version set before calling initialize connection hook. --- CHANGELOG.md | 8 ++++---- peewee.py | 4 ++-- tests/database.py | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 755304b2b..fff7a70a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,14 +7,14 @@ https://github.com/coleifer/peewee/releases ## master -[View commits](https://github.com/coleifer/peewee/compare/3.9.1...master) +[View commits](https://github.com/coleifer/peewee/compare/3.9.2...master) -## 3.9.1 +## 3.9.1 and 3.9.2 Includes a bugfix for an `AttributeError` that occurs when using MySQL with the -`MySQLdb` client. +`MySQLdb` client. The 3.9.2 release includes fixes for a test failure. -[View commits](https://github.com/coleifer/peewee/compare/3.9.0...3.9.1) +[View commits](https://github.com/coleifer/peewee/compare/3.9.0...3.9.2) ## 3.9.0 diff --git a/peewee.py b/peewee.py index 5c5f29aef..2fb246d50 100644 --- a/peewee.py +++ b/peewee.py @@ -61,7 +61,7 @@ mysql = None -__version__ = '3.9.1' +__version__ = '3.9.2' __all__ = [ 'AsIs', 'AutoField', @@ -2775,9 +2775,9 @@ def connect(self, reuse_if_open=False): self._state.reset() with __exception_wrapper__: self._state.set_connection(self._connect()) - self._initialize_connection(self._state.conn) if self.server_version is None: self._set_server_version(self._state.conn) + self._initialize_connection(self._state.conn) return True def _initialize_connection(self, conn): diff --git a/tests/database.py b/tests/database.py index b8cb0fcc7..bbdf65ae4 100644 --- a/tests/database.py +++ b/tests/database.py @@ -253,6 +253,28 @@ def assertBatches(n_objs, batch_size, n_commits): assertBatches(12, 12, 1) assertBatches(12, 13, 1) + def test_server_version(self): + class FakeDatabase(Database): + server_version = None + def _connect(self): + return 1 + def _close(self, conn): + pass + def _set_server_version(self, conn): + self.server_version = (1, 33, 7) + + db = FakeDatabase(':memory:') + self.assertTrue(db.server_version is None) + db.connect() + self.assertEqual(db.server_version, (1, 33, 7)) + db.close() + self.assertEqual(db.server_version, (1, 33, 7)) + + db.server_version = (1, 2, 3) + db.connect() + self.assertEqual(db.server_version, (1, 2, 3)) + db.close() + class TestThreadSafety(ModelTestCase): nthreads = 4