blob: fddbf8467074d51c5df1aefa14f10bb80c1bcb00 [file] [log] [blame]
from mako.template import Template
from mako import lookup, exceptions
from util import flatten_result, result_lines
import unittest
import os
if not os.access('./test_htdocs', os.F_OK):
os.mkdir('./test_htdocs')
file('./test_htdocs/index.html', 'w').write("this is index")
file('./test_htdocs/incl.html', 'w').write("this is include 1")
if not os.access('./test_htdocs/subdir', os.F_OK):
os.mkdir('./test_htdocs/subdir')
file('./test_htdocs/subdir/incl.html', 'w').write("""
this is include 2
""")
file('./test_htdocs/subdir/index.html', 'w').write("""
this is sub index
<%include file="incl.html"/>
""")
tl = lookup.TemplateLookup(directories=['./test_htdocs'])
class LookupTest(unittest.TestCase):
def test_basic(self):
t = tl.get_template('index.html')
assert result_lines(t.render()) == [
"this is index"
]
def test_subdir(self):
t = tl.get_template('/subdir/index.html')
assert result_lines(t.render()) == [
"this is sub index",
"this is include 2"
]
assert tl.get_template('/subdir/index.html').module_id == '_subdir_index_html'
def test_updir(self):
t = tl.get_template('/subdir/foo/../bar/../index.html')
assert result_lines(t.render()) == [
"this is sub index",
"this is include 2"
]
def test_no_lookup(self):
t = Template("hi <%include file='foo.html'/>")
try:
t.render()
assert False
except exceptions.TemplateLookupException, e:
assert str(e) == "Template 'memory:%s' has no TemplateLookup associated" % hex(id(t))
def test_uri_adjust(self):
tl = lookup.TemplateLookup(directories=['/foo/bar'])
assert tl.filename_to_uri('/foo/bar/etc/lala/index.html') == '/etc/lala/index.html'
tl = lookup.TemplateLookup(directories=['./foo/bar'])
assert tl.filename_to_uri('./foo/bar/etc/index.html') == '/etc/index.html'
def test_uri_cache(self):
"""test that the _uri_cache dictionary is available"""
tl._uri_cache[('foo', 'bar')] = '/some/path'
assert tl._uri_cache[('foo', 'bar')] == '/some/path'
if __name__ == '__main__':
unittest.main()