diff --git a/django/contrib/staticfiles/storage.py b/django/contrib/staticfiles/storage.py index 7e87a89f5b9..f444e12c191 100644 --- a/django/contrib/staticfiles/storage.py +++ b/django/contrib/staticfiles/storage.py @@ -71,7 +71,7 @@ class CachedFilesMixin(object): pattern, template = pattern else: template = self.default_template - compiled = re.compile(pattern) + compiled = re.compile(pattern, re.IGNORECASE) self._patterns.setdefault(extension, []).append((compiled, template)) def file_hash(self, name, content=None): diff --git a/tests/regressiontests/staticfiles_tests/project/documents/cached/styles_insensitive.css b/tests/regressiontests/staticfiles_tests/project/documents/cached/styles_insensitive.css new file mode 100644 index 00000000000..57904ad4152 --- /dev/null +++ b/tests/regressiontests/staticfiles_tests/project/documents/cached/styles_insensitive.css @@ -0,0 +1 @@ +@IMporT uRL("other.css"); \ No newline at end of file diff --git a/tests/regressiontests/staticfiles_tests/tests.py b/tests/regressiontests/staticfiles_tests/tests.py index 35d5683a0cd..555ea9f3d23 100644 --- a/tests/regressiontests/staticfiles_tests/tests.py +++ b/tests/regressiontests/staticfiles_tests/tests.py @@ -542,6 +542,14 @@ class TestCollectionCachedStorage(BaseCollectionTestCase, cache_validator.validate_key(cache_key) self.assertEqual(cache_key, 'staticfiles:821ea71ef36f95b3922a77f7364670e7') + def test_css_import_case_insensitive(self): + relpath = self.cached_file_path("cached/styles_insensitive.css") + self.assertEqual(relpath, "cached/styles_insensitive.2f0151cca872.css") + with storage.staticfiles_storage.open(relpath) as relfile: + content = relfile.read() + self.assertNotIn(b"cached/other.css", content) + self.assertIn(b"other.d41d8cd98f00.css", content) + # we set DEBUG to False here since the template tag wouldn't work otherwise @override_settings(**dict(TEST_SETTINGS,