Opened 4 years ago

Closed 3 years ago

#15605 closed Bug (duplicate)

Testing cannot be loaded when models.py is missing

Reported by: the_drow Owned by: nobody
Component: Testing framework Version: 1.2
Severity: Normal Keywords:
Cc: jezdez Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I have a fabric script that attempts to run the tests for an application that I wrote.
It is already installed using setup.py and I am able to import it.
I am following the script I found here.
My problem is that django-admin doesn't find my app:

Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/fabric/main.py", line 542, in main commands[name](*args, **kwargs) File "/usr/local/lib/python2.6/dist-packages/envconf/fabfile.py", line 35, in test management.call_command('test', 'envconf') File "/usr/local/lib/python2.6/dist-packages/django/core/management/init.py", line 166, in call_command return klass.execute(*args, **defaults) File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 220, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/test.py", line 37, in handle failures = test_runner.run_tests(test_labels)
File "/usr/local/lib/python2.6/dist-packages/django/test/simple.py", line 395, in run_tests suite = self.build_suite(test_labels, extra_tests) File "/usr/local/lib/python2.6/dist-packages/django/test/simple.py", line 285, in build_suite app = get_app(label) File "/usr/local/lib/python2.6/dist-packages/django/db/models/loading.py", line 140, in get_app raise ImproperlyConfigured("App with label %s could not be found" % app_label) django.core.exceptions.ImproperlyConfigured: App with label envconf could not be found

The problem is in loading.py, if there are no models it shouldn't load them.

Here's my code:

import functools import os

from fabric.api import local, cd, env
from fabric.contrib.project import rsync_project
from django.conf import settings
from django.core import management

NAME = os.path.basename(os.path.dirname(__file__))
ROOT = os.path.abspath(os.path.dirname(__file__))

os.environ['PYTHONPATH'] = os.pathsep.join([ROOT])

env.hosts = ['omer.me']

local = functools.partial(local, capture=False)

def test():
    settings.configure(DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '.',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        }
    },
    INSTALLED_APPS = ('envconf', ))

    print os.environ
    management.call_command('test', 'envconf')

I am suggesting a the following fix:
1) If any models.py are found in any app require a database to be present in the settings.
2) If it is not found, do not require.

Change History (8)

comment:1 Changed 4 years ago by the_drow

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

Edit for the fix:
1) If any models.py are found in any app with a model that inherits from django.db.models.Model require a database to be present in the settings.

2) If it is not found, do not require.

comment:2 Changed 4 years ago by RaceCondition

  • Cc RaceCondition removed

comment:3 Changed 4 years ago by russellm

  • Resolution set to duplicate
  • Status changed from new to closed

Duplicate of #7198

comment:4 Changed 4 years ago by jacob

  • milestone 1.4 deleted

Milestone 1.4 deleted

comment:5 Changed 3 years ago by anonymous

  • Easy pickings unset
  • Severity set to Normal
  • Type set to Uncategorized
  • UI/UX unset

This is not the same problem than #7198, you can't even get the modified improved message that was fixed on #7198.

The solution to this is that is it should be possible to test apps without models, in fact.

comment:6 Changed 3 years ago by anonymous

  • Resolution duplicate deleted
  • Status changed from closed to reopened

This is not the same problem than #7198, you can't even get the modified improved message that was fixed on #7198.

The solution to this is that is it should be possible to test apps without models, in fact.

comment:7 Changed 3 years ago by anonymous

  • Type changed from Uncategorized to Bug

comment:8 Changed 3 years ago by rasca

  • Resolution set to duplicate
  • Status changed from reopened to closed

You shouldn't reopen a ticket that was closed by a core developer. If you think the decision was wrong you can take it to the mailing list. Closing it for this reason (duplicate of #7198).

As stated by aagustin ( https://code.djangoproject.com/ticket/7198#comment:22 ) removing the need for a models.py isn't trivial. If IIRC the soc2010-app-loading branch had this into consideration.

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