Opened 14 years ago
Closed 13 years ago
#15605 closed Bug (duplicate)
Testing cannot be loaded when models.py is missing
Reported by: | Omer Katz | Owned by: | nobody |
---|---|---|---|
Component: | Testing framework | Version: | 1.2 |
Severity: | Normal | Keywords: | |
Cc: | Jannis Leidel | 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 by , 14 years ago
comment:2 by , 14 years ago
Cc: | removed |
---|
comment:5 by , 13 years ago
Easy pickings: | unset |
---|---|
Severity: | → Normal |
Type: | → Uncategorized |
UI/UX: | unset |
comment:6 by , 13 years ago
Resolution: | duplicate |
---|---|
Status: | closed → reopened |
comment:7 by , 13 years ago
Type: | Uncategorized → Bug |
---|
comment:8 by , 13 years ago
Resolution: | → duplicate |
---|---|
Status: | reopened → 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.
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.