From 8254f8d707f517ab154ad0d6d77dfc1ac292bf41 Mon Sep 17 00:00:00 2001 From: Julian Scheid Date: Sun, 3 Feb 2013 17:03:29 +0100 Subject: [PATCH] Leave alone fragment-only URLs. Without this change, mangling such URLs produces invalid results. --- compressor/filters/css_default.py | 4 +++- compressor/tests/test_filters.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/compressor/filters/css_default.py b/compressor/filters/css_default.py index 7260e9d..1727beb 100644 --- a/compressor/filters/css_default.py +++ b/compressor/filters/css_default.py @@ -91,7 +91,9 @@ class CssAbsoluteFilter(FilterBase): def _converter(self, matchobj, group, template): url = matchobj.group(group) url = url.strip(' \'"') - if url.startswith(SCHEMES): + if url.startswith('#'): + return "url('%s')" % url + elif url.startswith(SCHEMES): return "url('%s')" % self.add_suffix(url) full_url = posixpath.normpath('/'.join([str(self.directory_name), url])) diff --git a/compressor/tests/test_filters.py b/compressor/tests/test_filters.py index 7a336b3..90c4036 100644 --- a/compressor/tests/test_filters.py +++ b/compressor/tests/test_filters.py @@ -142,6 +142,16 @@ class CssAbsolutizingTestCase(TestCase): output = "p { background: url('%(url)simg/python.png?%(hash)s#foo') }" % params self.assertEqual(output, filter.input(filename=filename, basename='css/url/test.css')) + def test_css_absolute_filter_only_url_fragment(self): + filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css') + content = "p { background: url('#foo') }" + filter = CssAbsoluteFilter(content) + self.assertEqual(content, filter.input(filename=filename, basename='css/url/test.css')) + settings.COMPRESS_URL = 'http://media.example.com/' + filter = CssAbsoluteFilter(content) + filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css') + self.assertEqual(content, filter.input(filename=filename, basename='css/url/test.css')) + def test_css_absolute_filter_querystring(self): filename = os.path.join(settings.COMPRESS_ROOT, 'css/url/test.css') imagefilename = os.path.join(settings.COMPRESS_ROOT, 'img/python.png')