From 39bbd1653a7d7b55476c529afad9d6932ee9d8ca Mon Sep 17 00:00:00 2001 From: Gabriel Hurley Date: Thu, 22 Sep 2011 21:09:00 +0000 Subject: [PATCH] Fixed #7198 (again) -- Corrects a problem with string interpolation from r16876 and adds tests for the new error message. git-svn-id: http://code.djangoproject.com/svn/django/trunk@16888 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/loading.py | 2 +- tests/modeltests/empty/no_models/__init__.py | 0 tests/modeltests/empty/no_models/tests.py | 5 +++++ tests/modeltests/empty/tests.py | 22 ++++++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 tests/modeltests/empty/no_models/__init__.py create mode 100644 tests/modeltests/empty/no_models/tests.py diff --git a/django/db/models/loading.py b/django/db/models/loading.py index 8d673c4778..c34468643f 100644 --- a/django/db/models/loading.py +++ b/django/db/models/loading.py @@ -146,7 +146,7 @@ class AppCache(object): if mod is None: if emptyOK: return None - raise ImproperlyConfigured("App with label %s is missing a models.py module.") + raise ImproperlyConfigured("App with label %s is missing a models.py module." % app_label) else: return mod raise ImproperlyConfigured("App with label %s could not be found" % app_label) diff --git a/tests/modeltests/empty/no_models/__init__.py b/tests/modeltests/empty/no_models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/modeltests/empty/no_models/tests.py b/tests/modeltests/empty/no_models/tests.py new file mode 100644 index 0000000000..7b892bcaca --- /dev/null +++ b/tests/modeltests/empty/no_models/tests.py @@ -0,0 +1,5 @@ +from django.test import TestCase + +class NoModelTests(TestCase): + """ A placeholder test case. See modeltests.empty.tests for more info. """ + pass diff --git a/tests/modeltests/empty/tests.py b/tests/modeltests/empty/tests.py index 01fa1c58cd..b3a8a72ad2 100644 --- a/tests/modeltests/empty/tests.py +++ b/tests/modeltests/empty/tests.py @@ -1,4 +1,10 @@ +from __future__ import with_statement + +from django.conf import settings +from django.core.exceptions import ImproperlyConfigured +from django.db.models.loading import get_app from django.test import TestCase +from django.test.utils import override_settings from models import Empty @@ -13,3 +19,19 @@ class EmptyModelTests(TestCase): self.assertTrue(m.id is not None) existing = Empty(m.id) existing.save() + +class NoModelTests(TestCase): + """ + Test for #7198 to ensure that the proper error message is raised + when attempting to load an app with no models.py file. + + Becuase the test runner won't currently load a test module with no + models.py file, this TestCase instead lives in this module. + + It seemed like an appropriate home for it. + """ + @override_settings(INSTALLED_APPS=("modeltests.empty.no_models",)) + def test_no_models(self): + with self.assertRaisesRegexp(ImproperlyConfigured, + 'App with label no_models is missing a models.py module.'): + get_app('no_models')