- Make test suite pass on PyPy (Chameleon doesn't work).
| | |
| | | - Make test suite pass on Jython (requires PasteScript trunk, presumably to |
| | | be 1.7.4). |
| | | |
| | | - Make test suite pass on PyPy (Chameleon doesn't work). |
| | | |
| | | Bug Fixes |
| | | --------- |
| | | |
| | |
| | | from pyramid.interfaces import IView |
| | | from pyramid.interfaces import IViewClassifier |
| | | |
| | | from pyramid import chameleon_text |
| | | from pyramid import chameleon_zpt |
| | | try: |
| | | from pyramid import chameleon_text |
| | | except TypeError: # pragma: no cover |
| | | chameleon_text = None # pypy |
| | | try: |
| | | from pyramid import chameleon_zpt |
| | | except TypeError: # pragma: no cover |
| | | chameleon_zpt = None # pypy |
| | | |
| | | from pyramid import renderers |
| | | from pyramid.authorization import ACLAuthorizationPolicy |
| | | from pyramid.compat import all |
| | |
| | | DEFAULT_PHASH = md5().hexdigest() |
| | | |
| | | DEFAULT_RENDERERS = ( |
| | | ('.pt', chameleon_zpt.renderer_factory), |
| | | ('.txt', chameleon_text.renderer_factory), |
| | | ('.mak', mako_renderer_factory), |
| | | ('.mako', mako_renderer_factory), |
| | | ('json', renderers.json_renderer_factory), |
| | | ('string', renderers.string_renderer_factory), |
| | | ) |
| | | |
| | | if chameleon_text: |
| | | DEFAULT_RENDERERS += (('.pt', chameleon_zpt.renderer_factory),) |
| | | if chameleon_zpt: |
| | | DEFAULT_RENDERERS += (('.txt', chameleon_text.renderer_factory),) |
| | | |
| | | |
| | | class Configurator(object): |
| | | """ |
| | | A Configurator is used to configure a :app:`Pyramid` |
| | |
| | | for platform in platforms: |
| | | if skip_on.os_name.startswith(platform): |
| | | return |
| | | if platform == 'pypy' and skip_on.pypy: # pragma: no cover |
| | | return |
| | | return func(*args, **kw) |
| | | wrapper.__name__ = func.__name__ |
| | | wrapper.__doc__ = func.__doc__ |
| | | return wrapper |
| | | return decorator |
| | | skip_on.os_name = os.name # for testing |
| | | try: # pragma: no cover |
| | | import __pypy__ |
| | | skip_on.pypy = True |
| | | except ImportError: |
| | | skip_on.pypy = False |
| | |
| | | klass = self._getTargetClass() |
| | | return klass(*arg, **kw) |
| | | |
| | | @skip_on('pypy') |
| | | def test_instance_implements_ITemplate(self): |
| | | from zope.interface.verify import verifyObject |
| | | from pyramid.interfaces import ITemplateRenderer |
| | |
| | | lookup = DummyLookup() |
| | | verifyObject(ITemplateRenderer, self._makeOne(path, lookup)) |
| | | |
| | | @skip_on('pypy') |
| | | def test_class_implements_ITemplate(self): |
| | | from zope.interface.verify import verifyClass |
| | | from pyramid.interfaces import ITemplateRenderer |
| | | verifyClass(ITemplateRenderer, self._getTargetClass()) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_reified(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template, instance.__dict__['template']) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_with_ichameleon_translate(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.translate, lookup.translate) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_with_debug_templates(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.debug, True) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_with_reload_templates(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.auto_reload, True) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_without_reload_templates(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.auto_reload, False) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_call(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | self.failUnless(isinstance(result, str)) |
| | | self.assertEqual(result, 'Hello.\n') |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_call_with_nondict_value(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | | instance = self._makeOne(minimal, lookup) |
| | | self.assertRaises(ValueError, instance, None, {}) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_call_nonminimal(self): |
| | | nonminimal = self._getTemplatePath('nonminimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | self.failUnless(isinstance(result, str)) |
| | | self.assertEqual(result, 'Hello, Chris!\n') |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_implementation(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | lookup = DummyLookup() |
| | |
| | | from pyramid.chameleon_text import render_template |
| | | return render_template(name, **kw) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_it(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | result = self._callFUT(minimal) |
| | |
| | | from pyramid.chameleon_text import render_template_to_response |
| | | return render_template_to_response(name, **kw) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_minimal(self): |
| | | minimal = self._getTemplatePath('minimal.txt') |
| | | result = self._callFUT(minimal) |
| | |
| | | self.assertEqual(result.status, '200 OK') |
| | | self.assertEqual(len(result.headerlist), 2) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_iresponsefactory_override(self): |
| | | from webob import Response |
| | | class Response2(Response): |
| | |
| | | from pyramid.chameleon_text import get_renderer |
| | | return get_renderer(name) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_it(self): |
| | | from pyramid.interfaces import IRendererFactory |
| | | class Dummy: |
| | |
| | | from pyramid.chameleon_text import get_template |
| | | return get_template(name) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_it(self): |
| | | from pyramid.interfaces import IRendererFactory |
| | | class Dummy: |
| | |
| | | klass = self._getTargetClass() |
| | | return klass(*arg, **kw) |
| | | |
| | | @skip_on('pypy') |
| | | def test_instance_implements_ITemplate(self): |
| | | from zope.interface.verify import verifyObject |
| | | from pyramid.interfaces import ITemplateRenderer |
| | |
| | | lookup = DummyLookup() |
| | | verifyObject(ITemplateRenderer, self._makeOne(path, lookup)) |
| | | |
| | | @skip_on('pypy') |
| | | def test_class_implements_ITemplate(self): |
| | | from zope.interface.verify import verifyClass |
| | | from pyramid.interfaces import ITemplateRenderer |
| | | verifyClass(ITemplateRenderer, self._getTargetClass()) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_call(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | self.assertEqual(result, |
| | | '<div xmlns="http://www.w3.org/1999/xhtml">\n</div>') |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_reified(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template, instance.__dict__['template']) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_with_ichameleon_translate(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.translate, lookup.translate) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_with_debug_templates(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.debug, True) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_without_debug_templates(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.debug, False) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_with_reload_templates(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.auto_reload, True) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_template_without_reload_templates(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | template = instance.template |
| | | self.assertEqual(template.auto_reload, False) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_call_with_nondict_value(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | | instance = self._makeOne(minimal, lookup) |
| | | self.assertRaises(ValueError, instance, None, {}) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_implementation(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | lookup = DummyLookup() |
| | |
| | | from pyramid.chameleon_zpt import render_template |
| | | return render_template(name, **kw) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_it(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | result = self._callFUT(minimal) |
| | |
| | | from pyramid.chameleon_zpt import render_template_to_response |
| | | return render_template_to_response(name, **kw) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_it(self): |
| | | minimal = self._getTemplatePath('minimal.pt') |
| | | result = self._callFUT(minimal) |
| | |
| | | self.assertEqual(result.status, '200 OK') |
| | | self.assertEqual(len(result.headerlist), 2) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_iresponsefactory_override(self): |
| | | from webob import Response |
| | | class Response2(Response): |
| | |
| | | from pyramid.chameleon_zpt import get_renderer |
| | | return get_renderer(name) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_it(self): |
| | | from pyramid.interfaces import IRendererFactory |
| | | class Dummy: |
| | |
| | | from pyramid.chameleon_zpt import get_template |
| | | return get_template(name) |
| | | |
| | | @skip_on('java') |
| | | @skip_on('java', 'pypy') |
| | | def test_it(self): |
| | | from pyramid.interfaces import IRendererFactory |
| | | class Dummy: |
| | |
| | | |
| | | from pyramid import testing |
| | | |
| | | try: |
| | | import __pypy__ |
| | | except: |
| | | __pypy__ = None |
| | | |
| | | class ConfiguratorTests(unittest.TestCase): |
| | | def _makeOne(self, *arg, **kw): |
| | | from pyramid.configuration import Configurator |
| | |
| | | self.assertEqual(config.package, this_pkg) |
| | | self.failUnless(config.registry.getUtility(IRendererFactory, 'json')) |
| | | self.failUnless(config.registry.getUtility(IRendererFactory, 'string')) |
| | | self.failUnless(config.registry.getUtility(IRendererFactory, '.pt')) |
| | | self.failUnless(config.registry.getUtility(IRendererFactory, '.txt')) |
| | | if not __pypy__: |
| | | self.failUnless(config.registry.getUtility(IRendererFactory, '.pt')) |
| | | self.failUnless(config.registry.getUtility(IRendererFactory,'.txt')) |
| | | self.failUnless(config.registry.getUtility(IRendererFactory, '.mak')) |
| | | self.failUnless(config.registry.getUtility(IRendererFactory, '.mako')) |
| | | |
| | |
| | | result = self._callFUT(info, factory) |
| | | self.failUnless(result is renderer) |
| | | path = os.path.abspath(__file__).split('$')[0] # jython |
| | | if path.endswith('.pyc'): |
| | | if path.endswith('.pyc'): # pragma: no cover |
| | | path = path[:-1] |
| | | self.failUnless(factory.path.startswith(path)) |
| | | self.assertEqual(factory.kw, {}) |