diff --git a/django/contrib/staticfiles/storage.py b/django/contrib/staticfiles/storage.py index 02d47c56dc6..186f8d7535e 100644 --- a/django/contrib/staticfiles/storage.py +++ b/django/contrib/staticfiles/storage.py @@ -86,7 +86,7 @@ class HashedFilesMixin: ), ( ( - r"(?m)(?P)^(/\*#[ \t]" + r"(?m)^(?P/\*#[ \t]" r"(?-i:sourceMappingURL)=(?P.*)[ \t]*\*/)$" ), "/*# sourceMappingURL=%(url)s */", @@ -97,7 +97,7 @@ class HashedFilesMixin: "*.js", ( ( - r"(?m)(?P)^(//# (?-i:sourceMappingURL)=(?P.*))$", + r"(?m)^(?P//# (?-i:sourceMappingURL)=(?P.*))$", "//# sourceMappingURL=%(url)s", ), ), diff --git a/tests/staticfiles_tests/project/documents/cached/source_map_data_uri.css b/tests/staticfiles_tests/project/documents/cached/source_map_data_uri.css new file mode 100644 index 00000000000..7b6bc632411 --- /dev/null +++ b/tests/staticfiles_tests/project/documents/cached/source_map_data_uri.css @@ -0,0 +1,2 @@ +* {outline: 1px solid red;} +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMv*/ diff --git a/tests/staticfiles_tests/project/documents/cached/source_map_data_uri.js b/tests/staticfiles_tests/project/documents/cached/source_map_data_uri.js new file mode 100644 index 00000000000..316fb1fecd4 --- /dev/null +++ b/tests/staticfiles_tests/project/documents/cached/source_map_data_uri.js @@ -0,0 +1,2 @@ +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMv +let a_variable = 1; diff --git a/tests/staticfiles_tests/test_storage.py b/tests/staticfiles_tests/test_storage.py index 2202a5bc073..dc8607a307f 100644 --- a/tests/staticfiles_tests/test_storage.py +++ b/tests/staticfiles_tests/test_storage.py @@ -269,6 +269,18 @@ class TestHashedFiles: ) self.assertPostCondition() + def test_css_source_map_data_uri(self): + relpath = self.hashed_file_path("cached/source_map_data_uri.css") + self.assertEqual(relpath, "cached/source_map_data_uri.3166be10260d.css") + with storage.staticfiles_storage.open(relpath) as relfile: + content = relfile.read() + source_map_data_uri = ( + b"/*# sourceMappingURL=data:application/json;charset=utf8;base64," + b"eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMv*/" + ) + self.assertIn(source_map_data_uri, content) + self.assertPostCondition() + def test_js_source_map(self): relpath = self.hashed_file_path("cached/source_map.js") self.assertEqual(relpath, "cached/source_map.cd45b8534a87.js") @@ -307,6 +319,18 @@ class TestHashedFiles: ) self.assertPostCondition() + def test_js_source_map_data_uri(self): + relpath = self.hashed_file_path("cached/source_map_data_uri.js") + self.assertEqual(relpath, "cached/source_map_data_uri.a68d23cbf6dd.js") + with storage.staticfiles_storage.open(relpath) as relfile: + content = relfile.read() + source_map_data_uri = ( + b"//# sourceMappingURL=data:application/json;charset=utf8;base64," + b"eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMv" + ) + self.assertIn(source_map_data_uri, content) + self.assertPostCondition() + @override_settings( STATICFILES_DIRS=[os.path.join(TEST_ROOT, "project", "faulty")], STATICFILES_FINDERS=["django.contrib.staticfiles.finders.FileSystemFinder"],