]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Adds tests for the memcached bytecode cache module
authorAlex Kahan <alexk307@gmail.com>
Fri, 27 Jan 2017 18:13:12 +0000 (13:13 -0500)
committerDavid Lord <davidism@gmail.com>
Sun, 9 Jul 2017 15:45:05 +0000 (08:45 -0700)
tests/test_bytecode_cache.py

index 42ff84002064425d2b2e8a52d48960e6fbce20f1..126cf4fa4d51a465f9d1110598137d3eaa577413 100644 (file)
@@ -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)