Fixed #34496 -- Fixed handling source maps with data URI in ManifestStaticFilesStorage.

Regression in 781b44240a.
This commit is contained in:
Hielke Walinga 2023-04-17 14:30:10 +02:00 committed by Mariusz Felisiak
parent 498195bda4
commit fb535e0a90
4 changed files with 30 additions and 2 deletions

View File

@ -86,7 +86,7 @@ class HashedFilesMixin:
), ),
( (
( (
r"(?m)(?P<matched>)^(/\*#[ \t]" r"(?m)^(?P<matched>/\*#[ \t]"
r"(?-i:sourceMappingURL)=(?P<url>.*)[ \t]*\*/)$" r"(?-i:sourceMappingURL)=(?P<url>.*)[ \t]*\*/)$"
), ),
"/*# sourceMappingURL=%(url)s */", "/*# sourceMappingURL=%(url)s */",
@ -97,7 +97,7 @@ class HashedFilesMixin:
"*.js", "*.js",
( (
( (
r"(?m)(?P<matched>)^(//# (?-i:sourceMappingURL)=(?P<url>.*))$", r"(?m)^(?P<matched>//# (?-i:sourceMappingURL)=(?P<url>.*))$",
"//# sourceMappingURL=%(url)s", "//# sourceMappingURL=%(url)s",
), ),
), ),

View File

@ -0,0 +1,2 @@
* {outline: 1px solid red;}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMv*/

View File

@ -0,0 +1,2 @@
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMv
let a_variable = 1;

View File

@ -269,6 +269,18 @@ class TestHashedFiles:
) )
self.assertPostCondition() 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): def test_js_source_map(self):
relpath = self.hashed_file_path("cached/source_map.js") relpath = self.hashed_file_path("cached/source_map.js")
self.assertEqual(relpath, "cached/source_map.cd45b8534a87.js") self.assertEqual(relpath, "cached/source_map.cd45b8534a87.js")
@ -307,6 +319,18 @@ class TestHashedFiles:
) )
self.assertPostCondition() 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( @override_settings(
STATICFILES_DIRS=[os.path.join(TEST_ROOT, "project", "faulty")], STATICFILES_DIRS=[os.path.join(TEST_ROOT, "project", "faulty")],
STATICFILES_FINDERS=["django.contrib.staticfiles.finders.FileSystemFinder"], STATICFILES_FINDERS=["django.contrib.staticfiles.finders.FileSystemFinder"],