# HG changeset patch # User cmlenz # Date 1155723915 0 # Node ID cdb2a1f930e2114296e412f156050b8479f40c8c # Parent fb71efbd6ad4308ddb63093418d6c04438cc4d15 Add some tests for relative template includes (see #27). diff --git a/markup/template.py b/markup/template.py --- a/markup/template.py +++ b/markup/template.py @@ -1006,6 +1006,8 @@ >>> loader.load(os.path.basename(path)) is template True + + >>> os.remove(path) """ def __init__(self, search_path=None, auto_reload=False): """Create the template laoder. diff --git a/markup/tests/template.py b/markup/tests/template.py --- a/markup/tests/template.py +++ b/markup/tests/template.py @@ -12,11 +12,15 @@ # history and logs, available at http://markup.edgewall.org/log/. import doctest +import os import unittest +import shutil import sys +import tempfile from markup.core import Markup, Stream -from markup.template import BadDirectiveError, Template, TemplateSyntaxError +from markup.template import BadDirectiveError, Template, TemplateLoader, \ + TemplateSyntaxError class AttrsDirectiveTestCase(unittest.TestCase): @@ -606,10 +610,84 @@ """, str(tmpl.generate())) +class TemplateLoaderTestCase(unittest.TestCase): + """Tests for the template loader.""" + + def setUp(self): + self.dirname = tempfile.mkdtemp(suffix='markup_test') + + def tearDown(self): + shutil.rmtree(self.dirname) + + def test_relative_include_samedir(self): + file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w') + try: + file1.write("""
Included
""") + finally: + file1.close() + + file2 = open(os.path.join(self.dirname, 'tmpl2.html'), 'w') + try: + file2.write(""" + +""") + finally: + file2.close() + + loader = TemplateLoader([self.dirname]) + tmpl = loader.load('tmpl2.html') + self.assertEqual(""" +
Included
+""", tmpl.generate().render()) + + def test_relative_include_subdir(self): + os.mkdir(os.path.join(self.dirname, 'sub')) + file1 = open(os.path.join(self.dirname, 'sub', 'tmpl1.html'), 'w') + try: + file1.write("""
Included
""") + finally: + file1.close() + + file2 = open(os.path.join(self.dirname, 'tmpl2.html'), 'w') + try: + file2.write(""" + +""") + finally: + file2.close() + + loader = TemplateLoader([self.dirname]) + tmpl = loader.load('tmpl2.html') + self.assertEqual(""" +
Included
+""", tmpl.generate().render()) + + def test_relative_include_parentdir(self): + file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w') + try: + file1.write("""
Included
""") + finally: + file1.close() + + os.mkdir(os.path.join(self.dirname, 'sub')) + file2 = open(os.path.join(self.dirname, 'sub', 'tmpl2.html'), 'w') + try: + file2.write(""" + +""") + finally: + file2.close() + + loader = TemplateLoader([self.dirname]) + tmpl = loader.load('sub/tmpl2.html') + self.assertEqual(""" +
Included
+""", tmpl.generate().render()) + + def suite(): suite = unittest.TestSuite() suite.addTest(doctest.DocTestSuite(Template.__module__)) - suite.addTest(unittest.makeSuite(TemplateTestCase, 'test')) suite.addTest(unittest.makeSuite(AttrsDirectiveTestCase, 'test')) suite.addTest(unittest.makeSuite(ChooseDirectiveTestCase, 'test')) suite.addTest(unittest.makeSuite(DefDirectiveTestCase, 'test')) @@ -618,6 +696,8 @@ suite.addTest(unittest.makeSuite(MatchDirectiveTestCase, 'test')) suite.addTest(unittest.makeSuite(StripDirectiveTestCase, 'test')) suite.addTest(unittest.makeSuite(WithDirectiveTestCase, 'test')) + suite.addTest(unittest.makeSuite(TemplateTestCase, 'test')) + suite.addTest(unittest.makeSuite(TemplateLoaderTestCase, 'test')) return suite if __name__ == '__main__':