Opened 11 years ago

Last modified 5 months ago

#25504 assigned Bug

Django test teardown fails when there is no default database

Reported by: Sjoerd Langkemper Owned by: Hwayoung Cha
Component: Testing framework Version: 1.9
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

When running a Django TestCase with an empty dict as default database, I get an error. This is similar to #24394, but happens at teardown of the test.

I installed Django 1.9a1, created a new project using django-admin startproject bug. I edited my settings.py to read this:

DATABASES = {
    'default': {},
    'other': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

And I added an empty testcase that uses the Django TestCase class like this:

from django.test.testcases import TestCase

class Test(TestCase):
    def test_nothing(self):
        pass

Then, when I do ./manage test I get the following stacktrace:

Traceback (most recent call last):
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 217, in __call__
    self._post_teardown()
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 919, in _post_teardown
    self._fixture_teardown()
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 1072, in _fixture_teardown
    return super(TestCase, self)._fixture_teardown()
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/test/testcases.py", line 955, in _fixture_teardown
    inhibit_post_migrate=inhibit_post_migrate)
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 119, in call_command
    return command.execute(*args, **defaults)
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/commands/flush.py", line 49, in handle
    allow_cascade=allow_cascade)
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/core/management/sql.py", line 15, in sql_flush
    tables = connection.introspection.django_table_names(only_existing=True, include_views=False)
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/base/introspection.py", line 86, in django_table_names
    existing_tables = self.table_names(include_views=include_views)
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/base/introspection.py", line 56, in table_names
    with self.connection.cursor() as cursor:
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 233, in cursor
    cursor = self.make_cursor(self._cursor())
  File "/home/sjoerd/.virtualenvs/b24394/local/lib/python2.7/site-packages/django/db/backends/dummy/base.py", line 21, in complain
    raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

Change History (12)

comment:1 by Tim Graham, 11 years ago

Component: Uncategorized → Testing framework
Triage Stage: Unreviewed → Accepted
Type: Uncategorized → Bug

comment:2 by mihaicc, 11 years ago

Owner: changed from nobody to mihaicc
Status: new → assigned

comment:3 by mihaicc, 11 years ago

I didn't manage to finish this ticket.

Progress so far:

  • have 2 tests (one broader and one narrower to the exception)
  • found out this happens for fixtures setup as well
  • debated two solutions with Michael Manfre and Tim and will follow soon with a pull request

comment:4 by Tim Graham, 11 years ago

Version: 1.9a1 → 1.9

comment:5 by Tim Graham, 10 years ago

mihaicc, can you share a link to your work so others could use it as a starting point if you're unable to finish it?

comment:6 by mihaicc, 9 years ago

Owner: mihaicc removed
Status: assigned → new

comment:7 by bcail, 3 years ago

There seems to be a conflict in the documentation for this issue of a blank 'default' database. In the ​Settings docs, it says: "The DATABASES setting must configure a default database; any number of additional databases may also be specified."

But the ​multiple database setup docs still explicitly gives the example of leaving the 'default' database blank.

What's the path forward on this?

comment:9 by Hwayoung Cha, 11 months ago

Hi! It appears that no one is currently working on this issue, so I’ll go ahead and assign it to myself.

comment:10 by Hwayoung Cha, 11 months ago

Has patch: set
Owner: set to Hwayoung Cha
Status: new → assigned

comment:11 by Mariusz Felisiak, 10 months ago

Has patch: unset

There is no patch submitted for this ticket.

comment:12 by Yujin Kim, 5 months ago

I will take this ticket. If you have any context, please hand it over to me. Thanks!

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