1
from mako.template import Template
2
from mako import lookup
4
from util import result_lines
6
if not os.access('./test_htdocs', os.F_OK):
7
os.mkdir('./test_htdocs')
9
class MockCache(object):
10
def __init__(self, realcache):
11
self.realcache = realcache
12
def get(self, key, **kwargs):
14
self.kwargs = kwargs.copy()
15
self.kwargs.pop('createfunc', None)
16
return self.realcache.get(key, **kwargs)
18
class CacheTest(unittest.TestCase):
24
<%def name="foo()" cached="True">
34
callcount: ${callcount}
36
m = self._install_mock_cache(t)
37
assert result_lines(t.render()) == [
45
def test_nested_def(self):
51
<%def name="bar()" cached="True">
63
callcount: ${callcount}
65
m = self._install_mock_cache(t)
66
assert result_lines(t.render()) == [
79
<%page cached="True"/>
84
callcount: ${callcount}
86
m = self._install_mock_cache(t)
89
assert result_lines(t.render()) == [
95
def test_fileargs_implicit(self):
96
l = lookup.TemplateLookup(module_directory='./test_htdocs')
97
l.put_string("test","""
101
<%def name="foo()" cached="True" cache_type='dbm'>
111
callcount: ${callcount}
114
m = self._install_mock_cache(l.get_template('test'))
115
assert result_lines(l.get_template('test').render()) == [
121
assert m.kwargs == {'type':'dbm', 'data_dir':'./test_htdocs'}
123
def test_fileargs_deftag(self):
128
<%def name="foo()" cached="True" cache_type='file' cache_dir='./test_htdocs'>
138
callcount: ${callcount}
140
m = self._install_mock_cache(t)
141
assert result_lines(t.render()) == [
147
assert m.kwargs == {'type':'file','data_dir':'./test_htdocs'}
149
def test_fileargs_pagetag(self):
151
<%page cache_dir='./test_htdocs' cache_type='dbm'/>
155
<%def name="foo()" cached="True">
165
callcount: ${callcount}
167
m = self._install_mock_cache(t)
168
assert result_lines(t.render()) == [
174
assert m.kwargs == {'data_dir':'./test_htdocs', 'type':'dbm'}
176
def test_args_complete(self):
178
<%def name="foo()" cached="True" cache_timeout="30" cache_dir="./test_htdocs" cache_type="file" cache_key='somekey'>
184
m = self._install_mock_cache(t)
186
assert m.kwargs == {'data_dir':'./test_htdocs', 'type':'file', 'expiretime':30}
189
<%page cached="True" cache_timeout="30" cache_dir="./test_htdocs" cache_type="file" cache_key='somekey'/>
192
m = self._install_mock_cache(t2)
194
assert m.kwargs == {'data_dir':'./test_htdocs', 'type':'file', 'expiretime':30}
196
def test_fileargs_lookup(self):
197
l = lookup.TemplateLookup(cache_dir='./test_htdocs', cache_type='file')
198
l.put_string("test","""
202
<%def name="foo()" cached="True">
212
callcount: ${callcount}
215
t = l.get_template('test')
216
m = self._install_mock_cache(t)
217
assert result_lines(l.get_template('test').render()) == [
223
assert m.kwargs == {'data_dir':'./test_htdocs', 'type':'file'}
225
def test_buffered(self):
229
return "this is a " + text.strip()
233
<%def name="foo()" cached="True" buffered="True">
236
""", buffer_filters=["a"])
237
assert result_lines(t.render()) == ["this is a this is a test", "this is a this is a test"]
239
def _install_mock_cache(self, template):
240
m = MockCache(template.module._template_cache)
241
template.module._template_cache = m
244
if __name__ == '__main__':