[1.5.x] Fixed #19483 -- Improved import error message in contrib.comments

Thanks Valentin Lorentz for the report and the suggested fix.
Backport of ed711c4bd from master.
This commit is contained in:
Claude Paroz 2012-12-16 21:08:47 +01:00
parent 53b40d75b7
commit 0bbc7c2b49
2 changed files with 18 additions and 13 deletions

View File

@ -20,9 +20,9 @@ def get_comment_app():
# Try to import the package # Try to import the package
try: try:
package = import_module(comments_app) package = import_module(comments_app)
except ImportError: except ImportError as e:
raise ImproperlyConfigured("The COMMENTS_APP setting refers to "\ raise ImproperlyConfigured("The COMMENTS_APP setting refers to "\
"a non-existing package.") "a non-existing package. (%s)" % e)
return package return package

View File

@ -4,6 +4,9 @@ from django.conf import settings
from django.contrib import comments from django.contrib import comments
from django.contrib.comments.models import Comment from django.contrib.comments.models import Comment
from django.contrib.comments.forms import CommentForm from django.contrib.comments.forms import CommentForm
from django.core.exceptions import ImproperlyConfigured
from django.test.utils import override_settings
from django.utils import six
from . import CommentTestCase from . import CommentTestCase
@ -14,6 +17,14 @@ class CommentAppAPITests(CommentTestCase):
def testGetCommentApp(self): def testGetCommentApp(self):
self.assertEqual(comments.get_comment_app(), comments) self.assertEqual(comments.get_comment_app(), comments)
@override_settings(
COMMENTS_APP='missing_app',
INSTALLED_APPS=list(settings.INSTALLED_APPS) + ['missing_app'],
)
def testGetMissingCommentApp(self):
with six.assertRaisesRegex(self, ImproperlyConfigured, 'missing_app'):
_ = comments.get_comment_app()
def testGetForm(self): def testGetForm(self):
self.assertEqual(comments.get_form(), CommentForm) self.assertEqual(comments.get_form(), CommentForm)
@ -33,20 +44,14 @@ class CommentAppAPITests(CommentTestCase):
self.assertEqual(comments.get_approve_url(c), "/approve/12345/") self.assertEqual(comments.get_approve_url(c), "/approve/12345/")
@override_settings(
COMMENTS_APP='regressiontests.comment_tests.custom_comments',
INSTALLED_APPS=list(settings.INSTALLED_APPS) + [
'regressiontests.comment_tests.custom_comments'],
)
class CustomCommentTest(CommentTestCase): class CustomCommentTest(CommentTestCase):
urls = 'regressiontests.comment_tests.urls' urls = 'regressiontests.comment_tests.urls'
def setUp(self):
self.old_comments_app = getattr(settings, 'COMMENTS_APP', None)
settings.COMMENTS_APP = 'regressiontests.comment_tests.custom_comments'
settings.INSTALLED_APPS = list(settings.INSTALLED_APPS) + [settings.COMMENTS_APP,]
def tearDown(self):
del settings.INSTALLED_APPS[-1]
settings.COMMENTS_APP = self.old_comments_app
if settings.COMMENTS_APP is None:
del settings._wrapped.COMMENTS_APP
def testGetCommentApp(self): def testGetCommentApp(self):
from regressiontests.comment_tests import custom_comments from regressiontests.comment_tests import custom_comments
self.assertEqual(comments.get_comment_app(), custom_comments) self.assertEqual(comments.get_comment_app(), custom_comments)