From 7b1e4428320f9b1324331fad086adbf546005b54 Mon Sep 17 00:00:00 2001 From: Johannes Linke Date: Sun, 6 Sep 2015 13:11:14 +0200 Subject: [PATCH] fix cached precompiler for unicode input --- compressor/cache.py | 2 +- compressor/filters/base.py | 2 +- compressor/tests/test_base.py | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/compressor/cache.py b/compressor/cache.py index 45942de..2bed36b 100644 --- a/compressor/cache.py +++ b/compressor/cache.py @@ -136,7 +136,7 @@ def get_hashed_content(filename, length=12): def get_precompiler_cachekey(command, contents): - return hashlib.sha1('precompiler.%s.%s' % (command, contents)).hexdigest() + return hashlib.sha1(smart_bytes('precompiler.%s.%s' % (command, contents))).hexdigest() def cache_get(key): diff --git a/compressor/filters/base.py b/compressor/filters/base.py index 4a8c27c..f61f3a4 100644 --- a/compressor/filters/base.py +++ b/compressor/filters/base.py @@ -233,4 +233,4 @@ class CachedCompilerFilter(CompilerFilter): return super(CachedCompilerFilter, self).input(**kwargs) def get_cache_key(self): - return get_precompiler_cachekey(self.command, self.content.encode('utf8')) + return get_precompiler_cachekey(self.command, self.content) diff --git a/compressor/tests/test_base.py b/compressor/tests/test_base.py index e8255db..9ddfbb4 100644 --- a/compressor/tests/test_base.py +++ b/compressor/tests/test_base.py @@ -14,7 +14,7 @@ from django.test.utils import override_settings from compressor import cache as cachemod from compressor.base import SOURCE_FILE, SOURCE_HUNK -from compressor.cache import get_cachekey +from compressor.cache import get_cachekey, get_precompiler_cachekey from compressor.conf import settings from compressor.css import CssCompressor from compressor.exceptions import FilterDoesNotExist, FilterError @@ -331,3 +331,9 @@ class CacheTestCase(SimpleTestCase): @override_settings(COMPRESS_CACHE_KEY_FUNCTION='invalid.module') def test_get_cachekey_invalid_mod(self): self.assertRaises(ImportError, lambda: get_cachekey("foo")) + + def test_get_precompiler_cachekey(self): + try: + get_precompiler_cachekey("asdf", "asdf") + except TypeError: + self.fail("get_precompiler_cachekey raised TypeError unexpectedly")