From: Alex Kahan Date: Fri, 27 Jan 2017 18:13:12 +0000 (-0500) Subject: Adds tests for the memcached bytecode cache module X-Git-Tag: 2.10~10^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e74191f82531400354ef33cd6d7d0ce842ce4eb;p=thirdparty%2Fjinja.git Adds tests for the memcached bytecode cache module --- diff --git a/tests/test_bytecode_cache.py b/tests/test_bytecode_cache.py index 42ff8400..126cf4fa 100644 --- a/tests/test_bytecode_cache.py +++ b/tests/test_bytecode_cache.py @@ -10,7 +10,8 @@ """ import pytest from jinja2 import Environment -from jinja2.bccache import FileSystemBytecodeCache +from jinja2.bccache import FileSystemBytecodeCache, MemcachedBytecodeCache,\ + Bucket from jinja2.exceptions import TemplateNotFound @@ -30,3 +31,65 @@ class TestByteCodeCache(object): tmpl = env.get_template('test.html') assert tmpl.render().strip() == 'BAR' pytest.raises(TemplateNotFound, env.get_template, 'missing.html') + + +class MockMemcached(object): + + def get(self, key): + return "value" + + def set(self, *args): + pass + + def get_side_effect(self, key): + raise Exception() + + def set_side_effect(self, *args): + raise Exception() + + +class TestMemcachedBytecodeCache(object): + + def test_load_bytecode(self): + + # Python 2.X does not have explicit bytes type and Python 3.X's + # str type does not support Buffer interface + try: + key = bytes("key", "utf-8") # PY 3.X + except: + key = "key" # PY 2.X + + m = MemcachedBytecodeCache(MockMemcached()) + b = Bucket("", key, "") + m.load_bytecode(b) + + def test_load_bytecode_exception(self): + memcached = MockMemcached() + memcached.get = memcached.get_side_effect + m = MemcachedBytecodeCache(memcached) + b = Bucket("", "key", "") + m.load_bytecode(b) + + def test_load_bytecode_exception_raise(self): + memcached = MockMemcached() + memcached.get = memcached.get_side_effect + m = MemcachedBytecodeCache(memcached, ignore_memcache_errors=False) + b = Bucket("", "key", "") + with pytest.raises(Exception): + m.load_bytecode(b) + + def test_dump_bytecode(self): + memcached = MockMemcached() + m = MemcachedBytecodeCache(memcached, timeout=10) + b = Bucket("", "key", "") + b.code = "code" + m.dump_bytecode(b) + + def test_dump_bytecode_exception_raise(self): + memcached = MockMemcached() + memcached.set = memcached.set_side_effect + m = MemcachedBytecodeCache(memcached, ignore_memcache_errors=False) + b = Bucket("", "key", "") + b.code = "code" + with pytest.raises(Exception): + m.dump_bytecode(b)