diff options
Diffstat (limited to 'test/__init__.py')
-rw-r--r-- | test/__init__.py | 116 |
1 files changed, 85 insertions, 31 deletions
diff --git a/test/__init__.py b/test/__init__.py index 186ec04..b91e709 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -1,11 +1,15 @@ -from mako.template import Template -import unittest +import contextlib import os -from mako.compat import py3k, py33 +import re +import unittest + from mako import compat +from mako.cache import CacheImpl +from mako.cache import register_plugin +from mako.compat import py33 +from mako.compat import py3k +from mako.template import Template from mako.util import update_wrapper -import re -from mako.cache import CacheImpl, register_plugin try: # unitttest has a SkipTest also but pytest doesn't @@ -14,17 +18,16 @@ try: except ImportError: from _pytest.runner import Skipped as SkipTest -import contextlib +template_base = os.path.join(os.path.dirname(__file__), "templates") +module_base = os.path.join(template_base, "modules") -template_base = os.path.join(os.path.dirname(__file__), 'templates') -module_base = os.path.join(template_base, 'modules') class TemplateTest(unittest.TestCase): - def _file_template(self, filename, **kw): filepath = self._file_path(filename) - return Template(uri=filename, filename=filepath, - module_directory=module_base, **kw) + return Template( + uri=filename, filename=filepath, module_directory=module_base, **kw + ) def _file_path(self, filename): name, ext = os.path.splitext(filename) @@ -36,20 +39,50 @@ class TemplateTest(unittest.TestCase): return os.path.join(template_base, filename) - def _do_file_test(self, filename, expected, filters=None, - unicode_=True, template_args=None, **kw): + def _do_file_test( + self, + filename, + expected, + filters=None, + unicode_=True, + template_args=None, + **kw + ): t1 = self._file_template(filename, **kw) - self._do_test(t1, expected, filters=filters, - unicode_=unicode_, template_args=template_args) - - def _do_memory_test(self, source, expected, filters=None, - unicode_=True, template_args=None, **kw): + self._do_test( + t1, + expected, + filters=filters, + unicode_=unicode_, + template_args=template_args, + ) + + def _do_memory_test( + self, + source, + expected, + filters=None, + unicode_=True, + template_args=None, + **kw + ): t1 = Template(text=source, **kw) - self._do_test(t1, expected, filters=filters, - unicode_=unicode_, template_args=template_args) - - def _do_test(self, template, expected, filters=None, template_args=None, - unicode_=True): + self._do_test( + t1, + expected, + filters=filters, + unicode_=unicode_, + template_args=template_args, + ) + + def _do_test( + self, + template, + expected, + filters=None, + template_args=None, + unicode_=True, + ): if template_args is None: template_args = {} if unicode_: @@ -61,18 +94,23 @@ class TemplateTest(unittest.TestCase): output = filters(output) eq_(output, expected) + def eq_(a, b, msg=None): """Assert a == b, with repr messaging on failure.""" assert a == b, msg or "%r != %r" % (a, b) + def teardown(): import shutil + shutil.rmtree(module_base, True) + if py33: - from unittest import mock + from unittest import mock # noqa else: - import mock + import mock # noqa + @contextlib.contextmanager def raises(except_cls, message=None): @@ -81,9 +119,10 @@ def raises(except_cls, message=None): success = False except except_cls as e: if message: - assert re.search(message, compat.text_type(e), re.UNICODE), \ - "%r !~ %s" % (message, e) - print(compat.text_type(e).encode('utf-8')) + assert re.search( + message, compat.text_type(e), re.UNICODE + ), "%r !~ %s" % (message, e) + print(compat.text_type(e).encode("utf-8")) success = True # assert outside the block so it works for AssertionError too ! @@ -94,50 +133,64 @@ def assert_raises(except_cls, callable_, *args, **kw): with raises(except_cls): return callable_(*args, **kw) + def assert_raises_message(except_cls, msg, callable_, *args, **kwargs): with raises(except_cls, msg): return callable_(*args, **kwargs) + def skip_if(predicate, reason=None): """Skip a test if predicate is true.""" reason = reason or predicate.__name__ def decorate(fn): fn_name = fn.__name__ + def maybe(*args, **kw): if predicate(): - msg = "'%s' skipped: %s" % ( - fn_name, reason) + msg = "'%s' skipped: %s" % (fn_name, reason) raise SkipTest(msg) else: return fn(*args, **kw) + return update_wrapper(maybe, fn) + return decorate + def requires_python_3(fn): return skip_if(lambda: not py3k, "Requires Python 3.xx")(fn) + def requires_python_2(fn): return skip_if(lambda: py3k, "Requires Python 2.xx")(fn) + def requires_pygments_14(fn): try: import pygments + version = pygments.__version__ except: version = "0" - return skip_if(lambda: version < "1.4", "Requires pygments 1.4 or greater")(fn) + return skip_if( + lambda: version < "1.4", "Requires pygments 1.4 or greater" + )(fn) + def requires_no_pygments_exceptions(fn): def go(*arg, **kw): from mako import exceptions + exceptions._install_fallback() try: return fn(*arg, **kw) finally: exceptions._install_highlighting() + return update_wrapper(go, fn) + class PlainCacheImpl(CacheImpl): """Simple memory cache impl so that tests which use caching can run without beaker. """ @@ -162,4 +215,5 @@ class PlainCacheImpl(CacheImpl): def invalidate(self, key, **kw): del self.data[key] + register_plugin("plain", __name__, "PlainCacheImpl") |