summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2013-03-02 16:57:56 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2013-03-11 14:48:54 +0100
commit8717b0668caf00ec5e81ef5a1e31b4d7c64eee8a (patch)
tree2c2ca299470d06c67e005534fc4bb7e6f714ceb5 /tests
parentf5156194945661d217523d6648dfb9b48707ec95 (diff)
Separated autocommit and isolation level handling for PostgreSQL.
Autocommit cannot be manipulated independently from an open connection. This commit introduces a minor change in behavior: entering transaction management forces opening a databasse connection. This shouldn't be backwards incompatible in any practical use case.
Diffstat (limited to 'tests')
-rw-r--r--tests/transactions_regress/tests.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/tests/transactions_regress/tests.py b/tests/transactions_regress/tests.py
index 0af7605339..1b50039965 100644
--- a/tests/transactions_regress/tests.py
+++ b/tests/transactions_regress/tests.py
@@ -274,31 +274,39 @@ class TestPostgresAutocommitAndIsolation(TransactionTestCase):
connections[DEFAULT_DB_ALIAS] = self._old_backend
def test_initial_autocommit_state(self):
+ # Autocommit is activated when the connection is created.
+ connection.cursor().close()
+
self.assertTrue(connection.features.uses_autocommit)
- self.assertEqual(connection.isolation_level, self._autocommit)
+ self.assertTrue(connection.autocommit)
def test_transaction_management(self):
transaction.enter_transaction_management()
+ self.assertFalse(connection.autocommit)
self.assertEqual(connection.isolation_level, self._serializable)
transaction.leave_transaction_management()
- self.assertEqual(connection.isolation_level, self._autocommit)
+ self.assertTrue(connection.autocommit)
def test_transaction_stacking(self):
transaction.enter_transaction_management()
+ self.assertFalse(connection.autocommit)
self.assertEqual(connection.isolation_level, self._serializable)
transaction.enter_transaction_management()
+ self.assertFalse(connection.autocommit)
self.assertEqual(connection.isolation_level, self._serializable)
transaction.leave_transaction_management()
+ self.assertFalse(connection.autocommit)
self.assertEqual(connection.isolation_level, self._serializable)
transaction.leave_transaction_management()
- self.assertEqual(connection.isolation_level, self._autocommit)
+ self.assertTrue(connection.autocommit)
def test_enter_autocommit(self):
transaction.enter_transaction_management()
+ self.assertFalse(connection.autocommit)
self.assertEqual(connection.isolation_level, self._serializable)
list(Mod.objects.all())
self.assertTrue(transaction.is_dirty())
@@ -311,9 +319,10 @@ class TestPostgresAutocommitAndIsolation(TransactionTestCase):
list(Mod.objects.all())
self.assertFalse(transaction.is_dirty())
transaction.leave_transaction_management()
+ self.assertFalse(connection.autocommit)
self.assertEqual(connection.isolation_level, self._serializable)
transaction.leave_transaction_management()
- self.assertEqual(connection.isolation_level, self._autocommit)
+ self.assertTrue(connection.autocommit)
class TestManyToManyAddTransaction(TransactionTestCase):