diff --git a/compressor/filters/base.py b/compressor/filters/base.py index f61f3a4..95eed1d 100644 --- a/compressor/filters/base.py +++ b/compressor/filters/base.py @@ -224,7 +224,7 @@ class CachedCompilerFilter(CompilerFilter): if self.mimetype in settings.COMPRESS_CACHEABLE_PRECOMPILERS: key = self.get_cache_key() data = cache.get(key) - if data: + if data is not None: return data filtered = super(CachedCompilerFilter, self).input(**kwargs) cache.set(key, filtered, settings.COMPRESS_REBUILD_TIMEOUT) diff --git a/compressor/tests/test_filters.py b/compressor/tests/test_filters.py index ac7c7bf..4817e85 100644 --- a/compressor/tests/test_filters.py +++ b/compressor/tests/test_filters.py @@ -10,7 +10,7 @@ from django.test import TestCase from django.utils import unittest from django.test.utils import override_settings -from compressor.cache import get_hashed_mtime, get_hashed_content +from compressor.cache import cache, get_hashed_mtime, get_hashed_content from compressor.conf import settings from compressor.css import CssCompressor from compressor.utils import find_command @@ -134,6 +134,15 @@ class PrecompilerTestCase(TestCase): self.assertEqual("body { color:#990; }", compiler.input()) self.assertIsNotNone(compiler.infile) # Not cached + def test_precompiler_caches_empty_files(self): + command = '%s %s -f {infile} -o {outfile}' % (sys.executable, self.test_precompiler) + compiler = CachedCompilerFilter(command=command, **self.cached_precompiler_args) + self.assertEqual("body { color:#990; }", compiler.input()) + + cache.set(compiler.get_cache_key(), "") + compiler = CachedCompilerFilter(command=command, **self.cached_precompiler_args) + self.assertEqual("", compiler.input()) + class CssMinTestCase(TestCase): def test_cssmin_filter(self):