Version 1 (modified by ramiro, 6 years ago) (diff)


Test suite failures


As Django 1.0, the test suite is showing the following failure(s) when run under Windows (XP 32 bits) + official Python 2.5.2:

  • Ticket #7570 when using the sqlite3 Django DB backend (official Python 2.5.2 Windows distribution which includes SQLite 3.3.4).

ticket #7570

This test (and other two similar tests) fails:

Bug #7087 -- dates with extra select columns
>>> Item.objects.dates('created', 'day').extra(select={'a': 1})
[datetime.datetime(2007, 12, 19, 0, 0), datetime.datetime(2007, 12, 20, 0, 0)] 

Error is:

FAIL: Doctest: regressiontests.queries.models.__test__.API_TESTS
Traceback (most recent call last):
  File "C:\ramiro\django-trunk\django\test\", line 2180, in runTest
    raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for regressiontests.queries.models.__test__.API_TESTS
  File "C:\ramiro\django-trunk\tests\regressiontests\queries\", line unknown line number, in API_TESTS

File "C:\ramiro\django-trunk\tests\regressiontests\queries\", line ?, in regressiontests.queries.models.__test__.API_TESTS
Failed example:
    Item.objects.dates('created', 'day').extra(select={'a': 1})
Exception raised:
    Traceback (most recent call last):
      File "C:\ramiro\django-trunk\django\test\", line 1267, in __run
        compileflags, 1) in test.globs
      File "<doctest regressiontests.queries.models.__test__.API_TESTS[169]>", line 1, in <module>
        Item.objects.dates('created', 'day').extra(select={'a': 1})
      File "c:\ramiro\django-trunk\django\db\models\", line 129, in __repr__
        return repr(list(self))
      File "c:\ramiro\django-trunk\django\db\models\", line 141, in __len__
      File "c:\ramiro\django-trunk\django\db\models\sql\", line 351, in results_iter
        for rows in self.execute_sql(MULTI):
      File "c:\ramiro\django-trunk\django\db\models\sql\", line 1607, in execute_sql
        cursor.execute(sql, params)
      File "c:\ramiro\django-trunk\django\db\backends\sqlite3\", line 136, in execute
        return Database.Cursor.execute(self, query, params)
    OperationalError: ORDER BY terms must not be non-integer constants

Ran 253 tests in 433.032s

FAILED (failures=1)

The SQL being generated by Django is correct:

>>> Item.objects.dates('created', 'day').extra(select={'a': 1}).query.as_sql()
('SELECT DISTINCT (1) AS "a", django_date_trunc("day", "sqlite3_dates_item"."created") FROM "sqlite3_dates_item" ORDER BY 1 ASC', ())

The problem has been tracked down to a bug in SQLite in version older than 3.3.6.