[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:
parent
53b40d75b7
commit
0bbc7c2b49
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue