# -*- coding: utf-8 -*- import os import unittest from mako import util, exceptions, compat from test import eq_, skip_if, assert_raises_message from mako.compat import u class UtilTest(unittest.TestCase): def test_fast_buffer_write(self): buf = util.FastEncodingBuffer() buf.write("string a ") buf.write("string b") eq_(buf.getvalue(), "string a string b") def test_fast_buffer_truncate(self): buf = util.FastEncodingBuffer() buf.write("string a ") buf.write("string b") buf.truncate() buf.write("string c ") buf.write("string d") eq_(buf.getvalue(), "string c string d") def test_fast_buffer_encoded(self): s = u("drôl m’a rée « S’il") buf = util.FastEncodingBuffer(encoding='utf-8') buf.write(s[0:10]) buf.write(s[10:]) q = buf.getvalue() eq_(buf.getvalue(), s.encode('utf-8')) def test_read_file(self): fn = os.path.join(os.path.dirname(__file__), 'test_util.py') data = util.read_file(fn, 'rb') assert 'test_util' in str(data) # str() for py3k @skip_if(lambda: compat.pypy, "Pypy does this differently") def test_load_module(self): fn = os.path.join(os.path.dirname(__file__), 'test_util.py') module = compat.load_module('mako.template', fn) import mako.template self.assertEqual(module, mako.template) def test_load_plugin_failure(self): loader = util.PluginLoader("fakegroup") assert_raises_message( exceptions.RuntimeException, "Can't load plugin fakegroup fake", loader.load, "fake" )