#7786: queries test failure on Python 2.3
-----------------------------------------------+----------------------------
Reporter: Karen Tracey <[EMAIL PROTECTED]> | Owner: nobody
Status: new | Milestone:
Component: Database wrapper | Version: SVN
Keywords: | Stage: Unreviewed
Has_patch: 0 |
-----------------------------------------------+----------------------------
Running the test suite on Python 2.3, I get a test failure in the queries
regression test:
{{{
D:\u\kmt\django\trunk\tests>d:\bin\Python2.3.5\python.exe runtests.py
--settings=testsettings queries
======================================================================
FAIL: Doctest: regressiontests.queries.models.__test__.API_TESTS
----------------------------------------------------------------------
Traceback (most recent call last):
File "d:\u\kmt\django\trunk\django\test\_doctest.py", line 2180, in
runTest
raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for
regressiontests.queries.models.__test__.API_TESTS
File "D:\u\kmt\django\trunk\tests\regressiontests\queries\models.py",
line unknown line number, in API_TESTS
----------------------------------------------------------------------
File "D:\u\kmt\django\trunk\tests\regressiontests\queries\models.py", line
?, in regressiontests.queries.models.__test__.API_TESTS
Failed example:
LoopX.objects.all()
Expected:
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
Got:
[]
----------------------------------------------------------------------
File "D:\u\kmt\django\trunk\tests\regressiontests\queries\models.py", line
?, in regressiontests.queries.models.__test__.API_TESTS
Failed example:
LoopZ.objects.all()
Expected:
Traceback (most recent call last):
...
FieldError: Infinite loop caused by ordering.
Got:
[]
----------------------------------------------------------------------
Ran 1 test in 0.591s
FAILED (failures=1)
}}}
I believe it's caused by this Python bug:
http://bugs.python.org/issue1242657 which caused exceptions raised by
!__len!__ to be silently swallowed. A traceback from when the exception
is successfully raised:
{{{
>>> LoopX.objects.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "d:\u\kmt\django\trunk\django\db\models\query.py", line 143, in
__repr__
return repr(list(self))
File "d:\u\kmt\django\trunk\django\db\models\query.py", line 155, in
__len__
self._result_cache.extend(list(self._iter))
File "d:\u\kmt\django\trunk\django\db\models\query.py", line 268, in
iterator
for row in self.query.results_iter():
File "d:\u\kmt\django\trunk\django\db\models\sql\query.py", line 204, in
results_iter
for rows in self.execute_sql(MULTI):
File "d:\u\kmt\django\trunk\django\db\models\sql\query.py", line 1598,
in execute_sql
sql, params = self.as_sql()
File "d:\u\kmt\django\trunk\django\db\models\sql\query.py", line 251, in
as_sql
ordering = self.get_ordering()
File "d:\u\kmt\django\trunk\django\db\models\sql\query.py", line 610, in
get_ordering
self.model._meta, default_order=asc):
File "d:\u\kmt\django\trunk\django\db\models\sql\query.py", line 663, in
find_ordering_name
order, already_seen))
File "d:\u\kmt\django\trunk\django\db\models\sql\query.py", line 663, in
find_ordering_name
order, already_seen))
File "d:\u\kmt\django\trunk\django\db\models\sql\query.py", line 657, in
find_ordering_name
raise FieldError('Infinite loop caused by ordering.')
FieldError: Infinite loop caused by ordering.
}}}
shows how !__len!__ swallowing exceptions would cause this test failure.
Don't know that it is worth fixing (apparently you'll just get empty lists
instead of exceptions in cases where this is hit) but figured it was at
least worth reporting in case anyone else runs across it. (I didn't find
any likely match in my tracker search.)
--
Ticket URL: <http://code.djangoproject.com/ticket/7786>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---