From 381de3382eaba99c3cdb57508bd4b2de5b6098f6 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Tue, 23 Aug 2011 02:44:44 -0400 Subject: Reduce failures to a single integration test. --- pyramid/config/routes.py | 29 +++++++++--------- pyramid/config/views.py | 3 +- pyramid/tests/ccbugapp/__init__.py | 16 +++++++--- pyramid/tests/ccbugapp/views.py | 10 ------- pyramid/tests/test_config/test_init.py | 54 ++++------------------------------ 5 files changed, 35 insertions(+), 77 deletions(-) delete mode 100644 pyramid/tests/ccbugapp/views.py 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) -- cgit v1.2.3