summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-08-20 18:50:06 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-08-20 18:50:06 +0000
commite94d29350446df6a87e0fd2b867a47e06295ae98 (patch)
tree31c10fb271b6fd7f1e71e61d9e04fcfdf59a0ab2
parent5608dfabc3572ddc4050321472b34524223f492d (diff)
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
-rw-r--r--tests/modeltests/force_insert_update/models.py14
-rw-r--r--tests/modeltests/get_or_create/models.py14
-rw-r--r--tests/modeltests/one_to_one/models.py14
3 files changed, 27 insertions, 15 deletions
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)
"""}