Skip to content

Commit 586d89c

Browse files
committed
Fixed test cases that deal with strings with cache busting strings appended.
1 parent 1298e2d commit 586d89c

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

tests/core/tests.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from compressor import CssCompressor, JsCompressor
77
from compressor.conf import settings
88
from compressor.storage import CompressorFileStorage
9+
from compressor.utils import get_hexdigest, get_mtime
910

1011
from django.conf import settings as django_settings
1112

@@ -138,39 +139,44 @@ def setUp(self):
138139
"""
139140
self.cssNode = CssCompressor(self.css)
140141

142+
def get_hashed_mtime(self, filename, length=12):
143+
filename = os.path.realpath(filename)
144+
mtime = str(int(get_mtime(filename)))
145+
return get_hexdigest(mtime)[:length]
146+
141147
def test_css_absolute_filter(self):
142148
from compressor.filters.css_default import CssAbsoluteFilter
143149
filename = os.path.join(settings.MEDIA_ROOT, 'css/url/test.css')
144150
content = "p { background: url(http://github.com/'../../images/image.gif') }"
145-
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E275088b9bcf0%3C/span%3E') }" % settings.MEDIA_URL
151+
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E%s%3C/span%3E') }" % (settings.MEDIA_URL, self.get_hashed_mtime(filename))
146152
filter = CssAbsoluteFilter(content)
147153
self.assertEqual(output, filter.input(filename=filename))
148154
settings.MEDIA_URL = 'http://media.example.com/'
149155
filename = os.path.join(settings.MEDIA_ROOT, 'css/url/test.css')
150-
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E275088b9bcf0%3C/span%3E') }" % settings.MEDIA_URL
156+
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E%s%3C/span%3E') }" % (settings.MEDIA_URL, self.get_hashed_mtime(filename))
151157
self.assertEqual(output, filter.input(filename=filename))
152158

153159
def test_css_absolute_filter_https(self):
154160
from compressor.filters.css_default import CssAbsoluteFilter
155161
filename = os.path.join(settings.MEDIA_ROOT, 'css/url/test.css')
156162
content = "p { background: url(http://github.com/'../../images/image.gif') }"
157-
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E275088b9bcf0%3C/span%3E') }" % settings.MEDIA_URL
163+
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E%s%3C/span%3E') }" % (settings.MEDIA_URL, self.get_hashed_mtime(filename))
158164
filter = CssAbsoluteFilter(content)
159165
self.assertEqual(output, filter.input(filename=filename))
160166
settings.MEDIA_URL = 'https://media.example.com/'
161167
filename = os.path.join(settings.MEDIA_ROOT, 'css/url/test.css')
162-
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E275088b9bcf0%3C/span%3E') }" % settings.MEDIA_URL
168+
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E%s%3C/span%3E') }" % (settings.MEDIA_URL, self.get_hashed_mtime(filename))
163169
self.assertEqual(output, filter.input(filename=filename))
164170

165171
def test_css_absolute_filter_relative_path(self):
166172
from compressor.filters.css_default import CssAbsoluteFilter
167173
filename = os.path.join(django_settings.TEST_DIR, 'whatever', '..', 'media', 'whatever/../css/url/test.css')
168174
content = "p { background: url(http://github.com/'../../images/image.gif') }"
169-
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E275088b9bcf0%3C/span%3E') }" % settings.MEDIA_URL
175+
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E%s%3C/span%3E') }" % (settings.MEDIA_URL, self.get_hashed_mtime(filename))
170176
filter = CssAbsoluteFilter(content)
171177
self.assertEqual(output, filter.input(filename=filename))
172178
settings.MEDIA_URL = 'https://media.example.com/'
173-
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E275088b9bcf0%3C/span%3E') }" % settings.MEDIA_URL
179+
output = "p { background: url('http://github.com/%simages/image.gif?%3Cspan%20class=%22x%20x-first%20x-last%22%3E%s%3C/span%3E') }" % (settings.MEDIA_URL, self.get_hashed_mtime(filename))
174180
self.assertEqual(output, filter.input(filename=filename))
175181

176182

@@ -218,7 +224,7 @@ def test_avoid_reordering_css(self):
218224
media = [u'screen', u'print', u'all', None, u'print']
219225
links = BeautifulSoup(node.output()).findAll('link')
220226
self.assertEqual(media, [l.get('media', None) for l in links])
221-
227+
222228

223229
class CssMinTestCase(TestCase):
224230
def test_cssmin_filter(self):

0 commit comments

Comments
 (0)