From 32a7ab21482ef06f7e01a70fad8495f659c4d29f Mon Sep 17 00:00:00 2001
From: Aleksandra Sendecka <asendecka@hauru.eu>
Date: Sat, 23 Feb 2013 22:39:37 +0100
Subject: [PATCH] Fixed #19526

CSS specifications governs that syntax is case insensitive.
This modifies CachedFilesMixin to support that.
---
 django/contrib/staticfiles/storage.py                     | 2 +-
 .../project/documents/cached/styles_insensitive.css       | 1 +
 tests/regressiontests/staticfiles_tests/tests.py          | 8 ++++++++
 3 files changed, 10 insertions(+), 1 deletion(-)
 create mode 100644 tests/regressiontests/staticfiles_tests/project/documents/cached/styles_insensitive.css

diff --git a/django/contrib/staticfiles/storage.py b/django/contrib/staticfiles/storage.py
index 7e87a89f5b..f444e12c19 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 0000000000..57904ad415
--- /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 35d5683a0c..555ea9f3d2 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,