diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-03-02 16:57:56 +0100 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-03-11 14:48:54 +0100 |
| commit | 8717b0668caf00ec5e81ef5a1e31b4d7c64eee8a (patch) | |
| tree | 2c2ca299470d06c67e005534fc4bb7e6f714ceb5 /tests | |
| parent | f5156194945661d217523d6648dfb9b48707ec95 (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.py | 17 |
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): |
