diff options
| author | Chris McDonough <chrism@plope.com> | 2010-11-18 22:26:41 -0500 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2010-11-18 22:26:41 -0500 |
| commit | 29b7aabcb7b50024ead27cb5ff9cb47757ffe462 (patch) | |
| tree | 8af4d570fc7f361a9be59882ca3ac59a6bdf3689 | |
| parent | 47c9f884f72e6902c3b789ab9c4c08a6fabcfc6a (diff) | |
| download | pyramid-29b7aabcb7b50024ead27cb5ff9cb47757ffe462.tar.gz pyramid-29b7aabcb7b50024ead27cb5ff9cb47757ffe462.tar.bz2 pyramid-29b7aabcb7b50024ead27cb5ff9cb47757ffe462.zip | |
- Make test suite pass on PyPy (Chameleon doesn't work).
| -rw-r--r-- | CHANGES.txt | 2 | ||||
| -rw-r--r-- | pyramid/configuration.py | 19 | ||||
| -rw-r--r-- | pyramid/testing.py | 7 | ||||
| -rw-r--r-- | pyramid/tests/test_chameleon_text.py | 30 | ||||
| -rw-r--r-- | pyramid/tests/test_chameleon_zpt.py | 30 | ||||
| -rw-r--r-- | pyramid/tests/test_configuration.py | 10 | ||||
| -rw-r--r-- | pyramid/tests/test_renderers.py | 2 |
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, {}) |
