3
from jinja2 import Environment
4
from jinja2.bccache import Bucket
5
from jinja2.bccache import FileSystemBytecodeCache
6
from jinja2.bccache import MemcachedBytecodeCache
7
from jinja2.exceptions import TemplateNotFound
11
def env(package_loader, tmp_path):
12
bytecode_cache = FileSystemBytecodeCache(str(tmp_path))
13
return Environment(loader=package_loader, bytecode_cache=bytecode_cache)
16
class TestByteCodeCache:
17
def test_simple(self, env):
18
tmpl = env.get_template("test.html")
19
assert tmpl.render().strip() == "BAR"
20
pytest.raises(TemplateNotFound, env.get_template, "missing.html")
24
class Error(Exception):
34
def set(self, key, value, timeout=None):
37
self.timeout = timeout
39
def get_side_effect(self, key):
42
def set_side_effect(self, *args):
46
class TestMemcachedBytecodeCache:
47
def test_dump_load(self):
48
memcached = MockMemcached()
49
m = MemcachedBytecodeCache(memcached)
51
b = Bucket(None, "key", "")
54
assert memcached.key == "jinja2/bytecode/key"
56
b = Bucket(None, "key", "")
58
assert b.code == "code"
60
def test_exception(self):
61
memcached = MockMemcached()
62
memcached.get = memcached.get_side_effect
63
memcached.set = memcached.set_side_effect
64
m = MemcachedBytecodeCache(memcached)
65
b = Bucket(None, "key", "")
71
m.ignore_memcache_errors = False
73
with pytest.raises(MockMemcached.Error):
76
with pytest.raises(MockMemcached.Error):