summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Kołodziej <p.kolodziej@gmail.com>2018-09-28 01:49:37 +0200
committerTim Graham <timograham@gmail.com>2018-09-27 19:49:37 -0400
commit05c578bc1f6ab09ade17a29f79d7244b7acfb58f (patch)
tree45c7b629d13709b0cebb952c7d012984d4abebf0
parent40c8ffad7249fd37ca1629f06d3ab6b129d84b21 (diff)
Fixed #29796 -- Added system check for STATICFILES_DIRS prefix ending with a slash.
-rw-r--r--django/contrib/staticfiles/finders.py8
-rw-r--r--docs/ref/checks.txt2
-rw-r--r--tests/staticfiles_tests/test_checks.py10
3 files changed, 19 insertions, 1 deletions
diff --git a/django/contrib/staticfiles/finders.py b/django/contrib/staticfiles/finders.py
index afce4ca637..8d8f1cb983 100644
--- a/django/contrib/staticfiles/finders.py
+++ b/django/contrib/staticfiles/finders.py
@@ -78,7 +78,13 @@ class FileSystemFinder(BaseFinder):
))
for root in settings.STATICFILES_DIRS:
if isinstance(root, (list, tuple)):
- _, root = root
+ prefix, root = root
+ if prefix.endswith('/'):
+ errors.append(Error(
+ 'The prefix %r in the STATICFILES_DIRS setting must '
+ 'not end with a slash.' % prefix,
+ id='staticfiles.E003',
+ ))
if settings.STATIC_ROOT and os.path.abspath(settings.STATIC_ROOT) == os.path.abspath(root):
errors.append(Error(
'The STATICFILES_DIRS setting should not contain the '
diff --git a/docs/ref/checks.txt b/docs/ref/checks.txt
index 6895a93eff..67813067f2 100644
--- a/docs/ref/checks.txt
+++ b/docs/ref/checks.txt
@@ -731,3 +731,5 @@ configured:
or list.
* **staticfiles.E002**: The :setting:`STATICFILES_DIRS` setting should not
contain the :setting:`STATIC_ROOT` setting.
+* **staticfiles.E003**: The prefix ``<prefix>`` in the
+ :setting:`STATICFILES_DIRS` setting must not end with a slash.
diff --git a/tests/staticfiles_tests/test_checks.py b/tests/staticfiles_tests/test_checks.py
index 0fe432b5c7..d5dc90b781 100644
--- a/tests/staticfiles_tests/test_checks.py
+++ b/tests/staticfiles_tests/test_checks.py
@@ -75,3 +75,13 @@ class FindersCheckTests(SimpleTestCase):
id='staticfiles.E002',
)
])
+
+ @override_settings(STATICFILES_DIRS=[('prefix/', '/fake/path')])
+ def test_prefix_contains_trailing_slash(self):
+ self.assertEqual(check_finders(None), [
+ Error(
+ "The prefix 'prefix/' in the STATICFILES_DIRS setting must "
+ "not end with a slash.",
+ id='staticfiles.E003',
+ )
+ ])