From 263b1d01565ca8b66d14ba918edde22b6cd9b36d Mon Sep 17 00:00:00 2001 From: mdipierro Date: Sat, 23 Feb 2019 16:38:31 -0800 Subject: [PATCH] removed gluon/tests/test_template because moved to yatl --- gluon/tests/__init__.py | 1 - gluon/tests/test_template.py | 142 ----------------------------------- 2 files changed, 143 deletions(-) delete mode 100644 gluon/tests/test_template.py diff --git a/gluon/tests/__init__.py b/gluon/tests/__init__.py index 2fd999ed..79f9cd6d 100644 --- a/gluon/tests/__init__.py +++ b/gluon/tests/__init__.py @@ -6,7 +6,6 @@ from .test_recfile import * from .test_storage import * from .test_dal import * from .test_cache import * -from .test_template import * from .test_html import * from .test_contribs import * from .test_routes import * diff --git a/gluon/tests/test_template.py b/gluon/tests/test_template.py deleted file mode 100644 index 9204ee9e..00000000 --- a/gluon/tests/test_template.py +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" - Unit tests for gluon.template -""" - -import unittest - -from gluon import template -from gluon.template import render - - -class TestTemplate(unittest.TestCase): - - def testRun(self): - self.assertEqual(render(content='{{for i in range(n):}}{{=i}}{{pass}}', - context=dict(n=3)), '012') - self.assertEqual(render(content='{{if n>2:}}ok{{pass}}', - context=dict(n=3)), 'ok') - self.assertEqual( - render(content='{{try:}}{{n/0}}{{except:}}fail{{pass}}', - context=dict(n=3)), 'fail') - self.assertEqual(render(content='{{="<&>"}}'), '<&>') - self.assertEqual(render(content='"abc"'), '"abc"') - self.assertEqual(render(content='"a\'bc"'), '"a\'bc"') - self.assertEqual(render(content='"a\"bc"'), '"a\"bc"') - self.assertEqual(render(content=r'''"a\"bc"'''), r'"a\"bc"') - self.assertEqual(render(content='''\"\"\"abc\\\"\"\"\"'''), r'"""abc\""""') - - def testEqualWrite(self): - "test generation of response.write from =" - self.assertEqual(render(content='{{=2+2}}'), '4') - self.assertEqual(render(content='{{="abc"}}'), 'abc') - # whitespace is stripped - self.assertEqual(render(content='{{ ="abc"}}'), 'abc') - self.assertEqual(render(content='{{ ="abc" }}'), 'abc') - self.assertEqual(render(content='{{pass\n="abc" }}'), 'abc') - # = recognized only at the beginning of a physical line - self.assertEqual(render( - content='{{xyz = "xyz"\n="abc"\n="def"\n=xyz }}'), 'abcdefxyz') - # = in python blocks - self.assertEqual(render(content='{{if True:\n="abc"\npass }}'), 'abc') - self.assertEqual( - render(content='{{if True:\n="abc"\npass\n="def" }}'), 'abcdef') - self.assertEqual( - render(content='{{if False:\n="abc"\npass\n="def" }}'), 'def') - self.assertEqual(render( - content='{{if True:\n="abc"\nelse:\n="def"\npass }}'), 'abc') - self.assertEqual(render( - content='{{if False:\n="abc"\nelse:\n="def"\npass }}'), 'def') - # codeblock-leading = handles internal newlines, escaped or not - self.assertEqual(render(content='{{=list((1,2,3))}}'), '[1, 2, 3]') - self.assertEqual(render(content='{{=list((1,2,\\\n3))}}'), '[1, 2, 3]') - self.assertEqual(render(content='{{=list((1,2,\n3))}}'), '[1, 2, 3]') - # ...but that means no more = operators in the codeblock - self.assertRaises(SyntaxError, render, content='{{="abc"\n="def" }}') - # = embedded in codeblock won't handle newlines in its argument - self.assertEqual( - render(content='{{pass\n=list((1,2,\\\n3))}}'), '[1, 2, 3]') - self.assertRaises( - SyntaxError, render, content='{{pass\n=list((1,2,\n3))}}') - - def testWithDummyFileSystem(self): - from os.path import join as pjoin - import contextlib - from gluon._compat import PY2 - from gluon.restricted import RestrictedError - if PY2: - # because compat uses cStringIO as StringIO which does work with "with" - from StringIO import StringIO - StringIO.__exit__ = lambda *args: args[0] - StringIO.__enter__ = lambda *args: args[0] - else: - from gluon._compat import StringIO - - @contextlib.contextmanager - def monkey_patch(module, fn_name, patch): - try: - unpatch = getattr(module, fn_name) - except AttributeError: - unpatch = None - setattr(module, fn_name, patch) - try: - yield - finally: - if unpatch is None: - delattr(module, fn_name) - else: - setattr(module, fn_name, unpatch) - - def dummy_open(path, mode): - if path == pjoin('views', 'layout.html'): - return StringIO("{{block left_sidebar}}left{{end}}" - "{{include}}" - "{{block right_sidebar}}right{{end}}") - elif path == pjoin('views', 'layoutbrackets.html'): - return StringIO("[[block left_sidebar]]left[[end]]" - "[[include]]" - "[[block right_sidebar]]right[[end]]") - elif path == pjoin('views', 'default', 'index.html'): - return StringIO("{{extend 'layout.html'}}" - "{{block left_sidebar}}{{super}} {{end}}" - "to" - "{{block right_sidebar}} {{super}}{{end}}") - elif path == pjoin('views', 'default', 'indexbrackets.html'): - return StringIO("[[extend 'layoutbrackets.html']]" - "[[block left_sidebar]][[super]] [[end]]" - "to" - "[[block right_sidebar]] [[super]][[end]]") - elif path == pjoin('views', 'default', 'missing.html'): - return StringIO("{{extend 'wut'}}" - "{{block left_sidebar}}{{super}} {{end}}" - "to" - "{{block right_sidebar}} {{super}}{{end}}") - elif path == pjoin('views', 'default', 'noescape.html'): - return StringIO("""{{=NOESCAPE('')}}""") - raise IOError - - with monkey_patch(template, 'open', dummy_open): - self.assertEqual( - render(filename=pjoin('views', 'default', 'index.html'), - path='views'), - 'left to right') - self.assertEqual( - render(filename=pjoin('views', 'default', 'indexbrackets.html'), - path='views', delimiters=('[[', ']]')), - 'left to right') - self.assertRaises( - RestrictedError, - render, - filename=pjoin('views', 'default', 'missing.html'), - path='views') - response = template.DummyResponse() - response.delimiters = ('[[', ']]') - self.assertEqual( - render(filename=pjoin('views', 'default', 'indexbrackets.html'), - path='views', context={'response': response}), - 'left to right') - self.assertEqual( - render(filename=pjoin('views', 'default', 'noescape.html'), - context={'NOESCAPE': template.NOESCAPE}), - '')