Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#29813 closed Bug (fixed)

backends.base.test_operations.DatabaseOperationTests fails on MySQL in isolation

Reported by: Jon Dufresne Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

When running the Django test backends.base.test_operations.DatabaseOperationTests in isolation with a MySQL configuration, it fails with the following error:

======================================================================
FAIL: test_window_frame_raise_not_supported_error (backends.base.test_operations.DatabaseOperationTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../django/django/test/testcases.py", line 1114, in skip_wrapper
    if condition():
  File ".../django/django/test/testcases.py", line 1135, in <lambda>
    lambda: any(getattr(connection.features, feature, False) for feature in features),
  File ".../django/django/test/testcases.py", line 1135, in <genexpr>
    lambda: any(getattr(connection.features, feature, False) for feature in features),
  File ".../django/django/utils/functional.py", line 37, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File ".../django/django/db/backends/mysql/features.py", line 84, in supports_over_clause
    if self.connection.mysql_is_mariadb:
  File ".../django/django/utils/functional.py", line 37, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File ".../django/django/db/backends/mysql/base.py", line 344, in mysql_is_mariadb
    return 'mariadb' in self.mysql_server_info.lower()
  File ".../django/django/utils/functional.py", line 37, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File ".../django/django/db/backends/mysql/base.py", line 330, in mysql_server_info
    with self.temporary_connection() as cursor:
  File "/usr/lib64/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File ".../django/django/db/backends/base/base.py", line 577, in temporary_connection
    with self.cursor() as cursor:
  File ".../django/django/test/testcases.py", line 144, in __call__
    "set %s.allow_database_queries to True to silence this failure." % self.cls_name
AssertionError: Database queries aren't allowed in SimpleTestCase. Either use TestCase or TransactionTestCase to ensure proper test isolation or set DatabaseOperationTests.allow_database_queries to True to silence this failure.

The test is using SimpleTestCase, but this test executes a query on MySQL for feature detection.

Change History (3)

comment:1 by Jon Dufresne, 6 years ago

Has patch: set

comment:2 by Tim Graham <timograham@…>, 6 years ago

Resolution: fixed
Status: newclosed

In f0759305:

[2.1.x] Fixed #29813 -- Fixed DatabaseOperation test when run in isolation on MySQL.

Backport of 7598cd4748dc402b0209e5eedb6d2a83c3da1620 from master.

comment:3 by Tim Graham <timograham@…>, 6 years ago

In 7598cd47:

Fixed #29813 -- Fixed DatabaseOperation test when run in isolation on MySQL.

Note: See TracTickets for help on using tickets.
Back to Top