diff --git a/tests/modeltests/force_insert_update/models.py b/tests/modeltests/force_insert_update/models.py index c9b9fe0c76..2489740e98 100644 --- a/tests/modeltests/force_insert_update/models.py +++ b/tests/modeltests/force_insert_update/models.py @@ -2,7 +2,7 @@ Tests for forcing insert and update queries (instead of Django's normal automatic behaviour). """ -from django.db import models, transaction +from django.db import models, transaction, IntegrityError class Counter(models.Model): name = models.CharField(max_length = 10) @@ -42,10 +42,14 @@ ValueError: Cannot force an update in save() with no primary key. # Won't work because we can't insert a pk of the same value. >>> sid = transaction.savepoint() >>> c.value = 5 ->>> c.save(force_insert=True) -Traceback (most recent call last): -... -IntegrityError: ... +>>> try: +... c.save(force_insert=True) +... except Exception, e: +... if isinstance(e, IntegrityError): +... print "Pass" +... else: +... print "Fail with %s" % type(e) +Pass >>> transaction.savepoint_rollback(sid) # Trying to update should still fail, even with manual primary keys, if the diff --git a/tests/modeltests/get_or_create/models.py b/tests/modeltests/get_or_create/models.py index 5c35bb4bec..f0faf54002 100644 --- a/tests/modeltests/get_or_create/models.py +++ b/tests/modeltests/get_or_create/models.py @@ -6,7 +6,7 @@ given parameters. If an object isn't found, it creates one with the given parameters. """ -from django.db import models +from django.db import models, IntegrityError class Person(models.Model): first_name = models.CharField(max_length=100) @@ -53,8 +53,12 @@ False # If you don't specify a value or default value for all required fields, you # will get an error. ->>> p, created = Person.objects.get_or_create(first_name='Tom', last_name='Smith') -Traceback (most recent call last): -... -IntegrityError:... +>>> try: +... p, created = Person.objects.get_or_create(first_name='Tom', last_name='Smith') +... except Exception, e: +... if isinstance(e, IntegrityError): +... print "Pass" +... else: +... print "Fail with %s" % type(e) +Pass """} diff --git a/tests/modeltests/one_to_one/models.py b/tests/modeltests/one_to_one/models.py index 348a543c52..20ac7a5573 100644 --- a/tests/modeltests/one_to_one/models.py +++ b/tests/modeltests/one_to_one/models.py @@ -6,7 +6,7 @@ To define a one-to-one relationship, use ``OneToOneField()``. In this example, a ``Place`` optionally can be a ``Restaurant``. """ -from django.db import models, transaction +from django.db import models, transaction, IntegrityError class Place(models.Model): name = models.CharField(max_length=50) @@ -179,10 +179,14 @@ DoesNotExist: Restaurant matching query does not exist. # This will fail because each one-to-one field must be unique (and link2=o1 was # used for x1, above). >>> sid = transaction.savepoint() ->>> MultiModel(link1=p2, link2=o1, name="x1").save() -Traceback (most recent call last): - ... -IntegrityError: ... +>>> try: +... MultiModel(link1=p2, link2=o1, name="x1").save() +... except Exception, e: +... if isinstance(e, IntegrityError): +... print "Pass" +... else: +... print "Fail with %s" % type(e) +Pass >>> transaction.savepoint_rollback(sid) """}