From 0dc26efaddf70c02cac7e84245666340f13abd29 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Fri, 16 Oct 2009 00:47:13 +0000 Subject: - Add ``zcml_configure`` to ``repoze.bfg.testing`` module API. This function populates a component registry from a ZCML file for testing purposes. --- repoze/bfg/configuration.py | 18 +++++++++++++++++- repoze/bfg/testing.py | 2 ++ repoze/bfg/tests/test_testing.py | 2 ++ repoze/bfg/zcml.py | 12 +----------- 4 files changed, 22 insertions(+), 12 deletions(-) (limited to 'repoze') diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py index 629a58047..7ea74853c 100644 --- a/repoze/bfg/configuration.py +++ b/repoze/bfg/configuration.py @@ -4,6 +4,9 @@ import threading import zope.component +from zope.configuration import xmlconfig +from zope.configuration.config import ConfigurationMachine + from zope.component import getGlobalSiteManager from zope.component import getSiteManager @@ -23,7 +26,6 @@ from repoze.bfg.settings import get_options from repoze.bfg.threadlocal import get_current_registry from repoze.bfg.threadlocal import manager from repoze.bfg.urldispatch import RoutesRootFactory -from repoze.bfg.zcml import zcml_configure def make_registry(root_factory, package=None, filename='configure.zcml', authentication_policy=None, authorization_policy=None, @@ -132,3 +134,17 @@ class DefaultRootFactory: # factory") in BFG 0.9.X and before self.__dict__.update(environ['bfg.routes.matchdict']) +def zcml_configure(name, package): + """ Given a ZCML filename as ``name`` and a Python package as + ``package`` which the filename should be relative to, load the + ZCML into the current ZCML registry. + + .. note:: This feature is new as of :mod:`repoze.bfg` 1.1. + """ + context = ConfigurationMachine() + xmlconfig.registerCommonDirectives(context) + context.package = package + xmlconfig.include(context, name, package) + context.execute_actions(clear=False) + return context.actions + diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py index 60a52aa66..50f19cbf7 100644 --- a/repoze/bfg/testing.py +++ b/repoze/bfg/testing.py @@ -8,6 +8,7 @@ from zope.interface import Interface from repoze.bfg.interfaces import IRequest +from repoze.bfg.configuration import zcml_configure # API import alias from repoze.bfg.registry import Registry _marker = object() @@ -457,6 +458,7 @@ class DummyRequest: self.root = None self.virtual_root = None self.marshalled = params # repoze.monty + self.registry = getSiteManager() self.__dict__.update(kw) def setUp(): diff --git a/repoze/bfg/tests/test_testing.py b/repoze/bfg/tests/test_testing.py index 7e468725a..9eab891e3 100644 --- a/repoze/bfg/tests/test_testing.py +++ b/repoze/bfg/tests/test_testing.py @@ -406,6 +406,7 @@ class TestDummyRequest(unittest.TestCase): self.assertEqual(request.environ['PATH_INFO'], '/foo') def test_defaults(self): + from zope.component import getSiteManager request = self._makeOne() self.assertEqual(request.method, 'GET') self.assertEqual(request.application_url, 'http://example.com') @@ -430,6 +431,7 @@ class TestDummyRequest(unittest.TestCase): self.assertEqual(request.root, None) self.assertEqual(request.virtual_root, None) self.assertEqual(request.virtual_root_path, ()) + self.assertEqual(request.registry, getSiteManager()) def test_params_explicit(self): request = self._makeOne(params = {'foo':'bar'}) diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py index b0f5a2595..a4c18dda9 100644 --- a/repoze/bfg/zcml.py +++ b/repoze/bfg/zcml.py @@ -1,9 +1,6 @@ import re import sys -from zope.configuration import xmlconfig -import zope.configuration.config - from zope.component import getSiteManager from zope.component import getUtility from zope.component import queryUtility @@ -39,6 +36,7 @@ from repoze.bfg.authentication import RepozeWho1AuthenticationPolicy from repoze.bfg.authentication import RemoteUserAuthenticationPolicy from repoze.bfg.authentication import AuthTktAuthenticationPolicy from repoze.bfg.authorization import ACLAuthorizationPolicy +from repoze.bfg.configuration import zcml_configure from repoze.bfg.path import package_name from repoze.bfg.request import create_route_request_factory from repoze.bfg.resource import PackageOverrides @@ -730,13 +728,5 @@ class Uncacheable(object): """ Include in discriminators of actions which are not cacheable; this class only exists for backwards compatibility (<0.8.1)""" -def zcml_configure(name, package): - context = zope.configuration.config.ConfigurationMachine() - xmlconfig.registerCommonDirectives(context) - context.package = package - xmlconfig.include(context, name, package) - context.execute_actions(clear=False) - return context.actions - file_configure = zcml_configure # backwards compat (>0.8.1) -- cgit v1.2.3