aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Jinja2/py2/tests/test_bytecode_cache.py
diff options
context:
space:
mode:
authornkozlovskiy <nmk@ydb.tech>2023-09-29 12:24:06 +0300
committernkozlovskiy <nmk@ydb.tech>2023-09-29 12:41:34 +0300
commite0e3e1717e3d33762ce61950504f9637a6e669ed (patch)
treebca3ff6939b10ed60c3d5c12439963a1146b9711 /contrib/python/Jinja2/py2/tests/test_bytecode_cache.py
parent38f2c5852db84c7b4d83adfcb009eb61541d1ccd (diff)
downloadydb-e0e3e1717e3d33762ce61950504f9637a6e669ed.tar.gz
add ydb deps
Diffstat (limited to 'contrib/python/Jinja2/py2/tests/test_bytecode_cache.py')
-rw-r--r--contrib/python/Jinja2/py2/tests/test_bytecode_cache.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/contrib/python/Jinja2/py2/tests/test_bytecode_cache.py b/contrib/python/Jinja2/py2/tests/test_bytecode_cache.py
new file mode 100644
index 0000000000..c7882b1a2d
--- /dev/null
+++ b/contrib/python/Jinja2/py2/tests/test_bytecode_cache.py
@@ -0,0 +1,78 @@
+# -*- coding: utf-8 -*-
+import pytest
+
+from jinja2 import Environment
+from jinja2.bccache import Bucket
+from jinja2.bccache import FileSystemBytecodeCache
+from jinja2.bccache import MemcachedBytecodeCache
+from jinja2.exceptions import TemplateNotFound
+
+
+@pytest.fixture
+def env(package_loader, tmp_path):
+ bytecode_cache = FileSystemBytecodeCache(str(tmp_path))
+ return Environment(loader=package_loader, bytecode_cache=bytecode_cache)
+
+
+class TestByteCodeCache(object):
+ def test_simple(self, env):
+ tmpl = env.get_template("test.html")
+ assert tmpl.render().strip() == "BAR"
+ pytest.raises(TemplateNotFound, env.get_template, "missing.html")
+
+
+class MockMemcached(object):
+ class Error(Exception):
+ pass
+
+ key = None
+ value = None
+ timeout = None
+
+ def get(self, key):
+ return self.value
+
+ def set(self, key, value, timeout=None):
+ self.key = key
+ self.value = value
+ self.timeout = timeout
+
+ def get_side_effect(self, key):
+ raise self.Error()
+
+ def set_side_effect(self, *args):
+ raise self.Error()
+
+
+class TestMemcachedBytecodeCache(object):
+ def test_dump_load(self):
+ memcached = MockMemcached()
+ m = MemcachedBytecodeCache(memcached)
+
+ b = Bucket(None, "key", "")
+ b.code = "code"
+ m.dump_bytecode(b)
+ assert memcached.key == "jinja2/bytecode/key"
+
+ b = Bucket(None, "key", "")
+ m.load_bytecode(b)
+ assert b.code == "code"
+
+ def test_exception(self):
+ memcached = MockMemcached()
+ memcached.get = memcached.get_side_effect
+ memcached.set = memcached.set_side_effect
+ m = MemcachedBytecodeCache(memcached)
+ b = Bucket(None, "key", "")
+ b.code = "code"
+
+ m.dump_bytecode(b)
+ m.load_bytecode(b)
+
+ m.ignore_memcache_errors = False
+
+ with pytest.raises(MockMemcached.Error):
+ m.dump_bytecode(b)
+
+ with pytest.raises(MockMemcached.Error):
+ m.load_bytecode(b)