aboutsummaryrefslogtreecommitdiffstats
path: root/test/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/__init__.py')
-rw-r--r--test/__init__.py116
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")