summaryrefslogtreecommitdiff
path: root/tests/backends
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2013-03-11 15:11:34 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2013-03-11 15:11:34 +0100
commit14cddf51c5f001bb426ce7f7a83fdc52c8d8aee9 (patch)
tree7658f47dfaafe0dd09fe62fd5525e8f6e6a41ba7 /tests/backends
parent9cec689e6a7e299b3416519ee075b2316ecc5a64 (diff)
parente654180ce2a11ef4c525497d6c40dc542e16806c (diff)
Merged branch 'database-level-autocommit'.
Fixed #2227: `atomic` supports nesting. Fixed #6623: `commit_manually` is deprecated and `atomic` doesn't suffer from this defect. Fixed #8320: the problem wasn't identified, but the legacy transaction management is deprecated. Fixed #10744: the problem wasn't identified, but the legacy transaction management is deprecated. Fixed #10813: since autocommit is enabled, it isn't necessary to rollback after errors any more. Fixed #13742: savepoints are now implemented for SQLite. Fixed #13870: transaction management in long running processes isn't a problem any more, and it's documented. Fixed #14970: while it digresses on transaction management, this ticket essentially asks for autocommit on PostgreSQL. Fixed #15694: `atomic` supports nesting. Fixed #17887: autocommit makes it impossible for a connection to stay "idle of transaction".
Diffstat (limited to 'tests/backends')
-rw-r--r--tests/backends/tests.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/tests/backends/tests.py b/tests/backends/tests.py
index 103a44684e..c7f09013d4 100644
--- a/tests/backends/tests.py
+++ b/tests/backends/tests.py
@@ -302,8 +302,8 @@ class PostgresNewConnectionTest(TestCase):
transaction is rolled back.
"""
@unittest.skipUnless(
- connection.vendor == 'postgresql' and connection.isolation_level > 0,
- "This test applies only to PostgreSQL without autocommit")
+ connection.vendor == 'postgresql',
+ "This test applies only to PostgreSQL")
def test_connect_and_rollback(self):
new_connections = ConnectionHandler(settings.DATABASES)
new_connection = new_connections[DEFAULT_DB_ALIAS]
@@ -522,7 +522,8 @@ class FkConstraintsTests(TransactionTestCase):
"""
When constraint checks are disabled, should be able to write bad data without IntegrityErrors.
"""
- with transaction.commit_manually():
+ transaction.set_autocommit(False)
+ try:
# Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
# Retrive it from the DB
@@ -536,12 +537,15 @@ class FkConstraintsTests(TransactionTestCase):
self.fail("IntegrityError should not have occurred.")
finally:
transaction.rollback()
+ finally:
+ transaction.set_autocommit(True)
def test_disable_constraint_checks_context_manager(self):
"""
When constraint checks are disabled (using context manager), should be able to write bad data without IntegrityErrors.
"""
- with transaction.commit_manually():
+ transaction.set_autocommit(False)
+ try:
# Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
# Retrive it from the DB
@@ -554,12 +558,15 @@ class FkConstraintsTests(TransactionTestCase):
self.fail("IntegrityError should not have occurred.")
finally:
transaction.rollback()
+ finally:
+ transaction.set_autocommit(True)
def test_check_constraints(self):
"""
Constraint checks should raise an IntegrityError when bad data is in the DB.
"""
- with transaction.commit_manually():
+ try:
+ transaction.set_autocommit(False)
# Create an Article.
models.Article.objects.create(headline="Test article", pub_date=datetime.datetime(2010, 9, 4), reporter=self.r)
# Retrive it from the DB
@@ -572,6 +579,8 @@ class FkConstraintsTests(TransactionTestCase):
connection.check_constraints()
finally:
transaction.rollback()
+ finally:
+ transaction.set_autocommit(True)
class ThreadTests(TestCase):