summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-08-23 02:44:44 -0400
committerChris McDonough <chrism@plope.com>2011-08-23 02:44:44 -0400
commit381de3382eaba99c3cdb57508bd4b2de5b6098f6 (patch)
tree7a7cb5580c22ded8c7024a8bf1888008e82673d0
parentb9f2f5b6ef8203d656e2f3447a31151ce6bf3ede (diff)
downloadpyramid-381de3382eaba99c3cdb57508bd4b2de5b6098f6.tar.gz
pyramid-381de3382eaba99c3cdb57508bd4b2de5b6098f6.tar.bz2
pyramid-381de3382eaba99c3cdb57508bd4b2de5b6098f6.zip
Reduce failures to a single integration test.
-rw-r--r--pyramid/config/routes.py29
-rw-r--r--pyramid/config/views.py3
-rw-r--r--pyramid/tests/ccbugapp/__init__.py16
-rw-r--r--pyramid/tests/ccbugapp/views.py10
-rw-r--r--pyramid/tests/test_config/test_init.py54
5 files changed, 35 insertions, 77 deletions
diff --git a/pyramid/config/routes.py b/pyramid/config/routes.py
index 94d3e2427..f92d4bd75 100644
--- a/pyramid/config/routes.py
+++ b/pyramid/config/routes.py
@@ -345,18 +345,6 @@ class RoutesConfiguratorMixin(object):
custom=custom_predicates
)
- # deprecated adding views from add_route
- if any([view, view_context, view_permission, view_renderer,
- view_for, for_, permission, renderer, view_attr]):
- self._add_view_from_route(
- route_name=name,
- view=view,
- permission=view_permission or permission,
- context=view_context or view_for or for_,
- renderer=view_renderer or renderer,
- attr=view_attr,
- )
-
factory = self.maybe_dotted(factory)
if pattern is None:
pattern = path
@@ -368,7 +356,7 @@ class RoutesConfiguratorMixin(object):
mapper = self.get_routes_mapper()
- def register():
+ def register_route():
request_iface = self.registry.queryUtility(IRouteRequest, name=name)
if request_iface is None:
if use_global_views:
@@ -386,7 +374,20 @@ class RoutesConfiguratorMixin(object):
# route actions must run before view registration actions; all
# IRouteRequest interfaces must be registered before we begin to
# process view registrations
- self.action(('route', name), register, order=PHASE2_CONFIG)
+ self.action(('route', name), register_route, order=PHASE2_CONFIG)
+
+ # deprecated adding views from add_route; must come after
+ # route registration for purposes of autocommit ordering
+ if any([view, view_context, view_permission, view_renderer,
+ view_for, for_, permission, renderer, view_attr]):
+ self._add_view_from_route(
+ route_name=name,
+ view=view,
+ permission=view_permission or permission,
+ context=view_context or view_for or for_,
+ renderer=view_renderer or renderer,
+ attr=view_attr,
+ )
def get_routes_mapper(self):
""" Return the :term:`routes mapper` object associated with
diff --git a/pyramid/config/views.py b/pyramid/config/views.py
index c7ef52ee8..83d702db3 100644
--- a/pyramid/config/views.py
+++ b/pyramid/config/views.py
@@ -896,7 +896,8 @@ class ViewsConfiguratorMixin(object):
request_iface = self.registry.queryUtility(IRouteRequest,
name=route_name)
if request_iface is None:
- # route configuration should have already happened
+ # route configuration should have already happened in
+ # phase 2
raise ConfigurationError(
'No route named %s found for view registration' %
route_name)
diff --git a/pyramid/tests/ccbugapp/__init__.py b/pyramid/tests/ccbugapp/__init__.py
index ad6387a75..afe21d4e0 100644
--- a/pyramid/tests/ccbugapp/__init__.py
+++ b/pyramid/tests/ccbugapp/__init__.py
@@ -1,8 +1,16 @@
+from webob import Response
+
+def rdf_view(request):
+ """ """
+ return Response('rdf')
+
+def juri_view(request):
+ """ """
+ return Response('juri')
+
def includeme(config):
config.add_route('rdf', 'licenses/:license_code/:license_version/rdf')
config.add_route('juri',
'licenses/:license_code/:license_version/:jurisdiction')
- config.add_view('.views.rdf_view', route_name='rdf')
- config.add_view('.views.juri_view', route_name='juri')
-
-
+ config.add_view(rdf_view, route_name='rdf')
+ config.add_view(juri_view, route_name='juri')
diff --git a/pyramid/tests/ccbugapp/views.py b/pyramid/tests/ccbugapp/views.py
deleted file mode 100644
index 4a6939ac2..000000000
--- a/pyramid/tests/ccbugapp/views.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from webob import Response
-
-def rdf_view(request):
- """ """
- return Response('rdf')
-
-def juri_view(request):
- """ """
- return Response('juri')
-
diff --git a/pyramid/tests/test_config/test_init.py b/pyramid/tests/test_config/test_init.py
index 74a5585f6..fb355a0af 100644
--- a/pyramid/tests/test_config/test_init.py
+++ b/pyramid/tests/test_config/test_init.py
@@ -103,6 +103,7 @@ class ConfiguratorTests(unittest.TestCase):
this_pkg = sys.modules['pyramid.tests.test_config']
self.assertTrue(config.registry.getUtility(ISettings))
self.assertEqual(config.package, this_pkg)
+ config.commit()
self.assertTrue(config.registry.getUtility(IRendererFactory, 'json'))
self.assertTrue(config.registry.getUtility(IRendererFactory, 'string'))
if not __pypy__:
@@ -185,6 +186,7 @@ class ConfiguratorTests(unittest.TestCase):
from pyramid.interfaces import IAuthenticationPolicy
policy = object()
config = self._makeOne(authentication_policy=policy)
+ config.commit()
result = config.registry.getUtility(IAuthenticationPolicy)
self.assertEqual(policy, result)
@@ -205,6 +207,7 @@ class ConfiguratorTests(unittest.TestCase):
from pyramid.interfaces import IRendererFactory
renderer = object()
config = self._makeOne(renderers=[('yeah', renderer)])
+ config.commit()
self.assertEqual(config.registry.getUtility(IRendererFactory, 'yeah'),
renderer)
@@ -225,6 +228,7 @@ class ConfiguratorTests(unittest.TestCase):
from pyramid.interfaces import IViewMapperFactory
mapper = object()
config = self._makeOne(default_view_mapper=mapper)
+ config.commit()
self.assertEqual(config.registry.getUtility(IViewMapperFactory),
mapper)
@@ -1919,71 +1923,25 @@ pyramid.tests.test_config.dummy_include2""",
def test_add_view_with_route_name(self):
from pyramid.renderers import null_renderer
- from zope.component import ComponentLookupError
view = lambda *arg: 'OK'
config = self._makeOne(autocommit=True)
- config.add_view(view=view, route_name='foo', renderer=null_renderer)
- self.assertEqual(len(config.registry.deferred_route_views), 1)
- infos = config.registry.deferred_route_views['foo']
- self.assertEqual(len(infos), 1)
- info = infos[0]
- self.assertEqual(info['route_name'], 'foo')
- self.assertEqual(info['view'], view)
- self.assertRaises(ComponentLookupError,
- self._getRouteRequestIface, config, 'foo')
- wrapper = self._getViewCallable(config, None)
- self.assertEqual(wrapper, None)
config.add_route('foo', '/a/b')
+ config.add_view(view=view, route_name='foo', renderer=null_renderer)
request_iface = self._getRouteRequestIface(config, 'foo')
self.assertNotEqual(request_iface, None)
wrapper = self._getViewCallable(config, request_iface=request_iface)
self.assertNotEqual(wrapper, None)
self.assertEqual(wrapper(None, None), 'OK')
- def test_add_view_with_route_name_deferred_views_already_exist(self):
- view = lambda *arg: 'OK'
- config = self._makeOne(autocommit=True)
- config.registry.deferred_route_views = {'bar':[]}
- config.add_view(view=view, route_name='foo')
- self.assertEqual(len(config.registry.deferred_route_views), 2)
- self.assertEqual(config.registry.deferred_route_views['bar'], [])
- infos = config.registry.deferred_route_views['foo']
- self.assertEqual(len(infos), 1)
-
- def test_deferred_route_views_retains_custom_predicates(self):
- view = lambda *arg: 'OK'
- config = self._makeOne(autocommit=True)
- config.add_view(view=view, route_name='foo', custom_predicates=('123',))
- self.assertEqual(len(config.registry.deferred_route_views), 1)
- infos = config.registry.deferred_route_views['foo']
- self.assertEqual(len(infos), 1)
- info = infos[0]
- self.assertEqual(info['route_name'], 'foo')
- self.assertEqual(info['custom_predicates'], ('123',))
-
def test_add_view_with_route_name_exception(self):
from pyramid.renderers import null_renderer
from zope.interface import implementedBy
- from zope.component import ComponentLookupError
view = lambda *arg: 'OK'
config = self._makeOne(autocommit=True)
+ config.add_route('foo', '/a/b')
config.add_view(view=view, route_name='foo', context=RuntimeError,
renderer=null_renderer)
- self.assertEqual(len(config.registry.deferred_route_views), 1)
- infos = config.registry.deferred_route_views['foo']
- self.assertEqual(len(infos), 1)
- info = infos[0]
- self.assertEqual(info['route_name'], 'foo')
- self.assertEqual(info['view'], view)
- self.assertRaises(ComponentLookupError,
- self._getRouteRequestIface, config, 'foo')
- wrapper_exc_view = self._getViewCallable(
- config, ctx_iface=implementedBy(RuntimeError),
- exception_view=True)
- self.assertEqual(wrapper_exc_view, None)
- config.add_route('foo', '/a/b')
request_iface = self._getRouteRequestIface(config, 'foo')
- self.assertNotEqual(request_iface, None)
wrapper_exc_view = self._getViewCallable(
config, ctx_iface=implementedBy(RuntimeError),
request_iface=request_iface, exception_view=True)