jinja

Форк
0
/
test_bytecode_cache.py 
77 строк · 1.9 Кб
1
import pytest
2

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
8

9

10
@pytest.fixture
11
def env(package_loader, tmp_path):
12
    bytecode_cache = FileSystemBytecodeCache(str(tmp_path))
13
    return Environment(loader=package_loader, bytecode_cache=bytecode_cache)
14

15

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")
21

22

23
class MockMemcached:
24
    class Error(Exception):
25
        pass
26

27
    key = None
28
    value = None
29
    timeout = None
30

31
    def get(self, key):
32
        return self.value
33

34
    def set(self, key, value, timeout=None):
35
        self.key = key
36
        self.value = value
37
        self.timeout = timeout
38

39
    def get_side_effect(self, key):
40
        raise self.Error()
41

42
    def set_side_effect(self, *args):
43
        raise self.Error()
44

45

46
class TestMemcachedBytecodeCache:
47
    def test_dump_load(self):
48
        memcached = MockMemcached()
49
        m = MemcachedBytecodeCache(memcached)
50

51
        b = Bucket(None, "key", "")
52
        b.code = "code"
53
        m.dump_bytecode(b)
54
        assert memcached.key == "jinja2/bytecode/key"
55

56
        b = Bucket(None, "key", "")
57
        m.load_bytecode(b)
58
        assert b.code == "code"
59

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", "")
66
        b.code = "code"
67

68
        m.dump_bytecode(b)
69
        m.load_bytecode(b)
70

71
        m.ignore_memcache_errors = False
72

73
        with pytest.raises(MockMemcached.Error):
74
            m.dump_bytecode(b)
75

76
        with pytest.raises(MockMemcached.Error):
77
            m.load_bytecode(b)
78

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.