summaryrefslogtreecommitdiff
path: root/mako/testing/fixtures.py
diff options
context:
space:
mode:
authorMichael Bourke <michael@iter8ve.com>2022-01-09 16:38:12 +1100
committerMike Bayer <mike_mp@zzzcomputing.com>2022-01-14 09:57:14 -0500
commit7e52b60b7dac75a3c7177e69244123c0dad9e9d9 (patch)
tree2df96da5716169b2351f442c272a39ed6940332f /mako/testing/fixtures.py
parent3c3196754b55b48c044e59a5beacb9a13bc25114 (diff)
downloadmako-7e52b60b7dac75a3c7177e69244123c0dad9e9d9.tar.gz
Refactor test.util into mako.testing
Fixes: #349 Change-Id: I202c252a913fb72cc328a6e7f0f33174802487d3
Diffstat (limited to 'mako/testing/fixtures.py')
-rw-r--r--mako/testing/fixtures.py109
1 files changed, 109 insertions, 0 deletions
diff --git a/mako/testing/fixtures.py b/mako/testing/fixtures.py
new file mode 100644
index 0000000..c9379c0
--- /dev/null
+++ b/mako/testing/fixtures.py
@@ -0,0 +1,109 @@
+import os
+
+from mako.cache import CacheImpl
+from mako.cache import register_plugin
+from mako.template import Template
+from .assertions import eq_
+from .config import config
+
+
+class TemplateTest:
+ def _file_template(self, filename, **kw):
+ filepath = self._file_path(filename)
+ return Template(
+ uri=filename,
+ filename=filepath,
+ module_directory=config.module_base,
+ **kw,
+ )
+
+ def _file_path(self, filename):
+ name, ext = os.path.splitext(filename)
+ py3k_path = os.path.join(config.template_base, name + "_py3k" + ext)
+ if os.path.exists(py3k_path):
+ return py3k_path
+
+ return os.path.join(config.template_base, filename)
+
+ 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,
+ ):
+ 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,
+ ):
+ if template_args is None:
+ template_args = {}
+ if unicode_:
+ output = template.render_unicode(**template_args)
+ else:
+ output = template.render(**template_args)
+
+ if filters:
+ output = filters(output)
+ eq_(output, expected)
+
+
+class PlainCacheImpl(CacheImpl):
+ """Simple memory cache impl so that tests which
+ use caching can run without beaker."""
+
+ def __init__(self, cache):
+ self.cache = cache
+ self.data = {}
+
+ def get_or_create(self, key, creation_function, **kw):
+ if key in self.data:
+ return self.data[key]
+ else:
+ self.data[key] = data = creation_function(**kw)
+ return data
+
+ def put(self, key, value, **kw):
+ self.data[key] = value
+
+ def get(self, key, **kw):
+ return self.data[key]
+
+ def invalidate(self, key, **kw):
+ del self.data[key]
+
+
+register_plugin("plain", __name__, "PlainCacheImpl")