1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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:
- 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:
- 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:
- 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)
|