Chris McDonough
2010-11-19 29b7aabcb7b50024ead27cb5ff9cb47757ffe462
- Make test suite pass on PyPy (Chameleon doesn't work).
7 files modified
100 ■■■■■ changed files
CHANGES.txt 2 ●●●●● patch | view | raw | blame | history
pyramid/configuration.py 19 ●●●● patch | view | raw | blame | history
pyramid/testing.py 7 ●●●●● patch | view | raw | blame | history
pyramid/tests/test_chameleon_text.py 30 ●●●● patch | view | raw | blame | history
pyramid/tests/test_chameleon_zpt.py 30 ●●●● patch | view | raw | blame | history
pyramid/tests/test_configuration.py 10 ●●●● patch | view | raw | blame | history
pyramid/tests/test_renderers.py 2 ●●● patch | view | raw | blame | history
CHANGES.txt
@@ -22,6 +22,8 @@
- 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
---------
pyramid/configuration.py
@@ -45,8 +45,15 @@
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
@@ -83,14 +90,18 @@
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`
pyramid/testing.py
@@ -741,9 +741,16 @@
            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
pyramid/tests/test_chameleon_text.py
@@ -51,6 +51,7 @@
        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
@@ -58,12 +59,13 @@
        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()
@@ -72,7 +74,7 @@
        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()
@@ -81,7 +83,7 @@
        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()
@@ -91,7 +93,7 @@
        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()
@@ -101,7 +103,7 @@
        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()
@@ -111,7 +113,7 @@
        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()
@@ -120,14 +122,14 @@
        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()
@@ -136,7 +138,7 @@
        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()
@@ -150,7 +152,7 @@
        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)
@@ -162,7 +164,7 @@
        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)
@@ -172,7 +174,7 @@
        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):
@@ -188,7 +190,7 @@
        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:
@@ -206,7 +208,7 @@
        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:
pyramid/tests/test_chameleon_zpt.py
@@ -44,6 +44,7 @@
        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
@@ -51,12 +52,13 @@
        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()
@@ -66,7 +68,7 @@
        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()
@@ -75,7 +77,7 @@
        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()
@@ -84,7 +86,7 @@
        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()
@@ -94,7 +96,7 @@
        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()
@@ -104,7 +106,7 @@
        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()
@@ -114,7 +116,7 @@
        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()
@@ -124,14 +126,14 @@
        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()
@@ -147,7 +149,7 @@
        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)
@@ -160,7 +162,7 @@
        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)
@@ -171,7 +173,7 @@
        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):
@@ -187,7 +189,7 @@
        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:
@@ -205,7 +207,7 @@
        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:
pyramid/tests/test_configuration.py
@@ -2,6 +2,11 @@
from pyramid import testing
try:
    import __pypy__
except:
    __pypy__ = None
class ConfiguratorTests(unittest.TestCase):
    def _makeOne(self, *arg, **kw):
        from pyramid.configuration import Configurator
@@ -90,8 +95,9 @@
        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'))
pyramid/tests/test_renderers.py
@@ -138,7 +138,7 @@
        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, {})