summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2010-11-18 22:26:41 -0500
committerChris McDonough <chrism@plope.com>2010-11-18 22:26:41 -0500
commit29b7aabcb7b50024ead27cb5ff9cb47757ffe462 (patch)
tree8af4d570fc7f361a9be59882ca3ac59a6bdf3689
parent47c9f884f72e6902c3b789ab9c4c08a6fabcfc6a (diff)
downloadpyramid-29b7aabcb7b50024ead27cb5ff9cb47757ffe462.tar.gz
pyramid-29b7aabcb7b50024ead27cb5ff9cb47757ffe462.tar.bz2
pyramid-29b7aabcb7b50024ead27cb5ff9cb47757ffe462.zip
- Make test suite pass on PyPy (Chameleon doesn't work).
-rw-r--r--CHANGES.txt2
-rw-r--r--pyramid/configuration.py19
-rw-r--r--pyramid/testing.py7
-rw-r--r--pyramid/tests/test_chameleon_text.py30
-rw-r--r--pyramid/tests/test_chameleon_zpt.py30
-rw-r--r--pyramid/tests/test_configuration.py10
-rw-r--r--pyramid/tests/test_renderers.py2
7 files changed, 65 insertions, 35 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index dbd774086..c1e89734d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -22,6 +22,8 @@ Features
- 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
---------
diff --git a/pyramid/configuration.py b/pyramid/configuration.py
index 543f8f82d..d861292b6 100644
--- a/pyramid/configuration.py
+++ b/pyramid/configuration.py
@@ -45,8 +45,15 @@ from pyramid.interfaces import ITraverser
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 @@ MAX_ORDER = 1 << 30
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`
diff --git a/pyramid/testing.py b/pyramid/testing.py
index c6c999147..4acede879 100644
--- a/pyramid/testing.py
+++ b/pyramid/testing.py
@@ -741,9 +741,16 @@ def skip_on(*platforms):
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
diff --git a/pyramid/tests/test_chameleon_text.py b/pyramid/tests/test_chameleon_text.py
index 654cfdf3b..9486bbc88 100644
--- a/pyramid/tests/test_chameleon_text.py
+++ b/pyramid/tests/test_chameleon_text.py
@@ -51,6 +51,7 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class TextTemplateRendererTests(Base, unittest.TestCase):
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 @@ class RenderTemplateTests(Base, unittest.TestCase):
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 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase):
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 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase):
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 @@ class GetRendererTests(Base, unittest.TestCase):
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 @@ class GetTemplateTests(Base, unittest.TestCase):
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:
diff --git a/pyramid/tests/test_chameleon_zpt.py b/pyramid/tests/test_chameleon_zpt.py
index 786e96129..802f4460f 100644
--- a/pyramid/tests/test_chameleon_zpt.py
+++ b/pyramid/tests/test_chameleon_zpt.py
@@ -44,6 +44,7 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class ZPTTemplateRendererTests(Base, unittest.TestCase):
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 @@ class RenderTemplateTests(Base, unittest.TestCase):
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 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase):
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 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase):
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 @@ class GetRendererTests(Base, unittest.TestCase):
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 @@ class GetTemplateTests(Base, unittest.TestCase):
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:
diff --git a/pyramid/tests/test_configuration.py b/pyramid/tests/test_configuration.py
index 0d8905f7c..a8ea63f54 100644
--- a/pyramid/tests/test_configuration.py
+++ b/pyramid/tests/test_configuration.py
@@ -2,6 +2,11 @@ import unittest
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 @@ class ConfiguratorTests(unittest.TestCase):
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'))
diff --git a/pyramid/tests/test_renderers.py b/pyramid/tests/test_renderers.py
index 102a23f92..bd6a0825d 100644
--- a/pyramid/tests/test_renderers.py
+++ b/pyramid/tests/test_renderers.py
@@ -138,7 +138,7 @@ class TestTemplateRendererFactory(unittest.TestCase):
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, {})