Fixed #7786 -- Removed some tests from running when using Python 2.3.

The problem being "hidden" here is not serious. It won't affect correct code
and only gives a different failure mode for incorrect code. The moral is: don't
write incorrect code.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7939 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2008-07-16 23:55:10 +00:00
parent 52fdedba48
commit 431206a252
1 changed files with 25 additions and 17 deletions

View File

@ -4,6 +4,7 @@ Various complex queries that have been problematic in the past.
import datetime import datetime
import pickle import pickle
import sys
from django.db import models from django.db import models
from django.db.models.query import Q, ITER_CHUNK_SIZE from django.db.models.query import Q, ITER_CHUNK_SIZE
@ -483,23 +484,6 @@ Bug #2076
>>> Cover.objects.all() >>> Cover.objects.all()
[<Cover: first>, <Cover: second>] [<Cover: first>, <Cover: second>]
# If you're not careful, it's possible to introduce infinite loops via default
# ordering on foreign keys in a cycle. We detect that.
>>> LoopX.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
>>> LoopZ.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
# ... but you can still order in a non-recursive fashion amongst linked fields
# (the previous test failed because the default ordering was recursive).
>>> LoopX.objects.all().order_by('y__x__y__x__id')
[]
# If the remote model does not have a default ordering, we order by its 'id' # If the remote model does not have a default ordering, we order by its 'id'
# field. # field.
>>> Item.objects.order_by('creator', 'name') >>> Item.objects.order_by('creator', 'name')
@ -840,3 +824,27 @@ True
"""} """}
# In Python 2.3, exceptions raised in __len__ are swallowed (Python issue
# 1242657), so these cases return an empty list, rather than raising an
# exception. Not a lot we can do about that, unfortunately, due to the way
# Python handles list() calls internally. Thus, we skip the tests for Python
# 2.3.
if sys.version_info >= (2, 4):
__test__["API_TESTS"] += """
# If you're not careful, it's possible to introduce infinite loops via default
# ordering on foreign keys in a cycle. We detect that.
>>> LoopX.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
>>> LoopZ.objects.all()
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
# ... but you can still order in a non-recursive fashion amongst linked fields
# (the previous test failed because the default ordering was recursive).
>>> LoopX.objects.all().order_by('y__x__y__x__id')
[]
"""