Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

There are some variations in the printed names of exceptions between …

…Oracle and

other database backends, but the exception classes should still be the same.
This commit changes the way the tests check for specific database errors to be
more portable between implementations.

It's possible these tests will still fail if, e.g., Oracle doesn't raise
IntegrityError (but raises DatabaseError) when we except it to, but we can
cross that bridge if and when it appears.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8450 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit e94d29350446df6a87e0fd2b867a47e06295ae98 1 parent 5608dfa
@malcolmt malcolmt authored
View
14 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 @@ class WithCustomPK(models.Model):
# 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
View
14 tests/modeltests/get_or_create/models.py
@@ -6,7 +6,7 @@
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 @@ def __unicode__(self):
# 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
"""}
View
14 tests/modeltests/one_to_one/models.py
@@ -6,7 +6,7 @@
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 @@ def __unicode__(self):
# 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)
"""}
Please sign in to comment.
Something went wrong with that request. Please try again.